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