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.QoWalletRecharge; import com.dy.pipIrrSell.wallet.qo.QueryVo; 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> getWallets(QueryVo queryVo) { Map params = (Map) PojoUtils.generalize(queryVo); Long itemTotal = seWalletMapper.getRecordCount(params); QueryResultVo> 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> 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 params = (Map) PojoUtils.generalize(queryVo); Long itemTotal = seWalletRechargeMapper.getRecordCount(params); QueryResultVo> 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 params = (Map) PojoUtils.generalize(queryVo); Long itemTotal = seConsumeMapper.getRecordCount(params); QueryResultVo> rsVo = new QueryResultVo<>() ; rsVo.pageSize = queryVo.pageSize ; rsVo.pageCurr = queryVo.pageCurr ; rsVo.calculateAndSet(itemTotal, params); List 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> getWalletRefunds(QueryVo queryVo) { Map params = (Map) PojoUtils.generalize(queryVo); Long itemTotal = seRefundMapper.getRecordCount(params); QueryResultVo> rsVo = new QueryResultVo<>() ; rsVo.pageSize = queryVo.pageSize ; rsVo.pageCurr = queryVo.pageCurr ; rsVo.calculateAndSet(itemTotal, params); rsVo.obj = seRefundMapper.getWalletRefunds(params); return rsVo ; } }