zhubaomin
2024-08-21 7978f5dcd6a71795431e38d5387c4a52fa5f1b38
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/virtualCard/VirtualCardSv.java
@@ -2,20 +2,30 @@
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
import com.dy.pipIrrGlobal.daoSe.SeVcRechargeMapper;
import com.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper;
import com.dy.common.webUtil.QueryResultVo;
import com.dy.pipIrrGlobal.daoSe.*;
import com.dy.pipIrrGlobal.pojoSe.SeVcRecharge;
import com.dy.pipIrrGlobal.pojoSe.SeVcRefund;
import com.dy.pipIrrGlobal.pojoSe.SeVcRefundItem;
import com.dy.pipIrrGlobal.pojoSe.SeVirtualCard;
import com.dy.pipIrrGlobal.voSe.VoOrders;
import com.dy.pipIrrGlobal.voSe.VoVcRecharge;
import com.dy.pipIrrGlobal.voSe.VoVirtualCard;
import com.dy.pipIrrSell.result.SellResultCode;
import com.dy.pipIrrSell.virtualCard.dto.DtoVcRecharge;
import com.dy.pipIrrSell.virtualCard.dto.DtoVirtualCard;
import com.dy.pipIrrSell.virtualCard.enums.LastOperateENUM;
import com.dy.pipIrrSell.virtualCard.enums.OrderStateENUM;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.utils.PojoUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * @author ZhuBaoMin
@@ -33,6 +43,44 @@
    @Autowired
    private SeVcRechargeMapper seVcRechargeMapper;
    @Autowired
    private SeVcRefundMapper seVcRefundMapper;
    @Autowired
    private SeVcRefundItemMapper seVcRefundItemMapper;
    @Autowired
    private SeClientMapper seClientMapper;
    @Value("${vc.alarmValue}")
    private Integer alarmValue;
    /**
     * 根据农户ID获取5级行政区划代码,注册虚拟卡使用
     * @param clientId 农户ID
     * @return 5级行政区划代码
     */
    public Long getAreaCodeById(Long clientId) {
        return seClientMapper.getAreaCodeById(clientId);
    }
    /**
     * 获取农户全部虚拟卡
     * @return
     */
    public List<VoVirtualCard> getVCs(Long clientId) {
        return seVirtualCardMapper.getVCs(alarmValue, clientId);
    }
    /**
     * 根据虚拟卡ID获取虚拟卡对象
     * @param vcId
     * @return
     */
    public VoVirtualCard getVcById(Long vcId) {
        return seVirtualCardMapper.getVcById(vcId);
    }
    /**
     * 注册虚拟卡
     * @param po
@@ -42,6 +90,24 @@
        seVirtualCardMapper.insert(po);
        return po.getId();
    }
    /**
     * 根据行政区划串模糊查询虚拟卡编号,注册虚拟卡使用
     * @param areaCode
     * @return
     */
    String getVcCardNumOfMax(String areaCode) {
        return seVirtualCardMapper.getVcCardNumOfMax(areaCode);
    }
    /** 废弃
     * 验证农户是否拥有指定名称的虚拟卡
     * @param po
     * @return
     */
    //public Integer getRecordCountByName(DtoRegist po) {
    //    return seVirtualCardMapper.getRecordCountByName(po.getClientId(), po.getVcName());
    //}
    /**
     * 修改虚拟卡
@@ -61,6 +127,7 @@
    public SeVirtualCard selectVirtuCardById(Long virtualId) {
        return seVirtualCardMapper.selectByPrimaryKey(virtualId);
    }
    /**
     * 添加虚拟卡充值记录
     * JSAPI下单后生成部分充值记录
@@ -94,6 +161,15 @@
            return BaseResponseUtils.buildFail(SellResultCode.RECHARGE_FAIL.getMessage());
        }
        return BaseResponseUtils.buildSuccess(true) ;
    }
    /**
     * 根据订单号获取虚拟卡充值对象
     * @param orderNumber
     * @return
     */
    public SeVcRecharge getVCRechargeByorderNumber(String orderNumber) {
        return seVcRechargeMapper.getVCRechargeByorderNumber(orderNumber);
    }
    /**
@@ -139,7 +215,7 @@
    }
    /**
     * 修改虚拟卡充值记录
     * 修改虚拟卡充值记录(废弃)
     * 微信小程序支付通知后修改:余额、充值后余额、充值完成时间
     * @param po
     * @return
@@ -147,4 +223,134 @@
    public Integer updateVCRecharge(SeVcRecharge po) {
        return seVcRechargeMapper.updateByPrimaryKeySelective(po);
    }
    /**
     * 根据虚拟卡号获取订单列表
     * @param virtualId
     * @return
     */
    public List<VoOrders> selectOrders(Long virtualId) {
        List<VoOrders> rsVo = seVcRechargeMapper.getOrders(virtualId);
        return rsVo ;
    }
    /**
     * 根据退款ID获取退款对象
     * @param refundId
     * @return
     */
    public SeVcRefund selectRefundByRefundId(Long refundId) {
        return seVcRefundMapper.selectByPrimaryKey(refundId);
    }
    /**
     * 添加退款申请
     * @param po
     * @return
     */
    public Long addRefund(SeVcRefund po) {
        seVcRefundMapper.insert(po);
        return po.getId();
    }
    /**
     * 修改退款记录
     * @param po
     * @return
     */
    public Integer updateRefund(SeVcRefund po) {
        return seVcRefundMapper.updateByPrimaryKeySelective(po);
    }
    /**
     * 根据订单号获取其各笔退款金额
     * @param orderNumber
     * @return
     */
    public List<Integer> selectRefundAmount(String orderNumber) {
        List<Integer> rsVo = seVcRefundMapper.getRefundAmount(orderNumber);
        return rsVo;
    }
    /**
     * 添加退款分项
     * @param po
     * @return
     */
    public Long addRefundItem(SeVcRefundItem po) {
        seVcRefundItemMapper.insert(po);
        return po.getRefundId();
    }
    /**
     * 编辑退款分项
     * @param po
     * @return
     */
    public Integer updateRefundItem(SeVcRefundItem po) {
        return seVcRefundItemMapper.updateByPrimaryKeySelective(po);
    }
    /**
     * 根据订单号生成退款单号
     * @param orderNumber
     * @return
     */
    public String generateRefundNumber(String orderNumber) {
        String refundNumber = seVcRefundItemMapper.getLastRefundNumber(orderNumber);
        if(refundNumber == null) {
            refundNumber = orderNumber + "01";
            return refundNumber;
        }
        String a = String.format("%02d", (Integer.parseInt(refundNumber.substring(29,30).trim()) + 1));
        return  a;
    }
    /**
     * 根据订单号获取充值金额,调用退款申请接口使用
     * @param orderNumber
     * @return
     */
    public Integer getRechargeAmountByOrderNumber(String orderNumber) {
        return seVcRechargeMapper.getRechargeAmountByOrderNumber(orderNumber);
    }
    /**
     * 根据退款通知接口返回的退款单号反查退款ID,查询该退款ID下未退款记录数量
     * @param refundNumber
     * @return
     */
    public Integer getNoRefundedCount(String refundNumber) {
        return seVcRefundItemMapper.getNoRefundedCount(refundNumber);
    }
    /**
     * 根据退款单号获取退款ID,退款通知后更新退款表所需
     * @param refundNumber
     * @return
     */
    public Long getRefundIdByRefundNumber(String refundNumber) {
        return seVcRefundItemMapper.getRefundIdByRefundNumber(refundNumber);
    }
    /**
     * 获取虚拟卡充值记录
     * @param dtoVcRecharge
     * @return
     */
    public QueryResultVo<List<VoVcRecharge>> getVcRechargeRecords(DtoVcRecharge dtoVcRecharge){
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(dtoVcRecharge);
        Long itemTotal = seVirtualCardMapper.getRechargeRecordCount(params);
        QueryResultVo<List<VoVcRecharge>> rsVo = new QueryResultVo<>();
        rsVo.pageSize = dtoVcRecharge.pageSize;
        rsVo.pageCurr = dtoVcRecharge.pageCurr;
        rsVo.calculateAndSet(itemTotal, params);
        rsVo.obj = seVirtualCardMapper.getVcRechargeRecords(params);
        return rsVo;
    }
}