Hentua
2023-06-07 24a0c40654afc75c9da879ebb4c9a4c93c57e806
微信支付
5 files modified
76 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/service/impl/WxPayServiceImpl.java 60 ●●●●● patch | view | raw | blame | history
src/main/resources/application-dev.yml 4 ●●●● patch | view | raw | blame | history
src/main/resources/application-prod.yml 4 ●●●● patch | view | raw | blame | history
src/main/resources/cert/apiclient_cert.p12 patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -303,6 +303,14 @@
                    orderInfo.setName(itemsWx.get(0).getGoodsName());
                }
                if (orderInfo.getScoreCnt().compareTo(BigDecimal.ZERO) > 0) {
                    int reduce = memberWalletService.reduce(orderInfo.getScoreCnt(), member.getId(), "prizeScore");
                    if (reduce == 2) {
                        throw new FebsException("积分不足");
                    }
                    mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getScoreCnt().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.PRIZE_SCORE.getValue());
                }
                payResultStr = wechatPayService.pay(orderInfo);
                orderInfo.setPayOrderNo(payResultStr);
                orderInfo.setPayMethod("微信支付");
src/main/java/cc/mrbird/febs/pay/service/impl/WxPayServiceImpl.java
@@ -2,16 +2,16 @@
import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
import cc.mrbird.febs.common.enumerates.GoodsToLevelEnums;
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.entity.MallOrderItem;
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.mall.service.*;
import cc.mrbird.febs.pay.properties.WxPayProperties;
import cc.mrbird.febs.pay.service.IPayService;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
@@ -47,9 +47,6 @@
public class WxPayServiceImpl implements IPayService {
    @Autowired
    private ICommonService commonService;
    @Autowired
    private MallOrderInfoMapper orderInfoMapper;
    @Autowired
@@ -59,10 +56,16 @@
    private WxPayProperties wxPayProperties;
    @Autowired
    private MallMqRecordMapper mallMqRecordMapper;
    private AgentProducer agentProducer;
    @Autowired
    private AgentProducer agentProducer;
    private IMallAchieveService mallAchieveService;
    @Autowired
    private IApiMallMemberService mallMemberService;
    @Autowired
    private IApiMallMemberWalletService memberWalletService;
    @Value("${spring.profiles.active}")
    private String active;
@@ -112,20 +115,37 @@
        orderInfo.setPayTradeNo(params.get("transaction_id"));
        orderInfoMapper.updateById(orderInfo);
        commonService.changeWallet(orderInfo.getId(), FlowTypeEnum.WECHAT.getValue());
        MallMember member = mallMemberService.getById(orderInfo.getMemberId());
        /**
         * 插入一条待处理记录
         * mq处理之后,更新状态
         */
        MallMqRecord mallMqRecord = new MallMqRecord();
        mallMqRecord.setOrderId(orderInfo.getId());
        mallMqRecord.setState(2);
        mallMqRecord.setRetryTimes(2);
        mallMqRecordMapper.insert(mallMqRecord);
        //发送补贴消息
        agentProducer.sendPerkMoneyMsg(orderInfo.getId());
        // 商品级别 会员/代理/股东
        int goodsLevel = 0;
        BigDecimal score = BigDecimal.ZERO;
        for (MallOrderItem item : orderInfo.getItems()) {
            // 计算静态倍数
            if(item.getIsNormal() == 2) {
                score = score.add(item.getPrice().multiply(item.getStaticMulti()));
            }
            // 判断会员层级
            if (item.getIsNormal() == 2 && goodsLevel < item.getGoodsLevel()) {
                goodsLevel = item.getGoodsLevel();
            }
            mallAchieveService.add(item.getId());
        }
        // 根据用户购买的商品设置其等级
        member.setLevel(GoodsToLevelEnums.getLevelByAccountLevel(goodsLevel));
        member.setAccountLevel(goodsLevel);
        this.mallMemberService.updateById(member);
        memberWalletService.add(score, member.getId(), "score");
        //发送代理自动升级消息
        agentProducer.sendAutoLevelUpMsg(orderInfo.getMemberId());
        //发送直推返利消息
        agentProducer.sendOrderReturn(orderInfo.getId());
        // 发送分红消息
        agentProducer.sendOrderBonus(orderInfo.getId());
    }
}
src/main/resources/application-dev.yml
@@ -65,6 +65,6 @@
  wx:
    appId: wxf895404f2b7c401b
    mchId: 1646242135
    mchKey: wqri51aCfiG31o4IcdX3dW12qnX3u4hp
    mchKey: XGu1Dur1phUph43uajbDlhfikAebr4iD
    keyPath: classpath:cert/apiclient_cert.p12
    noticeUrl: http://120.27.238.55:8185/api/pay/wxPayCallBack
    noticeUrl: http://120.27.238.55:8188/api/pay/wxPayCallBack
src/main/resources/application-prod.yml
@@ -61,6 +61,6 @@
  wx:
    appId: wxf895404f2b7c401b
    mchId: 1646242135
    mchKey: wqri51aCfiG31o4IcdX3dW12qnX3u4hp
    mchKey: XGu1Dur1phUph43uajbDlhfikAebr4iD
    keyPath: classpath:cert/apiclient_cert.p12
    noticeUrl: https://hlm.meiao.biz/api/pay/wxPayCallBack
    noticeUrl: https://api-gcsm.meiao.biz/api/pay/wxPayCallBack
src/main/resources/cert/apiclient_cert.p12
Binary files differ