From 387515b2c1e8894fe92328fc329771aab1700f07 Mon Sep 17 00:00:00 2001 From: Hentua <wangdoubleone@gmail.com> Date: Fri, 07 Apr 2023 18:36:26 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/pay/service/impl/WxPayServiceImpl.java | 35 ++++ src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java | 1 src/test/java/cc/mrbird/febs/ProfitTest.java | 2 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 204 ------------------------- src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java | 2 src/main/java/cc/mrbird/febs/mall/service/ICommonService.java | 2 src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java | 232 ++++++++++++++++++++++++++++ 7 files changed, 268 insertions(+), 210 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java index 73d863b..c000908 100644 --- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java +++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java @@ -86,7 +86,7 @@ * 补贴消息--重试 * 一个小时运行一次 */ - @Scheduled(cron = "0 /5 * * * ? ") + @Scheduled(cron = "0 0/5 * * * ?") public void mqPerkRetryJob() { memberProfitService.mqPerkRetryJob(); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java index 9ed27d8..4bf0bca 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java @@ -41,5 +41,4 @@ ApiScoreSetVo myScoreSet(); - void changeWallet(Long orderId); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/ICommonService.java b/src/main/java/cc/mrbird/febs/mall/service/ICommonService.java index 114ceb9..3df90e6 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/ICommonService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/ICommonService.java @@ -26,4 +26,6 @@ * @param value */ void updateDataDic(String type, String code, String value); + + void changeWallet(Long orderId, int payType); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index 8ff7be5..8a17ee8 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -64,7 +64,6 @@ private final MallOrderRefundMapper mallOrderRefundMapper; private final MallOrderRefundOperationMapper mallOrderRefundOperationMapper; private final MallShoppingCartMapper mallShoppingCartMapper; - private final IApiMallMemberService memberService; private final IMallMoneyFlowService mallMoneyFlowService; private final RedisUtils redisUtils; @@ -81,6 +80,8 @@ private final MallAchieveRecordMapper mallAchieveRecordMapper; private final MallMemberWalletMapper mallMemberWalletMapper; private final MallMqRecordMapper mallMqRecordMapper; + + private final ICommonService commonService; @Override @Transactional(rollbackFor = Exception.class) @@ -332,7 +333,7 @@ orderInfo.setPayResult("1"); this.baseMapper.updateById(orderInfo); - changeWallet(orderInfo.getId()); + commonService.changeWallet(orderInfo.getId(), FlowTypeEnum.BALANCE.getValue()); /** * 插入一条待处理记录 * mq处理之后,更新状态 @@ -414,205 +415,6 @@ map.put("rcResult", rcResult); return map; - } - - /** - * 支付金额后的操作 - * 减少积分,增加流水 - * 购买套餐后,升级会员等级 - * 增加支付金额流水 - * 增加补贴额度 - * 增加贡献值,增加流水 - * 产生一条业绩记录 - * @param orderId - */ - @Override - public void changeWallet(Long orderId){ - MallOrderInfo orderInfo = this.baseMapper.selectById(orderId); - Long memberId = orderInfo.getMemberId(); - boolean hasTc = false; - //总贡献值 - BigDecimal starSum = BigDecimal.ZERO; - /** - * 总补贴额度 - * 所有合伙人补贴至消费礼包的三倍额度需要复购一次。 - */ - BigDecimal scoreSum = BigDecimal.ZERO; - BigDecimal achieveSum = BigDecimal.ZERO; - List<MallOrderItem> orderItems = this.baseMapper.getMallOrderItemByOrderId(orderInfo.getId()); - if (CollUtil.isNotEmpty(orderItems)) { - for (MallOrderItem orderItem : orderItems) { - MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId()); - /** - * 购买套餐赠送贡献值 - * 补贴3倍额度 - */ - if (mallGoods.getIsNormal() == 2) { - hasTc = true; - BigDecimal star = (mallGoods.getStar()==null ? BigDecimal.ZERO : mallGoods.getStar()) - .multiply(new BigDecimal(orderItem.getCnt())); - starSum = starSum.add(star); -// scoreSum = scoreSum.add( -// new BigDecimal(mallGoods.getPresentPrice()) -// .multiply(new BigDecimal(3)) -// .multiply(new BigDecimal(orderItem.getCnt())) -// .abs() -// .setScale(2,BigDecimal.ROUND_DOWN)); - String goodsName = mallGoods.getGoodsName(); - /** - * 1-2档投资级别,2.5倍 - * 3-4档投资级别,2.8倍 - * 5-6档投资级别,3倍 - * 目前紧急修改成按照商品名称 - */ - BigDecimal basePercent = new BigDecimal("3"); - if(goodsName.equals("礼包一") || goodsName.equals("礼包二")){ - basePercent = new BigDecimal("2.5"); - } - if(goodsName.equals("礼包三") || goodsName.equals("礼包四")){ - basePercent = new BigDecimal("2.8"); - } - if(goodsName.equals("礼包五") || goodsName.equals("礼包六")){ - basePercent = new BigDecimal("3"); - } - scoreSum = scoreSum.add( - new BigDecimal(mallGoods.getPresentPrice()) - .multiply(new BigDecimal(orderItem.getCnt())) - .multiply(basePercent) - .abs() - .setScale(2,BigDecimal.ROUND_DOWN)); - achieveSum = achieveSum.add( - new BigDecimal(mallGoods.getPresentPrice()) - .multiply(new BigDecimal(orderItem.getCnt())) - .abs() - .setScale(2,BigDecimal.ROUND_DOWN)); - } - } - /** - * 增加贡献值,增加流水 - */ - if (starSum.compareTo(BigDecimal.ZERO) > 0) { - //系统设置的个人贡献点最大值 - DataDictionaryCustom starGetDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.STAR_GET.getType(), - DataDictionaryEnum.STAR_GET.getCode()); - if(ObjectUtil.isNotEmpty(starGetDic)){ - String starGetStr = StrUtil.isEmpty(starGetDic.getValue()) ? "0" : starGetDic.getValue(); - BigDecimal starGet = new BigDecimal(starGetStr); - - MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); - BigDecimal star = new BigDecimal(mallMemberWallet.getStar()); - if(starGet.compareTo(star.add(starSum)) < 0){ - if(starGet.compareTo(BigDecimal.ZERO) == 0){ - mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId); - mallMoneyFlowService.addMoneyFlow( - memberId, - starSum, - MoneyFlowTypeEnum.STAR.getValue(), - orderInfo.getOrderNo(), - FlowTypeEnum.STAR.getValue(), - 2); - } - if(starGet.compareTo(star) > 0){ - BigDecimal subtract = starGet.subtract(star); - if(subtract.compareTo(starSum) < 0){ - starSum = subtract; - } - mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId); - mallMoneyFlowService.addMoneyFlow( - memberId, - starSum, - MoneyFlowTypeEnum.STAR.getValue(), - orderInfo.getOrderNo(), - FlowTypeEnum.STAR.getValue(), - 2); - } - }else{ - mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId); - mallMoneyFlowService.addMoneyFlow( - memberId, - starSum, - MoneyFlowTypeEnum.STAR.getValue(), - orderInfo.getOrderNo(), - FlowTypeEnum.STAR.getValue(), - 2); - } - } - } - /** - * 增加补贴额度 - */ - if (scoreSum.compareTo(BigDecimal.ZERO) > 0) { -// MallMember mallMember = memberMapper.selectById(memberId); -// if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) >= 5){ -// scoreSum = scoreSum.multiply(new BigDecimal(3)); -// } -// if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) >= 3 -// &&MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) < 5){ -// scoreSum = scoreSum.multiply(new BigDecimal(2.8)); -// } -// if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) < 3){ -// scoreSum = scoreSum.multiply(new BigDecimal(2.5)); -// } - memberWalletService.add(scoreSum, memberId, "totalScore"); - mallMoneyFlowService.addMoneyFlow( - memberId, - scoreSum, - MoneyFlowTypeEnum.TOTAL_SCORE.getValue(), - orderInfo.getOrderNo(), - "", - scoreSum.toString(), - memberId, - 1, - FlowTypeEnum.TOTAL_SCORE.getValue(), - 2); - } - } - - /** - * 购买套餐后,升级会员等级 - */ - if (hasTc) { - MallMember mallMember = memberMapper.selectById(memberId); - if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) { - mallMember.setLevel(AgentLevelEnum.SECOND_LEVEL.name()); - memberMapper.updateById(mallMember); - } - } - /** - * 增加支付金额流水 - */ - mallMoneyFlowService.addMoneyFlow( - memberId, - orderInfo.getAmount().subtract(orderInfo.getScoreAmount()).negate(), - MoneyFlowTypeEnum.PAY.getValue(), - orderInfo.getOrderNo(), - FlowTypeEnum.BALANCE.getValue()); - /** - * 减少积分,增加流水 - */ - int reduce = memberWalletService.reduce(orderInfo.getScoreCnt(), memberId, "prizeScore"); - if (reduce == 2) { - throw new FebsException("积分不足"); - } - mallMoneyFlowService.addMoneyFlow( - memberId, - orderInfo.getScoreCnt().negate(), - MoneyFlowTypeEnum.PAY.getValue(), - orderInfo.getOrderNo(), - FlowTypeEnum.PRIZE_SCORE.getValue()); - /** - * 产生一条业绩记录 - */ - if(achieveSum.compareTo(BigDecimal.ZERO) > 0){ - MallAchieveRecord mallAchieveRecord = new MallAchieveRecord(); - mallAchieveRecord.setMemberId(memberId); - mallAchieveRecord.setAchieveTime(new Date()); - mallAchieveRecord.setAmount(achieveSum.subtract(orderInfo.getScoreAmount())); - mallAchieveRecord.setOrderId(orderId); - mallAchieveRecord.setPayTime(orderInfo.getPayTime()); - mallAchieveRecordMapper.insert(mallAchieveRecord); - } } public static void main(String[] args) { diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java index ad5ce73..811d271 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java @@ -1,18 +1,32 @@ package cc.mrbird.febs.mall.service.impl; +import cc.mrbird.febs.common.enumerates.AgentLevelEnum; +import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; +import cc.mrbird.febs.common.enumerates.FlowTypeEnum; +import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; +import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.AppContants; import cc.mrbird.febs.common.utils.RedisUtils; -import cc.mrbird.febs.mall.entity.AppVersion; -import cc.mrbird.febs.mall.entity.DataDictionaryCustom; -import cc.mrbird.febs.mall.mapper.AppVersionMapper; -import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; +import cc.mrbird.febs.mall.entity.*; +import cc.mrbird.febs.mall.mapper.*; +import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.service.ICommonService; +import cc.mrbird.febs.mall.service.IMallAchieveService; +import cc.mrbird.febs.mall.service.IMallMoneyFlowService; +import cc.mrbird.febs.pay.service.IAliPayService; +import cc.mrbird.febs.pay.service.IPayService; +import cc.mrbird.febs.pay.service.UnipayService; +import cc.mrbird.febs.rabbit.producter.AgentProducer; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.Date; import java.util.List; /** @@ -26,6 +40,15 @@ private final RedisUtils redisUtils; private final DataDictionaryCustomMapper dataDictionaryCustomMapper; private final AppVersionMapper appVersionMapper; + + + private final MallGoodsMapper mallGoodsMapper; + private final MallMemberMapper memberMapper; + private final IApiMallMemberWalletService memberWalletService; + private final IMallMoneyFlowService mallMoneyFlowService; + private final MallAchieveRecordMapper mallAchieveRecordMapper; + private final MallMemberWalletMapper mallMemberWalletMapper; + private final MallOrderInfoMapper mallOrderInfoMapper; @Override public boolean verifyCode(String account, String code) { @@ -82,4 +105,205 @@ dataDictionaryCustomMapper.updateById(dic); } } + + /** + * 支付金额后的操作 + * 减少积分,增加流水 + * 购买套餐后,升级会员等级 + * 增加支付金额流水 + * 增加补贴额度 + * 增加贡献值,增加流水 + * 产生一条业绩记录 + * @param orderId + */ + @Override + public void changeWallet(Long orderId, int payType) { + MallOrderInfo orderInfo = this.mallOrderInfoMapper.selectById(orderId); + Long memberId = orderInfo.getMemberId(); + boolean hasTc = false; + //总贡献值 + BigDecimal starSum = BigDecimal.ZERO; + /** + * 总补贴额度 + * 所有合伙人补贴至消费礼包的三倍额度需要复购一次。 + */ + BigDecimal scoreSum = BigDecimal.ZERO; + BigDecimal achieveSum = BigDecimal.ZERO; + List<MallOrderItem> orderItems = this.mallOrderInfoMapper.getMallOrderItemByOrderId(orderInfo.getId()); + if (CollUtil.isNotEmpty(orderItems)) { + for (MallOrderItem orderItem : orderItems) { + MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId()); + /** + * 购买套餐赠送贡献值 + * 补贴3倍额度 + */ + if (mallGoods.getIsNormal() == 2) { + hasTc = true; + BigDecimal star = (mallGoods.getStar()==null ? BigDecimal.ZERO : mallGoods.getStar()) + .multiply(new BigDecimal(orderItem.getCnt())); + starSum = starSum.add(star); +// scoreSum = scoreSum.add( +// new BigDecimal(mallGoods.getPresentPrice()) +// .multiply(new BigDecimal(3)) +// .multiply(new BigDecimal(orderItem.getCnt())) +// .abs() +// .setScale(2,BigDecimal.ROUND_DOWN)); + String goodsName = mallGoods.getGoodsName(); + /** + * 1-2档投资级别,2.5倍 + * 3-4档投资级别,2.8倍 + * 5-6档投资级别,3倍 + * 目前紧急修改成按照商品名称 + */ + BigDecimal basePercent = new BigDecimal("3"); + if(goodsName.equals("礼包一") || goodsName.equals("礼包二")){ + basePercent = new BigDecimal("2.5"); + } + if(goodsName.equals("礼包三") || goodsName.equals("礼包四")){ + basePercent = new BigDecimal("2.8"); + } + if(goodsName.equals("礼包五") || goodsName.equals("礼包六")){ + basePercent = new BigDecimal("3"); + } + scoreSum = scoreSum.add( + new BigDecimal(mallGoods.getPresentPrice()) + .multiply(new BigDecimal(orderItem.getCnt())) + .multiply(basePercent) + .abs() + .setScale(2,BigDecimal.ROUND_DOWN)); + achieveSum = achieveSum.add( + new BigDecimal(mallGoods.getPresentPrice()) + .multiply(new BigDecimal(orderItem.getCnt())) + .abs() + .setScale(2,BigDecimal.ROUND_DOWN)); + } + } + /** + * 增加贡献值,增加流水 + */ + if (starSum.compareTo(BigDecimal.ZERO) > 0) { + //系统设置的个人贡献点最大值 + DataDictionaryCustom starGetDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.STAR_GET.getType(), + DataDictionaryEnum.STAR_GET.getCode()); + if(ObjectUtil.isNotEmpty(starGetDic)){ + String starGetStr = StrUtil.isEmpty(starGetDic.getValue()) ? "0" : starGetDic.getValue(); + BigDecimal starGet = new BigDecimal(starGetStr); + + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); + BigDecimal star = new BigDecimal(mallMemberWallet.getStar()); + if(starGet.compareTo(star.add(starSum)) < 0){ + if(starGet.compareTo(BigDecimal.ZERO) == 0){ + mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId); + mallMoneyFlowService.addMoneyFlow( + memberId, + starSum, + MoneyFlowTypeEnum.STAR.getValue(), + orderInfo.getOrderNo(), + FlowTypeEnum.STAR.getValue(), + 2); + } + if(starGet.compareTo(star) > 0){ + BigDecimal subtract = starGet.subtract(star); + if(subtract.compareTo(starSum) < 0){ + starSum = subtract; + } + mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId); + mallMoneyFlowService.addMoneyFlow( + memberId, + starSum, + MoneyFlowTypeEnum.STAR.getValue(), + orderInfo.getOrderNo(), + FlowTypeEnum.STAR.getValue(), + 2); + } + }else{ + mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId); + mallMoneyFlowService.addMoneyFlow( + memberId, + starSum, + MoneyFlowTypeEnum.STAR.getValue(), + orderInfo.getOrderNo(), + FlowTypeEnum.STAR.getValue(), + 2); + } + } + } + /** + * 增加补贴额度 + */ + if (scoreSum.compareTo(BigDecimal.ZERO) > 0) { +// MallMember mallMember = memberMapper.selectById(memberId); +// if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) >= 5){ +// scoreSum = scoreSum.multiply(new BigDecimal(3)); +// } +// if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) >= 3 +// &&MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) < 5){ +// scoreSum = scoreSum.multiply(new BigDecimal(2.8)); +// } +// if(MemberLevelEnum.SECOND_LEVEL.getLevelCode(mallMember.getLevel()) < 3){ +// scoreSum = scoreSum.multiply(new BigDecimal(2.5)); +// } + memberWalletService.add(scoreSum, memberId, "totalScore"); + mallMoneyFlowService.addMoneyFlow( + memberId, + scoreSum, + MoneyFlowTypeEnum.TOTAL_SCORE.getValue(), + orderInfo.getOrderNo(), + "", + scoreSum.toString(), + memberId, + 1, + FlowTypeEnum.TOTAL_SCORE.getValue(), + 2); + } + } + + /** + * 购买套餐后,升级会员等级 + */ + if (hasTc) { + MallMember mallMember = memberMapper.selectById(memberId); + if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) { + mallMember.setLevel(AgentLevelEnum.SECOND_LEVEL.name()); + memberMapper.updateById(mallMember); + } + } + /** + * 增加支付金额流水 + */ + mallMoneyFlowService.addMoneyFlow( + memberId, + orderInfo.getAmount().subtract(orderInfo.getScoreAmount()).negate(), + MoneyFlowTypeEnum.PAY.getValue(), + orderInfo.getOrderNo(), + payType); + /** + * 减少积分,增加流水 + */ + if (orderInfo.getScoreCnt().compareTo(BigDecimal.ZERO) > 0) { + int reduce = memberWalletService.reduce(orderInfo.getScoreCnt(), memberId, "prizeScore"); + if (reduce == 2) { + throw new FebsException("积分不足"); + } + mallMoneyFlowService.addMoneyFlow( + memberId, + orderInfo.getScoreCnt().negate(), + MoneyFlowTypeEnum.PAY.getValue(), + orderInfo.getOrderNo(), + FlowTypeEnum.PRIZE_SCORE.getValue()); + } + /** + * 产生一条业绩记录 + */ + if(achieveSum.compareTo(BigDecimal.ZERO) > 0){ + MallAchieveRecord mallAchieveRecord = new MallAchieveRecord(); + mallAchieveRecord.setMemberId(memberId); + mallAchieveRecord.setAchieveTime(new Date()); + mallAchieveRecord.setAmount(achieveSum.subtract(orderInfo.getScoreAmount())); + mallAchieveRecord.setOrderId(orderId); + mallAchieveRecord.setPayTime(orderInfo.getPayTime()); + mallAchieveRecordMapper.insert(mallAchieveRecord); + } + } } diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/WxPayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/WxPayServiceImpl.java index c7f583f..4fd8f86 100644 --- a/src/main/java/cc/mrbird/febs/pay/service/impl/WxPayServiceImpl.java +++ b/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()); } } diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java index 375d24b..e6208c1 100644 --- a/src/test/java/cc/mrbird/febs/ProfitTest.java +++ b/src/test/java/cc/mrbird/febs/ProfitTest.java @@ -82,7 +82,7 @@ } @Test public void agentProfit() { - iApiMallOrderInfoService.changeWallet(665L); +// iApiMallOrderInfoService.changeWallet(665L); } -- Gitblit v1.9.1