package com.dy.pipIrrSell.wallet;
|
|
import com.dy.common.webUtil.QueryResultVo;
|
import com.dy.pipIrrGlobal.daoSe.SeConsumeMapper;
|
import com.dy.pipIrrGlobal.daoSe.SeRefundMapper;
|
import com.dy.pipIrrGlobal.daoSe.SeWalletMapper;
|
import com.dy.pipIrrGlobal.daoSe.SeWalletRechargeMapper;
|
import com.dy.pipIrrGlobal.pojoSe.SeConsume;
|
import com.dy.pipIrrGlobal.pojoSe.SeRefund;
|
import com.dy.pipIrrGlobal.pojoSe.SeWallet;
|
import com.dy.pipIrrGlobal.pojoSe.SeWalletRecharge;
|
import com.dy.pipIrrGlobal.voSe.VoWallet;
|
import com.dy.pipIrrGlobal.voSe.VoWalletConsume;
|
import com.dy.pipIrrGlobal.voSe.VoWalletRecharge;
|
import com.dy.pipIrrGlobal.voSe.VoWalletRefund;
|
import com.dy.pipIrrSell.wallet.qo.QueryVo;
|
import com.dy.pipIrrSell.wallet.qo.QoWalletRecharge;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.dubbo.common.utils.PojoUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Optional;
|
|
/**
|
* @author ZhuBaoMin
|
* @date 2023/12/11 16:36
|
* @LastEditTime 2023/12/11 16:36
|
* @Description
|
*/
|
|
@Slf4j
|
@Service
|
public class WalletSv {
|
@Autowired
|
private SeWalletMapper seWalletMapper;
|
|
@Autowired
|
private SeWalletRechargeMapper seWalletRechargeMapper;
|
|
@Autowired
|
private SeConsumeMapper seConsumeMapper;
|
|
@Autowired
|
private SeRefundMapper seRefundMapper;
|
|
/**
|
* 根据农户ID获取电子钱包对象
|
* @param clientId
|
* @return
|
*/
|
public SeWallet getWalletByClientId(Long clientId) {
|
return seWalletMapper.getWalletByClientId(clientId);
|
}
|
|
/**
|
* 注册电子钱包账号
|
* @param po 电子钱包实体类
|
* @return 电子钱包ID
|
*/
|
public Long addWallet(SeWallet po) {
|
seWalletMapper.insert(po);
|
return po.getId();
|
}
|
|
/**
|
* 电子钱包充值
|
* @param po
|
* @return
|
*/
|
public Long addRecharge(SeWalletRecharge po) {
|
seWalletRechargeMapper.insert(po);
|
return po.getId();
|
}
|
|
/**
|
* 电子钱包消费
|
* @param po
|
* @return
|
*/
|
public Long addConsume(SeConsume po) {
|
seConsumeMapper.insert(po);
|
return po.getId();
|
}
|
|
/**
|
* 添加退款申请
|
* @param po
|
* @return
|
*/
|
public Long addRefund(SeRefund po) {
|
seRefundMapper.insert(po);
|
return po.getId();
|
}
|
|
/**
|
* 根据钱包ID获取待审核的退款申请对象
|
* @param walletId
|
* @return
|
*/
|
public SeRefund getRefundByWallerId(Long walletId) {
|
return seRefundMapper.getRefundByWallerId(walletId);
|
}
|
|
/**
|
* 审核退款申请
|
* @param po
|
* @return
|
*/
|
public Integer auditRefund(SeRefund po) {
|
return seRefundMapper.updateByPrimaryKeySelective(po);
|
}
|
|
/**
|
* 修改电子钱包
|
* 充值、消费、申请退款、审核退款时需要修改电子钱包的:余额、最后操作、最后操作时间
|
* @param po
|
* @return
|
*/
|
public Integer updateWallet(SeWallet po) {
|
return seWalletMapper.updateByPrimaryKeySelective(po);
|
}
|
|
|
/**
|
* 根据农户姓名获取电子钱包账户记录
|
* @param queryVo
|
* @return
|
*/
|
public QueryResultVo<List<VoWallet>> getWallets(QueryVo queryVo) {
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
|
|
Long itemTotal = seWalletMapper.getRecordCount(params);
|
|
QueryResultVo<List<VoWallet>> rsVo = new QueryResultVo<>() ;
|
rsVo.pageSize = queryVo.pageSize ;
|
rsVo.pageCurr = queryVo.pageCurr ;
|
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = seWalletMapper.getWallets(params);
|
return rsVo ;
|
}
|
|
/**
|
* 根据指定条件获取电子钱包充值记录
|
* @param queryVo
|
* @return
|
*/
|
public QueryResultVo<List<VoWalletRecharge>> getWalletRecharges(QoWalletRecharge queryVo) {
|
//完善查询充值记录的起止时间
|
String timeStart = queryVo.getTimeStart();
|
String timeStop = queryVo.getTimeStop();
|
if(timeStart != null) {
|
timeStart = timeStart + " 00:00:00";
|
queryVo.setTimeStart(timeStart);
|
}
|
if(timeStop != null) {
|
timeStop = timeStop + " 23:59:59";
|
queryVo.setTimeStop(timeStop);
|
}
|
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
|
|
Long itemTotal = seWalletRechargeMapper.getRecordCount(params);
|
|
QueryResultVo<List<VoWalletRecharge>> rsVo = new QueryResultVo<>() ;
|
rsVo.pageSize = queryVo.pageSize ;
|
rsVo.pageCurr = queryVo.pageCurr ;
|
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = seWalletRechargeMapper.getWalletRecharges(params);
|
return rsVo ;
|
}
|
|
/**
|
* 根据农户ID获取电子钱包消费记录
|
* @param queryVo
|
* @return
|
*/
|
public Map getWalletConsumes(QueryVo queryVo) {
|
// 获取电子钱包消费汇总信息
|
String clientName = "";
|
String clientNum = "";
|
Double money = 0.0;
|
Double totalConsume = 0.0;
|
Long clientId = Optional.ofNullable(queryVo.getClientId()).orElse(0L);
|
Map map_consumeSum = Optional.ofNullable(seConsumeMapper.getWalletConsumeSum(clientId)).orElse(new HashMap());
|
if(map_consumeSum.size() > 0) {
|
clientName = map_consumeSum.get("clientName").toString();
|
clientNum = map_consumeSum.get("clientNum").toString();
|
money = Double.parseDouble(map_consumeSum.get("money").toString());
|
totalConsume = Double.parseDouble(map_consumeSum.get("totalConsume").toString());
|
}
|
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
|
Long itemTotal = seConsumeMapper.getRecordCount(params);
|
|
QueryResultVo<List<VoWalletConsume>> rsVo = new QueryResultVo<>() ;
|
rsVo.pageSize = queryVo.pageSize ;
|
rsVo.pageCurr = queryVo.pageCurr ;
|
|
rsVo.calculateAndSet(itemTotal, params);
|
List<VoWalletConsume> list = seConsumeMapper.getWalletConsumes(params);
|
|
|
Map map_record = new HashMap();
|
map_record.put("itemTotal", rsVo.itemTotal);
|
map_record.put("pageCurr", rsVo.pageCurr);
|
map_record.put("pageSize", rsVo.pageSize);
|
map_record.put("pageTotal", rsVo.pageTotal);
|
map_record.put("list", list);
|
|
Map map_result = new HashMap();
|
map_result.put("clientName", clientName);
|
map_result.put("clientNum", clientNum);
|
map_result.put("money", money);
|
map_result.put("totalConsume", totalConsume);
|
map_result.put("records", map_record);
|
|
return map_result;
|
}
|
|
/**
|
* 根据指定条件获取电子钱包退款记录
|
* @param queryVo
|
* @return
|
*/
|
public QueryResultVo<List<VoWalletRefund>> getWalletRefunds(QueryVo queryVo) {
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
|
|
Long itemTotal = seRefundMapper.getRecordCount(params);
|
|
QueryResultVo<List<VoWalletRefund>> rsVo = new QueryResultVo<>() ;
|
rsVo.pageSize = queryVo.pageSize ;
|
rsVo.pageCurr = queryVo.pageCurr ;
|
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = seRefundMapper.getWalletRefunds(params);
|
return rsVo ;
|
}
|
}
|