fix
Hentua
2023-04-07 387515b2c1e8894fe92328fc329771aab1700f07
src/main/java/cc/mrbird/febs/pay/service/impl/WxPayServiceImpl.java
@@ -1,14 +1,20 @@
package cc.mrbird.febs.pay.service.impl;
import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.mall.entity.MallMember;
import cc.mrbird.febs.mall.entity.MallMqRecord;
import cc.mrbird.febs.mall.entity.MallOrderInfo;
import cc.mrbird.febs.mall.mapper.MallMqRecordMapper;
import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
import cc.mrbird.febs.mall.service.IApiMallMemberService;
import cc.mrbird.febs.mall.service.IApiMallOrderInfoService;
import cc.mrbird.febs.mall.service.ICommonService;
import cc.mrbird.febs.pay.properties.WxPayProperties;
import cc.mrbird.febs.pay.service.IPayService;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUnit;
@@ -25,6 +31,7 @@
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.math.BigDecimal;
import java.util.Date;
@@ -40,7 +47,8 @@
public class WxPayServiceImpl implements IPayService {
    @Autowired
    private IApiMallMemberService memberService;
    private ICommonService commonService;
    @Autowired
    private MallOrderInfoMapper orderInfoMapper;
@@ -49,6 +57,12 @@
    @Autowired
    private WxPayProperties wxPayProperties;
    @Autowired
    private MallMqRecordMapper mallMqRecordMapper;
    @Autowired
    private AgentProducer agentProducer;
    @Value("${spring.profiles.active}")
    private String active;
@@ -68,7 +82,7 @@
        if ("dev".equals(active) || "test".equals(active)) {
            request.setTotalFee(1);
        } else {
            request.setTotalFee(orderInfo.getAmount().multiply(new BigDecimal(100)).intValue());
            request.setTotalFee(orderInfo.getAmount().subtract(orderInfo.getScoreAmount()).multiply(new BigDecimal(100)).intValue());
        }
        try {
@@ -81,6 +95,7 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void payCallback(Map<String, String> params) {
        String orderNo = params.get("out_trade_no");
@@ -96,5 +111,21 @@
        orderInfo.setPayTime(new Date());
        orderInfo.setPayTradeNo(params.get("transaction_id"));
        orderInfoMapper.updateById(orderInfo);
        commonService.changeWallet(orderInfo.getId(), FlowTypeEnum.BALANCE.getValue());
        /**
         * 插入一条待处理记录
         * mq处理之后,更新状态
         */
        MallMqRecord mallMqRecord = new MallMqRecord();
        mallMqRecord.setOrderId(orderInfo.getId());
        mallMqRecord.setState(2);
        mallMqRecord.setRetryTimes(2);
        mallMqRecordMapper.insert(mallMqRecord);
        //发送补贴消息
        agentProducer.sendPerkMoneyMsg(orderInfo.getId());
        //发送代理自动升级消息
        agentProducer.sendAutoLevelUpMsg(orderInfo.getMemberId());
    }
}