From c619972c50577bb699be6ee099b5e2741882fabb Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Wed, 27 Dec 2023 16:15:59 +0800
Subject: [PATCH] 直推奖励,冻结的用户,则直推奖励销毁,用户未冻结才能领取成功

---
 src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java |   90 ++++++++++++++++++++++++++++++++++----------
 1 files changed, 69 insertions(+), 21 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
index caf30b6..197a871 100644
--- a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
+++ b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
@@ -8,10 +8,7 @@
 import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.common.utils.SpringContextHolder;
 import cc.mrbird.febs.mall.dto.RechargeWalletMessageSendDto;
-import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
-import cc.mrbird.febs.mall.entity.MallMemberWallet;
-import cc.mrbird.febs.mall.entity.MallMoneyFlow;
-import cc.mrbird.febs.mall.entity.MallOrderInfo;
+import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
 import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
 import cc.mrbird.febs.pay.model.NotifyData;
@@ -51,6 +48,7 @@
 import java.math.RoundingMode;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 @Slf4j
@@ -63,6 +61,12 @@
     @Autowired
     MallMoneyFlowMapper mallMoneyFlowMapper;
     @Autowired
+    MallOrderItemMapper mallOrderItemMapper;
+    @Autowired
+    MallGoodsMapper mallGoodsMapper;
+    @Autowired
+    MallGoodsSkuMapper mallGoodsSkuMapper;
+    @Autowired
     MallMemberWalletMapper mallMemberWalletMapper;
     @Autowired
     MallMemberMapper mallMemberMapper;
@@ -73,11 +77,11 @@
     @Autowired
     private IApiMallMemberWalletService memberWalletService;
 
-    @Autowired
-    private WxPayService wxPayService;
-
-    @Autowired
-    private IXcxCodePayService xcxCodePayService;
+//    @Autowired
+//    private WxPayService wxPayService;
+//
+//    @Autowired
+//    private IXcxCodePayService xcxCodePayService;
 
     @Autowired
     private IXcxPayService iXcxPayService;
@@ -250,15 +254,59 @@
                         BigDecimal payMoney = new BigDecimal(total_fee).divide(new BigDecimal(100), 2,
                                 RoundingMode.HALF_UP);
 
-
+                        log.info("订单支付状态---status:{}", order.getStatus());
                         if (order != null && OrderStatusEnum.WAIT_PAY.getValue() == order.getStatus()) {
-                            log.debug("检查支付金额payMoney={},order.getPayMoney()={}", payMoney, order.getAmount());
-                            order.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
-                            order.setPayResult("1");
+                            log.info("检查支付金额payMoney={},order.getPayMoney()={}", payMoney, order.getAmount());
+//                            order.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
+                            order.setStatus(OrderStatusEnum.FINISH.getValue());
+                            order.setPayResult(1);
                             order.setPayTime(new Date());
-                            order.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue());
+                            order.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_FINISH.getValue());
                             mallOrderInfoMapper.updateById(order);
+                            Long memberId = order.getMemberId();
+                            MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
+                            if(ObjectUtil.isNotEmpty(mallMemberWallet)){
+
+                                log.info("订单支付用户钱包---mallMemberWallet:{},{}", mallMemberWallet.getBalance(),mallMemberWallet.getScore());
+                                List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(order.getId());
+                                if(ObjectUtil.isNotEmpty(mallOrderItemList)){
+                                    /**
+                                     * 会员增加积分
+                                     *  (现价-成本价)/现价*支付的金额 = 这个商品可以得到的积分
+                                     *  然后累加得到总增加的积分数量
+                                     */
+                                    BigDecimal totalScoreAdd = BigDecimal.ZERO;
+                                    for(MallOrderItem mallOrderItem : mallOrderItemList){
+                                        Long skuId = mallOrderItem.getSkuId();
+                                        MallGoodsSku mallGoodsSku = mallGoodsSkuMapper.selectById(skuId);
+                                        if(ObjectUtil.isEmpty(mallGoodsSku)){
+                                            continue;
+                                        }
+                                        BigDecimal presentPrice = mallGoodsSku.getPresentPrice();
+                                        BigDecimal costPrice = mallGoodsSku.getCostPrice();
+                                        BigDecimal subtractPrice = presentPrice.subtract(costPrice);//现价和成本价之间的差价
+                                        if(subtractPrice.compareTo(BigDecimal.ZERO) <= 0){
+                                            continue;
+                                        }
+                                        BigDecimal multiply = subtractPrice.divide(presentPrice, 2, BigDecimal.ROUND_DOWN).multiply(mallOrderItem.getAmount());
+                                        totalScoreAdd = totalScoreAdd.add(multiply);
+                                    }
+
+
+                                    log.info("订单支付加积分---totalScoreAdd:{}", totalScoreAdd);
+                                    if(totalScoreAdd.compareTo(BigDecimal.ZERO) <= 0){
+                                        return;
+                                    }
+                                    BigDecimal bigDecimal = totalScoreAdd.add(mallMemberWallet.getScore()).setScale(2, BigDecimal.ROUND_DOWN);
+                                    mallMemberWallet.setScore(bigDecimal);
+                                    mallMemberWallet.setBalance(mallMemberWallet.getBalance());
+                                    mallMemberWalletMapper.updateBalanceScoreWithId(mallMemberWallet);
+                                }
+                            }
+
                             threadResult.success().message("支付成功");
+
+
                         } else {
                             log.info("订单状态不为待付款,order status=", order.getStatus());
                         }
@@ -299,13 +347,13 @@
     }
 
 
-    @PostMapping(value = "/xcxCodePayCallBack")
-    public String xcxCodePayCallBack(@RequestBody String xmlData) throws WxPayException {
-        log.info("=======微信支付码付款回调:{}========", xmlData);
-        WxPayOrderNotifyResult notifyResult = this.wxPayService.parseOrderNotifyResult(xmlData);
-        xcxCodePayService.payCallback(notifyResult.toMap());
-        return WxPayNotifyResponse.success("成功");
-    }
+//    @PostMapping(value = "/xcxCodePayCallBack")
+//    public String xcxCodePayCallBack(@RequestBody String xmlData) throws WxPayException {
+//        log.info("=======微信支付码付款回调:{}========", xmlData);
+//        WxPayOrderNotifyResult notifyResult = wxPayService.parseOrderNotifyResult(xmlData);
+//        xcxCodePayService.payCallback(notifyResult.toMap());
+//        return WxPayNotifyResponse.success("成功");
+//    }
 
 
 }

--
Gitblit v1.9.1