liurunyu
2024-02-22 d919e26796ec5a6f78fc0b665840207f185f1274
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/wallet/WalletSv.java
@@ -1,13 +1,29 @@
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.SeWalletRechargeHistoryMapper;
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.SeWalletRechargeHistory;
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
@@ -26,54 +42,203 @@
    private SeWalletRechargeMapper seWalletRechargeMapper;
    @Autowired
    private SeWalletRechargeHistoryMapper seWalletRechargeHistoryMapper;
    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 Integer add(SeWallet po) {
        return seWalletMapper.insert(po);
    public Long addRecharge(SeWalletRecharge po) {
        seWalletRechargeMapper.insert(po);
        return po.getId();
    }
    /**
     * 根据编号从钱包表中获取该钱包余额
     * @param id
     * 电子钱包消费
     * @param po
     * @return
     */
    public Float getMoneyById(Long id) {
        SeWallet po = seWalletMapper.selectByPrimaryKey(id);
        return po.getMoney();
    public Long addConsume(SeConsume po) {
        seConsumeMapper.insert(po);
        return po.getId();
    }
    /**
     * 根据钱包编号修改钱包余额
     * @param id 钱包编号(主键)
     * @param money 钱包余额
     * @return 修改记录数量
     */
    public Integer updateMoneyById(Long id, Float money) {
        SeWallet po = seWalletMapper.selectByPrimaryKey(id);
        po.setMoney(money);
        return seWalletMapper.updateByPrimaryKey(po);
    }
    /**
     * 根据id删除充值记录
     * @param id
     * 添加退款申请
     * @param po
     * @return
     */
    public Integer deleteWallerRechargeById(Long id) {
        return seWalletMapper.deleteByPrimaryKey(id);
    public Long addRefund(SeRefund po) {
        seRefundMapper.insert(po);
        return po.getId();
    }
    /**
     * 将充值记录添加到充值历史表
     * @param po 充值历史实体
     * 根据钱包ID获取待审核的退款申请对象
     * @param walletId
     * @return
     */
    public Integer addWallerRechargeHistory(SeWalletRechargeHistory po) {
        return seWalletRechargeHistoryMapper.insert(po);
    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 ;
    }
}