Przeglądaj źródła

修改计算方式

gaohp 11 miesięcy temu
rodzic
commit
4b1366697e

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

@@ -136,6 +136,10 @@ public class OrderCalcServiceImpl implements OrderCalcService {
     }
 
     private void calc(List<DistriOrderMessage> tradeOrderDO, OrderPercentageDO orderPercentageDO, String percentTemplate) {
+
+        // 给用户分组
+
+
         // 每个订单收益
         List<OrderCalcSaveReqVO> saveList = new ArrayList<>();
         // 平台收益
@@ -149,6 +153,7 @@ public class OrderCalcServiceImpl implements OrderCalcService {
         List<DuserSaveReqVO> duserSaveReqVOS = new ArrayList<>();
 
         PtProfitDO ptProfitDO = ptProfitService.getPtProfit();
+        PtProfitDO finalPtProfitDO = ptProfitDO;
         tradeOrderDO.forEach(k -> {
 
             BigDecimal price = new BigDecimal(String.valueOf(k.getPrice()));
@@ -193,19 +198,19 @@ public class OrderCalcServiceImpl implements OrderCalcService {
             // 如果sharePath为空, 则说明没有直推人关系
             IntegralDO integralDOAncestor = integralService.selectByUser(sharePath.getAncestor());
             IntegralDO integralDO = integralService.selectByUser(sharePath.getDescendant());
-
+            IntegralDO ptIntegral = integralService.selectByUser(1L);
             // ========== 汇总计算 =================
             addCaclDo(percentTemplate, saveList, k, grossProfitInt, ancestorQuotaInt, descendantQuotaInt, bonusQuotaInt, platformQuotaInt);
             // ========== 修改用户钱包 =================
-            changeUserWallet(integralSaveReqVOS, integralDO, integralDOAncestor, ancestorQuotaInt, descendantQuotaInt, highQuotaInt);
+            changeUserWallet(integralSaveReqVOS, integralDO, integralDOAncestor, ptIntegral, ancestorQuotaInt, descendantQuotaInt, highQuotaInt, grossProfitInt, platformQuotaInt);
             // ========== 修改平台信息 =================
             // 每个订单计算的过程
             // 增加平台收益
             // 平台服务费
 
-            BigDecimal ptGrossAdd = new BigDecimal(ptProfitDO.getPtGrossAdd());
-            BigDecimal ptAdd = new BigDecimal(ptProfitDO.getPtAdd());
-            BigDecimal ptTotalAdd = new BigDecimal(ptProfitDO.getPtTotalAdd());
+            BigDecimal ptGrossAdd = new BigDecimal(finalPtProfitDO.getPtGrossAdd());
+            BigDecimal ptAdd = new BigDecimal(finalPtProfitDO.getPtAdd());
+            BigDecimal ptTotalAdd = new BigDecimal(finalPtProfitDO.getPtTotalAdd());
             BigDecimal bonusQuotaPerc = new BigDecimal(orderPercentageDO.getGrossProfitPerc());
 
             // 计算平台收益:毛利润减去合赢奖百分比后的金额
@@ -254,11 +259,31 @@ public class OrderCalcServiceImpl implements OrderCalcService {
 
         });
 
+        // 信息整合
+        // 计算平台收益
+        ptProfitDO = calcPtProfit(ptProfitDO, ptProfitSaveReqVOS);
+
         // 将信息存储到数据库中
         orderCalcMapper.insertBatch(BeanUtils.toBean(saveList, OrderCalcDO.class));
-        ptProfitService.saveBatch(ptProfitSaveReqVOS);
+        ptProfitService.updatePtProfit(BeanUtils.toBean(ptProfitDO, PtProfitSaveReqVO.class));
         ptProfitLogService.saveBatch(ptProfitLogSaveReqVOS);
-        integralService.updateBatch(integralSaveReqVOS);
+    }
+
+    private PtProfitDO calcPtProfit(PtProfitDO ptProfitDO, List<PtProfitSaveReqVO> ptProfitSaveReqVOS) {
+
+        int currentPtAdd = 0;
+        int currentPtGrossAdd = 0;
+
+        for (PtProfitSaveReqVO ptProfitSaveReqVO : ptProfitSaveReqVOS) {
+            currentPtAdd = currentPtAdd + ptProfitSaveReqVO.getPtAdd();
+            currentPtGrossAdd = currentPtGrossAdd + ptProfitSaveReqVO.getPtGrossAdd();
+        }
+
+        ptProfitDO.setPtAdd(ptProfitDO.getPtAdd() + currentPtAdd);
+        ptProfitDO.setPtGrossAdd(ptProfitDO.getPtGrossAdd() + currentPtGrossAdd);
+        ptProfitDO.setPtTotalAdd(currentPtAdd + currentPtGrossAdd + ptProfitDO.getPtTotalAdd());
+
+        return ptProfitDO;
     }
 
     private static void addCaclDo(String percentTemplate, List<OrderCalcSaveReqVO> saveList, DistriOrderMessage k, Integer grossProfit, Integer ancestorQuota, Integer descendantQuota, Integer bonusQuota, Integer platformQuota) {
@@ -266,25 +291,31 @@ public class OrderCalcServiceImpl implements OrderCalcService {
         saveList.add(orderCalcSaveReqVO);
     }
 
-    private static void changeUserWallet(List<IntegralSaveReqVO> integralSaveReqVOS, IntegralDO integralDO, IntegralDO integralDOAncestor, Integer ancestorQuota, Integer descendantQuota, Integer highQuota) {
+    private void changeUserWallet(List<IntegralSaveReqVO> integralSaveReqVOS, IntegralDO integralDO, IntegralDO integralDOAncestor, IntegralDO pt,
+                                  Integer ancestorQuota, Integer descendantQuota, Integer highQuota, Integer ptA, Integer ptB) {
         // 修改用户钱包
         // 增加直推人额度
         integralDO.setHighQuota(integralDO.getHighQuota() + highQuota);
         integralDO.setCurrentQuota(integralDO.getCurrentQuota() + descendantQuota);
 
+
         // 增加推荐人额度
         integralDOAncestor.setCurrentQuota(integralDO.getCurrentQuota() + ancestorQuota);
+        // 增加平台额度
+        pt.setCurrentQuota(integralDO.getCurrentQuota() + ptA + ptB);
 
-        integralSaveReqVOS.add(BeanUtils.toBean(integralDO, IntegralSaveReqVO.class));
-        integralSaveReqVOS.add(BeanUtils.toBean(integralDOAncestor, IntegralSaveReqVO.class));
-    }
+//        integralSaveReqVOS.add(BeanUtils.toBean(integralDO, IntegralSaveReqVO.class));
+//        integralSaveReqVOS.add(BeanUtils.toBean(integralDOAncestor, IntegralSaveReqVO.class));
 
+        integralService.updateIntegral(BeanUtils.toBean(integralDO, IntegralSaveReqVO.class));
+        integralService.updateIntegral(BeanUtils.toBean(integralDOAncestor, IntegralSaveReqVO.class));
+        integralService.updateIntegral(BeanUtils.toBean(pt, IntegralSaveReqVO.class));
 
+    }
 
 
     // 获取当前订单的下单人的直推关系
     public SharePathDO getSharePath(Long userId) {
-
         return sharePathService.getSharePathByDescendant(userId);
     }