Browse Source

Merge branch 'dev/2024/04/17/update_order_integral'

Ben 1 year ago
parent
commit
d9ba7f4eed

+ 5 - 3
feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/constant/DistriConstants.java

@@ -1,13 +1,15 @@
 package cn.newfeifan.mall.module.distri.constant;
 
-import cn.newfeifan.mall.framework.common.exception.ErrorCode;
+import java.math.BigDecimal;
 
 public class DistriConstants {
     // ========== 分销信息商户信息 1-002-029-000 ==========
     public static final Integer PERCENT = 10000;//积分数据库中的值,比页面显示的值,大了此倍数
 
-    // 数据库中,积分比金钱大的倍数
-    public static final Integer INTEGRAL2MONEY = PERCENT/100;
+    // 数据库中,积分比金钱大的倍数,即钱转成积分要乘于此参数
+    public static final Integer MONEY2INTEGRAL = PERCENT/100;
+    // MONEY2INTEGRAL的BigDecimal版本
+    public static final BigDecimal MONEY2INTEGRAL_BIG_DECIMAL = new BigDecimal(Integer.parseInt(MONEY2INTEGRAL.toString()));
 
     public static final Double ONE_HUNDRED = 1d;
     public static final Long PT_ID = 1L;

+ 4 - 2
feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/enums/CaclEnum.java

@@ -14,8 +14,10 @@ public enum CaclEnum {
     HIGH_QUOTA(6, "最高可以获得积分"),
     SMALL_QUOTA_CRASH(7, "小区额度分配"),
     AFTER_CRASH_CALC_PT_TOTAL_QUOTA(8, "碰撞后计算平台总收益"),
-    ORDER_PAY_INTEGRAL(9,"订单购物支付积分"),
-    ORDER_REFUND_INTEGRAL(10,"订单退款退回支付积分")
+    ORDER_PAY_INTEGRAL(9,"购物使用积分"),//支付了一部分积分作购物用
+    ORDER_REFUND_INTEGRAL(10,"订单退款,积分退回"),
+    ORDER_INTEGRAL_UNFREEZE(11,"订单积分到账"),//购物收货7天后,冻结积分变为可用积分
+    ORDER_GET_FREEZE_INTEGRAL(12,"购物返积分"),//购物获得冻结积分
     ;
 
     /**

+ 6 - 6
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/orderpercentage/OrderPercentageDO.java

@@ -30,27 +30,27 @@ public class OrderPercentageDO extends BaseDO {
     /**
      * 毛利 = 成本 * 0.38... (推广费用)
      */
-    private Integer grossProfitPerc;
+    private String grossProfitPerc;
     /**
      * 推广-用户额度 百分比
      */
-    private Integer grossProfitUserQuotaPerc;
+    private String grossProfitUserQuotaPerc;
     /**
      * 推广-推荐人额度 百分比
      */
-    private Integer grossProfitAncestorQuotaPerc;
+    private String grossProfitAncestorQuotaPerc;
     /**
      * 推广-合赢奖额度(浮动) 百分比
      */
-    private Integer grossProfitBonusQuotaPerc;
+    private String grossProfitBonusQuotaPerc;
     /**
      * 推广-平台分成额度(浮动) 百分比
      */
-    private Integer grossProfitPlatformQuotaPerc;
+    private String grossProfitPlatformQuotaPerc;
     /**
      * 分成百分比
      */
-    private Integer divideIntoPerc;
+    private String divideIntoPerc;
 
     private Integer status;
 

+ 8 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/ptprofitlog/PtProfitLogDO.java

@@ -59,5 +59,13 @@ public class PtProfitLogDO extends BaseDO {
      */
     private String orderNo;
 
+    /**
+     * 增加金额
+     */
+    private Integer freezeAmount;
 
+    /**
+     * 增加后金额
+     */
+    private Integer afterFreezeAmount;
 }

+ 94 - 94
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ordercalc/OrderCalcServiceImpl.java

@@ -98,100 +98,100 @@ public class OrderCalcServiceImpl implements OrderCalcService {
 
     @Override
     public void calc(List<DistriOrderMessage> tradeOrderDO) {
-
-        // 获取到当前订单的所有人
-        List<Long> userId = tradeOrderDO.stream().map(DistriOrderMessage::getUserId).collect(Collectors.toList());
-
-
-        OrderPercentageDO orderPercentageDO = orderPercentageService.queryStatus();
-        // 当前计算百分比模板
-        String percentTemplate = JsonUtils.toJsonString(orderPercentageDO);
-
-
-        // 每个订单收益
-        List<OrderCalcSaveReqVO> saveList = new ArrayList<>();
-        // 平台收益
-        List<PtProfitSaveReqVO> ptProfitSaveReqVOS = new ArrayList<>();
-        // 平台收益日志
-        List<PtProfitLogSaveReqVO> ptProfitLogSaveReqVOS = new ArrayList<>();
-
-        PtProfitDO ptProfitDO = ptProfitService.getPtProfit();
-
-        tradeOrderDO.forEach(k -> {
-
-            // 计算利润: (价格 - 成本价格) * 产品数量
-            Integer profit = (k.getPrice() - k.getCostPrice()) * k.getProductCount();
-            // 计算毛利: 利润 * 0.38
-            Integer grossProfit = profit * orderPercentageDO.getGrossProfitPerc();
-            // 计算用户额度: 利润 * 0.38
-            Integer userProfit = grossProfit * orderPercentageDO.getGrossProfitUserQuotaPerc();
-            // 计算直推人额度: 利润 * 0.38
-            Integer ancestorQuota = grossProfit * orderPercentageDO.getGrossProfitAncestorQuotaPerc();
-            // 计算合赢奖: 利润 * 0.38
-            Integer bonusQuota = grossProfit * orderPercentageDO.getGrossProfitBonusQuotaPerc();
-            // 计算平台收益: 利润 * 0.38
-            Integer platformQuota = grossProfit * orderPercentageDO.getGrossProfitPlatformQuotaPerc();
-
-
-            // 计算
-            OrderCalcSaveReqVO orderCalcSaveReqVO = OrderCalcSaveReqVO.builder()
-                    .userId(k.getUserId())
-                    .orderNo(k.getNo())
-                    .cost(k.getCostPrice())
-                    .price(k.getPrice())
-                    .grossProfit(grossProfit)
-                    .grossProfitUserQuota(userProfit)
-                    .grossProfitAncestorQuota(ancestorQuota)
-                    .grossProfitBonusQuota(bonusQuota)
-                    .grossProfitPlatformQuota(platformQuota)
-                    .percentTemplate(percentTemplate)
-                    .build();
-            saveList.add(orderCalcSaveReqVO);
-
-            // 每个订单计算的过程
-            // 增加平台收益
-            // 平台服务费
-            Integer ptGrossAdd = ptProfitDO.getPtGrossAdd() + platformQuota;
-            // 平台收益
-            Integer ptAdd = ptProfitDO.getPtAdd() + grossProfit * (10000 - orderPercentageDO.getGrossProfitBonusQuotaPerc());
-            // 平台总收益
-            Integer ptTotal = ptProfitDO.getPtTotalAdd() + ptGrossAdd + ptAdd;
-
-            PtProfitSaveReqVO ptProfitSaveReqVO = PtProfitSaveReqVO.builder()
-                    .ptAdd(ptAdd)
-                    .ptGrossAdd(ptGrossAdd)
-                    .ptTotalAdd(ptTotal).build();
-            ptProfitSaveReqVOS.add(ptProfitSaveReqVO);
-
-            // 平台记录
-            PtProfitLogSaveReqVO ptGrossAddLog = PtProfitLogSaveReqVO.builder()
-                    .orderId(k.getOrderId())
-                    .profitStatus(1)
-                    .amount(platformQuota)
-                    .afterAmount(ptProfitSaveReqVO.getPtGrossAdd())
-                    .percentTemplate(percentTemplate).build();
-
-            PtProfitLogSaveReqVO ptAddLog = PtProfitLogSaveReqVO.builder()
-                    .orderId(k.getOrderId())
-                    .profitStatus(2)
-                    .amount(grossProfit * (PERCENT - orderPercentageDO.getGrossProfitBonusQuotaPerc()))
-                    .afterAmount(ptProfitSaveReqVO.getPtAdd())
-                    .percentTemplate(percentTemplate).build();
-            ptProfitLogSaveReqVOS.add(ptGrossAddLog);
-            ptProfitLogSaveReqVOS.add(ptAddLog);
-
-
-        });
-
-        // 将信息存储到数据库中
-        orderCalcMapper.insertBatch(BeanUtils.toBean(saveList, OrderCalcDO.class));
-        ptProfitService.saveBatch(ptProfitSaveReqVOS);
-        ptProfitLogService.saveBatch(ptProfitLogSaveReqVOS);
-
-
-        // todo 计算当天用户的碰撞
-
-
+//
+//        // 获取到当前订单的所有人
+//        List<Long> userId = tradeOrderDO.stream().map(DistriOrderMessage::getUserId).collect(Collectors.toList());
+//
+//
+//        OrderPercentageDO orderPercentageDO = orderPercentageService.queryStatus();
+//        // 当前计算百分比模板
+//        String percentTemplate = JsonUtils.toJsonString(orderPercentageDO);
+//
+//
+//        // 每个订单收益
+//        List<OrderCalcSaveReqVO> saveList = new ArrayList<>();
+//        // 平台收益
+//        List<PtProfitSaveReqVO> ptProfitSaveReqVOS = new ArrayList<>();
+//        // 平台收益日志
+//        List<PtProfitLogSaveReqVO> ptProfitLogSaveReqVOS = new ArrayList<>();
+//
+//        PtProfitDO ptProfitDO = ptProfitService.getPtProfit();
+//
+//        tradeOrderDO.forEach(k -> {
+//
+//            // 计算利润: (价格 - 成本价格) * 产品数量
+//            Integer profit = (k.getPrice() - k.getCostPrice()) * k.getProductCount();
+//            // 计算毛利: 利润 * 0.38
+//            Integer grossProfit = profit * orderPercentageDO.getGrossProfitPerc();
+//            // 计算用户额度: 利润 * 0.38
+//            Integer userProfit = grossProfit * orderPercentageDO.getGrossProfitUserQuotaPerc();
+//            // 计算直推人额度: 利润 * 0.38
+//            Integer ancestorQuota = grossProfit * orderPercentageDO.getGrossProfitAncestorQuotaPerc();
+//            // 计算合赢奖: 利润 * 0.38
+//            Integer bonusQuota = grossProfit * orderPercentageDO.getGrossProfitBonusQuotaPerc();
+//            // 计算平台收益: 利润 * 0.38
+//            Integer platformQuota = grossProfit * orderPercentageDO.getGrossProfitPlatformQuotaPerc();
+//
+//
+//            // 计算
+//            OrderCalcSaveReqVO orderCalcSaveReqVO = OrderCalcSaveReqVO.builder()
+//                    .userId(k.getUserId())
+//                    .orderNo(k.getNo())
+//                    .cost(k.getCostPrice())
+//                    .price(k.getPrice())
+//                    .grossProfit(grossProfit)
+//                    .grossProfitUserQuota(userProfit)
+//                    .grossProfitAncestorQuota(ancestorQuota)
+//                    .grossProfitBonusQuota(bonusQuota)
+//                    .grossProfitPlatformQuota(platformQuota)
+//                    .percentTemplate(percentTemplate)
+//                    .build();
+//            saveList.add(orderCalcSaveReqVO);
+//
+//            // 每个订单计算的过程
+//            // 增加平台收益
+//            // 平台服务费
+//            Integer ptGrossAdd = ptProfitDO.getPtGrossAdd() + platformQuota;
+//            // 平台收益
+//            Integer ptAdd = ptProfitDO.getPtAdd() + grossProfit * (10000 - orderPercentageDO.getGrossProfitBonusQuotaPerc());
+//            // 平台总收益
+//            Integer ptTotal = ptProfitDO.getPtTotalAdd() + ptGrossAdd + ptAdd;
+//
+//            PtProfitSaveReqVO ptProfitSaveReqVO = PtProfitSaveReqVO.builder()
+//                    .ptAdd(ptAdd)
+//                    .ptGrossAdd(ptGrossAdd)
+//                    .ptTotalAdd(ptTotal).build();
+//            ptProfitSaveReqVOS.add(ptProfitSaveReqVO);
+//
+//            // 平台记录
+//            PtProfitLogSaveReqVO ptGrossAddLog = PtProfitLogSaveReqVO.builder()
+//                    .orderId(k.getOrderId())
+//                    .profitStatus(1)
+//                    .amount(platformQuota)
+//                    .afterAmount(ptProfitSaveReqVO.getPtGrossAdd())
+//                    .percentTemplate(percentTemplate).build();
+//
+//            PtProfitLogSaveReqVO ptAddLog = PtProfitLogSaveReqVO.builder()
+//                    .orderId(k.getOrderId())
+//                    .profitStatus(2)
+//                    .amount(grossProfit * (PERCENT - orderPercentageDO.getGrossProfitBonusQuotaPerc()))
+//                    .afterAmount(ptProfitSaveReqVO.getPtAdd())
+//                    .percentTemplate(percentTemplate).build();
+//            ptProfitLogSaveReqVOS.add(ptGrossAddLog);
+//            ptProfitLogSaveReqVOS.add(ptAddLog);
+//
+//
+//        });
+//
+//        // 将信息存储到数据库中
+//        orderCalcMapper.insertBatch(BeanUtils.toBean(saveList, OrderCalcDO.class));
+//        ptProfitService.saveBatch(ptProfitSaveReqVOS);
+//        ptProfitLogService.saveBatch(ptProfitLogSaveReqVOS);
+//
+//
+//        // todo 计算当天用户的碰撞
+//
+//
     }
 
 }

+ 1 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofitlog/PtProfitLogServiceImpl.java

@@ -108,6 +108,7 @@ public class PtProfitLogServiceImpl implements PtProfitLogService {
                 .percentTemplate(percentTemplate)
                 .userId(userId)
                 .profitStatus(caclEnum.getType()).orderId(tradeOrderId).orderNo(OrderNum)
+                .freezeAmount(freezeAmount).afterFreezeAmount(afterFreezeAmount)
                 .build();
         ptProfitLogMapper.insert(BeanUtils.toBean(ptProfitLog, PtProfitLogDO.class));
 

+ 120 - 5
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderUpdateServiceImpl.java

@@ -13,10 +13,11 @@ import cn.newfeifan.mall.framework.common.util.json.JsonUtils;
 import cn.newfeifan.mall.framework.common.util.number.MoneyUtils;
 import cn.newfeifan.mall.module.distri.constant.DistriConstants;
 import cn.newfeifan.mall.module.distri.dal.dataobject.integral.IntegralDO;
+import cn.newfeifan.mall.module.distri.dal.dataobject.orderpercentage.OrderPercentageDO;
 import cn.newfeifan.mall.module.distri.dal.mysql.integral.IntegralMapper;
+import cn.newfeifan.mall.module.distri.dal.mysql.orderpercentage.OrderPercentageMapper;
 import cn.newfeifan.mall.module.distri.enums.CaclEnum;
 import cn.newfeifan.mall.module.distri.service.integral.IntegralService;
-import cn.newfeifan.mall.module.distri.service.ptprofit.PtProfitService;
 import cn.newfeifan.mall.module.member.api.address.MemberAddressApi;
 import cn.newfeifan.mall.module.member.api.address.dto.MemberAddressRespDTO;
 import cn.newfeifan.mall.module.pay.api.order.PayOrderApi;
@@ -62,6 +63,7 @@ import cn.newfeifan.mall.module.trade.service.price.TradePriceService;
 import cn.newfeifan.mall.module.trade.service.price.bo.TradePriceCalculateReqBO;
 import cn.newfeifan.mall.module.trade.service.price.bo.TradePriceCalculateRespBO;
 import cn.newfeifan.mall.module.trade.service.price.calculator.TradePriceCalculatorHelper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.BeanUtils;
@@ -69,6 +71,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.util.*;
 
@@ -138,6 +142,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
     @Resource
     private IntegralService integralService;
 
+    @Resource
+    private OrderPercentageMapper orderPercentageMapper;
+
     // =================== Order ===================
 
 
@@ -383,14 +390,19 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
         return tradePriceService.calculatePrice(calculateReqBO);
     }
 
+    //把数据库的钱转换为数据库的积分
+    public static BigDecimal money2Integral(BigDecimal money){
+        return money.multiply(DistriConstants.MONEY2INTEGRAL_BIG_DECIMAL);
+    }
+
     //把数据库的钱转换为数据库的积分
     public static Integer money2Integral(Integer money){
-        return money*DistriConstants.INTEGRAL2MONEY;
+        return money*DistriConstants.MONEY2INTEGRAL;
     }
 
     //把数据库的积分转换为数据库的钱
     public static Integer integral2Money(Integer integral){
-        return integral/DistriConstants.INTEGRAL2MONEY;
+        return integral/DistriConstants.MONEY2INTEGRAL;
     }
 
     @Override
@@ -582,15 +594,53 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
             tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()).setPayOrderId(payOrderId));
         }
 
-        //如果订单有使用积分,则抵扣用户的积分 add by Ben
+        //如果订单有使用积分,则抵扣用户的积分add by Ben
         if(payPoints>0){
+            for(Map<String,Object> m:orderMapList) {
+                TradeOrderDO order = (TradeOrderDO) (m.get("order"));
+                Long tradeOrderId = order.getId();
+                String OrderNum =order.getNo();
+                Integer payIntegral = order.getPayIntegral();//每个订单使用的积分
+                integralService.updateUserIntegral(userId, CaclEnum.ORDER_PAY_INTEGRAL, payIntegral * (-1), 0, tradeOrderId, OrderNum);
+            }
+        }
+
+        boolean caculateFreezeAmount = false;//增加冻结积分
+
+        //增加冻结积分这分部分,是订单微信支付成功后,才执行的,下面的代码只是为了测试方便写在这,实际永远不会执行。add by Ben
+        if(caculateFreezeAmount){
 
             //下面这部分,应该是写到订单支付成功的地方的,写在下面这里,只是为了方便测试
-            Integer freezeAmount =2;//测试方便,临时写死,等汉鹏的方法
 
             for(Map<String,Object> m:orderMapList){
                 TradeOrderDO order = (TradeOrderDO)(m.get("order"));
 
+                List<Long> skuList = new ArrayList<>();
+                //汇总各订单项利润
+                List<TradeOrderItemDO> TradeOrderItemList = tradeOrderItemMapper.selectList("order_id", order.getId());
+                for (TradeOrderItemDO tradeOrderItemDO : TradeOrderItemList) {
+                    Long skuId = tradeOrderItemDO.getSkuId();
+                    skuList.add(skuId);
+                }
+
+                List<ProductSkuDO> productSkuDOS = productSkuMapper.selectBatchIds(skuList);
+                Map<Long,ProductSkuDO> skuDOMap = new HashMap<Long,ProductSkuDO>();
+                for (ProductSkuDO productSkuDO : productSkuDOS) {
+                    skuDOMap.put(productSkuDO.getId(),productSkuDO);
+                }
+
+                Integer totalPromotionExpenses = 0;//总推广费,单位为分
+                for (TradeOrderItemDO tradeOrderItemDO : TradeOrderItemList) {
+                    ProductSkuDO productSkuDO = skuDOMap.get(tradeOrderItemDO.getSkuId());
+                    //这类商品的总推广费
+                    Integer promotionExpenses = (productSkuDO.getPrice()-productSkuDO.getCostPrice())
+                            *tradeOrderItemDO.getCount();
+                    totalPromotionExpenses+=promotionExpenses;
+                }
+
+                //把商品的推广费总额,转换为直推人获得的冻结积分
+                Integer freezeAmount = promotionExpenses2GrossProfitAncestorQuota(orderPercentageMapper,totalPromotionExpenses);
+
                 Long tradeOrderId = order.getId();
                 String OrderNum =order.getNo();
                 integralService.updateUserIntegral(userId, CaclEnum.ORDER_PAY_INTEGRAL, payPoints*(-1),freezeAmount,tradeOrderId,OrderNum);
@@ -601,6 +651,37 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
         return virtualOrder;
     }
 
+    /**
+     * 把商品的推广费总额,转换为直推人获得的冻结积分
+     * @param totalPromotionExpenses 商品的推广费总额
+     * @return 输入推广费,对应的直推人获得的冻结积分
+     */
+    public static Integer promotionExpenses2GrossProfitAncestorQuota(
+            OrderPercentageMapper orderPercentageMapper,
+            Integer totalPromotionExpenses){
+
+        //查询订单提成比例
+        QueryWrapper<OrderPercentageDO> queryWrapper = new QueryWrapper<>();
+        OrderPercentageDO orderPercentageDO = orderPercentageMapper.selectOne(queryWrapper);//表中只有一条记录
+
+        //转为BigDecimal
+        BigDecimal profit = new BigDecimal(String.valueOf(totalPromotionExpenses));
+
+        // 计算毛利: 利润 * 0.38
+        BigDecimal grossProfit = profit.multiply(new BigDecimal(orderPercentageDO.getGrossProfitPerc())).setScale(4, RoundingMode.DOWN);
+
+        // 计算直推人额度: 毛利 * 0.35
+        BigDecimal descendantQuota = grossProfit.multiply(new BigDecimal(orderPercentageDO.getGrossProfitAncestorQuotaPerc())).setScale(4, RoundingMode.DOWN);
+
+        //把钱转为:增加的冻结积分
+        BigDecimal freezeAmount_bigDecimal = money2Integral(descendantQuota);
+
+        Integer freezeAmount = freezeAmount_bigDecimal.intValue();
+
+        return freezeAmount;
+    }
+
+
     private TradeOrderDO buildTradeOrder(Long userId, AppTradeOrderCreateReqVO createReqVO,
                                          TradePriceCalculateRespBO calculateRespBO) {
         TradeOrderDO order = TradeOrderConvert.INSTANCE.convert(userId, createReqVO, calculateRespBO);
@@ -758,7 +839,41 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
             TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), TradeOrderStatusEnum.UNDELIVERED.getStatus());
             TradeOrderLogUtils.setUserInfo(order.getUserId(), UserTypeEnum.MEMBER.getValue());
 
+
+            // 5. 增加用户冻结积分 20240420
+
+            List<Long> skuList = new ArrayList<>();
+            //汇总各订单项利润
+            List<TradeOrderItemDO> TradeOrderItemList = tradeOrderItemMapper.selectList("order_id", order.getId());
+            for (TradeOrderItemDO tradeOrderItemDO : TradeOrderItemList) {
+                Long skuId = tradeOrderItemDO.getSkuId();
+                skuList.add(skuId);
+            }
+
+            List<ProductSkuDO> productSkuDOS = productSkuMapper.selectBatchIds(skuList);
+            Map<Long,ProductSkuDO> skuDOMap = new HashMap<Long,ProductSkuDO>();
+            for (ProductSkuDO productSkuDO : productSkuDOS) {
+                skuDOMap.put(productSkuDO.getId(),productSkuDO);
+            }
+
+            Integer totalPromotionExpenses = 0;//总推广费,单位为分
+            for (TradeOrderItemDO tradeOrderItemDO : TradeOrderItemList) {
+                ProductSkuDO productSkuDO = skuDOMap.get(tradeOrderItemDO.getSkuId());
+                //这类商品的总推广费
+                Integer promotionExpenses = (productSkuDO.getPrice()-productSkuDO.getCostPrice())
+                        *tradeOrderItemDO.getCount();
+                totalPromotionExpenses+=promotionExpenses;
+            }
+
+            //把商品的推广费总额,转换为直推人获得的冻结积分
+            Integer freezeAmount = promotionExpenses2GrossProfitAncestorQuota(orderPercentageMapper,totalPromotionExpenses);
+
+            String OrderNum =order.getNo();
+            integralService.updateUserIntegral(tradeOrderDO.getUserId(), CaclEnum.ORDER_GET_FREEZE_INTEGRAL, 0,freezeAmount,tradeOrderId,OrderNum);
+
         }
+
+
     }
 
     /**