From 60f70f7409ec1ece8905e088fb43e0cb0258a70b Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期四, 19 十二月 2024 10:10:57 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java |   58 +++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 41 insertions(+), 17 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java
index 08804ba..4bedbeb 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java
@@ -9,10 +9,11 @@
 import com.ruoyi.order.service.OrderService;
 import com.ruoyi.other.api.domain.Shop;
 import com.ruoyi.other.api.feignClient.ShopClient;
-import model.Order;
-import model.OrderGood;
+import com.ruoyi.order.model.Order;
+import com.ruoyi.order.model.OrderGood;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -20,6 +21,7 @@
 import java.time.ZoneId;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 @Service
@@ -49,7 +51,8 @@
     }
 
     @Override
-    public void calculationCommission(List<Long> orderIds) {
+    @Transactional(rollbackFor = Exception.class)
+    public void calculationCommission(Set<String> orderIds) {
         List<OrderGood> orderGoods = orderGoodService.list(new LambdaQueryWrapper<OrderGood>()
                 .in(OrderGood::getOrderId, orderIds));
 
@@ -62,6 +65,8 @@
             if (order.getIsCommission() == 1) {
                 continue;
             }
+            order.setIsCommission(1);
+            orderService.updateById(order);
             R<Shop> r = shopClient.getShopById(order.getShopId());
             if (!R.isSuccess(r)) {
                 throw new RuntimeException("获取门店信息失败");
@@ -77,32 +82,51 @@
                 throw new RuntimeException("获取用户信息失败");
             }
             Long inviteUserId = appUser.getInviteUserId();
+            // 直推上级用户
             AppUser inviteUser = appUserClient.getAppUserById(inviteUserId);
+
+            // 获取直帮上级用户
+            R<AppUser> superiorLeaderR = appUserClient.getSuperiorLeader(appUserId);
+            if (!R.isSuccess(superiorLeaderR)) {
+                throw new RuntimeException("获取直帮上级信息失败");
+            }
+            AppUser superiorLeader = superiorLeaderR.getData();
 
             for (OrderGood og : v) {// 累计分销金额
 
-                // 上级分销金额
-                if (inviteUser != null){
+                // 直推上级分佣金额
+                String superiorType = og.getSuperiorType();
+                if (superiorType.contains("1") && inviteUser != null){
+                    // 分佣金额
                     BigDecimal superiorSubcommission = og.getSuperiorSubcommission();
                     BigDecimal totalDistributionAmount = inviteUser.getTotalDistributionAmount();
                     totalDistributionAmount = totalDistributionAmount.add(superiorSubcommission);
-                    //
-                    Integer superiorType = og.getSuperiorType();
+                    inviteUser.setTotalDistributionAmount(totalDistributionAmount);
+
+                    // 分佣积分
                     Integer sharePoint = inviteUser.getSharePoint();
-                    if (superiorType == 1) {
+                    Integer superiorRebatePoints = og.getSuperiorRebatePoints();
+                    sharePoint = sharePoint + superiorRebatePoints;
+                    inviteUser.setSharePoint(sharePoint);
+
+                    appUserClient.editAppUserById(inviteUser);
+                }else
+                    // 直帮上级分佣金额
+                    if (superiorType.contains("2") && superiorLeader != null){
+                        // 分佣金额
+                        BigDecimal superiorSubcommission = og.getSuperiorSubcommission();
+                        BigDecimal totalDistributionAmount = superiorLeader.getTotalDistributionAmount();
+                        totalDistributionAmount = totalDistributionAmount.add(superiorSubcommission);
+                        superiorLeader.setTotalDistributionAmount(totalDistributionAmount);
+
+                        // 分佣积分
+                        Integer sharePoint = superiorLeader.getSharePoint();
                         Integer superiorRebatePoints = og.getSuperiorRebatePoints();
                         sharePoint = sharePoint + superiorRebatePoints;
-                    } else if (superiorType == 2) {
+                        superiorLeader.setSharePoint(sharePoint);
 
-                    } else {
-                        continue;
+                        appUserClient.editAppUserById(superiorLeader);
                     }
-                    inviteUser.setTotalDistributionAmount(totalDistributionAmount);
-                    inviteUser.setSharePoint(sharePoint);
-                }
-
-                // 门店分销金额
-                og.getBoundShopCharges();
             }
         }
 

--
Gitblit v1.7.1