1.
phpcjl
2024-12-09 3d6c34f45d76b78151d6586f93acca2943698b08
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java
@@ -9,8 +9,8 @@
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;
@@ -20,6 +20,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 +50,7 @@
    }
    @Override
    public void calculationCommission(List<Long> orderIds) {
    public void calculationCommission(Set<String> orderIds) {
        List<OrderGood> orderGoods = orderGoodService.list(new LambdaQueryWrapper<OrderGood>()
                .in(OrderGood::getOrderId, orderIds));
@@ -77,32 +78,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){
                // 直推上级分佣金额
                Integer superiorType = og.getSuperiorType();
                if (superiorType == 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 == 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();
            }
        }