| 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<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 ; | 
|     } | 
| } |