| 
					
				 | 
			
			
				@@ -1031,256 +1031,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         tradeOrderMapper.updateById(updateOrderObj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 计算订单支付成功后,订单项的冻结积分转换 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param tradeOrderDOList  订单列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param orderPercentageDO 参数百分比 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * @param percentTemplate   计算百分比模板 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void calc(List<TradeOrderDO> tradeOrderDOList, OrderPercentageDO orderPercentageDO, String percentTemplate) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 平台收益日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<PtProfitLogSaveReqVO> ptProfitLogSaveReqVOS = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // todo 修改用户身价 如何从订单中获取身价? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        BigDecimal oneHundred = new BigDecimal(BigInteger.ONE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 计算,毛利中100 之外的百分比 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        BigDecimal otherOneHundred = oneHundred.subtract(new BigDecimal(orderPercentageDO.getGrossProfitUserQuotaPerc())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .subtract(new BigDecimal(orderPercentageDO.getGrossProfitAncestorQuotaPerc())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .subtract(new BigDecimal(orderPercentageDO.getGrossProfitPlatformQuotaPerc())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        tradeOrderDOList.forEach(k -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            PtProfitDO ptProfitDO = ptProfitService.getPtProfit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 平台收益 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<PtProfitSaveReqVO> ptProfitSaveReqVOS = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<TradeOrderItemDO> tradeOrderItemDOS = tradeOrderItemMapper.selectListByOrderId(k.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 计算利润: (价格 - 成本价格) * 产品数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //用户自得和直推奖不用计算,从orderItem里面获取 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            final BigDecimal[] profit = {new BigDecimal("0"), new BigDecimal("0"), new BigDecimal("0"), new BigDecimal("0")}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            tradeOrderItemDOS.forEach(j -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal onePrice = new BigDecimal(j.getPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal oneCostPrice = new BigDecimal(j.getCostPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal productCount = new BigDecimal(j.getCount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BigDecimal oneGrossProfit = onePrice.subtract(oneCostPrice).multiply(productCount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                profit[0] = profit[0].add(oneGrossProfit);  // 注意这里的改动 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                profit[2] = profit[2].add(new BigDecimal(j.getAncestorIncreaseIntegral()));     //直推奖 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                profit[3] = profit[3].add(new BigDecimal(j.getFreezeHighQuota()));     //用户获得冻结最大可用额度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // 遍历订单项拿到订单项编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //将当前订单项设置为已分配权益 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                TradeOrderItemDO item = new TradeOrderItemDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                item.setId(j.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                item.setDistributeBenefit(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                tradeOrderItemMapper.updateById(item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 计算毛利: 利润 * 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal grossProfit = profit[0].multiply(new BigDecimal(orderPercentageDO.getGrossProfitPerc())).setScale(4, RoundingMode.DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 计算平台收益 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal grossProfitAfterBonus = profit[0].multiply(oneHundred.subtract(new BigDecimal(orderPercentageDO.getGrossProfitPerc()))).setScale(4, RoundingMode.DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (otherOneHundred.compareTo(new BigDecimal(BigInteger.ZERO)) > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                grossProfitAfterBonus = grossProfitAfterBonus.add(grossProfit.multiply(otherOneHundred).setScale(4, RoundingMode.DOWN)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 用户所得: 毛利 * 0.35 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal descendantQuota = BigDecimal.valueOf(0L); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 直推奖: 毛利 * 0.3 (上一级) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal ancestorQuota = profit[2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 平台服务费: 毛利 * 0.05 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal platformQuota = grossProfit.multiply(new BigDecimal(orderPercentageDO.getGrossProfitPlatformQuotaPerc())).setScale(4, RoundingMode.DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 计算当前下单人的毛利的十倍 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//            BigDecimal highQuota = grossProfit.multiply(new BigDecimal("10")).setScale(4, RoundingMode.DOWN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal highQuota = profit[3]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 乘以 10000 并转换为整数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Long ancestorQuotaInt = ancestorQuota.longValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Long descendantQuotaInt = descendantQuota.longValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Long highQuotaInt = highQuota.longValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Long grossProfitAfterBonusInt = grossProfitAfterBonus.multiply(new BigDecimal("10000")).setScale(0, RoundingMode.DOWN).longValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Long platformQuotaInt = platformQuota.multiply(new BigDecimal("10000")).setScale(0, RoundingMode.DOWN).longValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 获取当前下单人关系 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SharePathDO sharePath = sharePathService.getSharePathByDescendant(k.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 如果sharePath为空, 则说明没有直推人关系 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            IntegralDO integralDOAncestor = integralService.selectByUser(sharePath.getAncestor());      //父级 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            IntegralDO integralDO = integralService.selectByUser(sharePath.getDescendant());            //自己 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            IntegralDO ptIntegral = integralService.selectByUser(1L);                         //pt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // ========== 身价计算 ============== 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //推荐人身价计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            double orderAncestorSocialStatus = Double.parseDouble(orderPercentageDO.getOrderAncestorSocialStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            double ancestorSocial = k.getTotalPrice() * orderAncestorSocialStatus / 100; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            duserService.updateDuserSocial(integralDOAncestor.getUserId(), (long) ancestorSocial, SocialStatusEnum.SHOPPING_ANCESTOR_SOCIAL.getStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //自得身价计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            double orderUserSocialStatus = Double.parseDouble(orderPercentageDO.getOrderUserSocialStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            double descendantSocial = k.getTotalPrice() * orderUserSocialStatus / 100; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            duserService.updateDuserSocial(integralDO.getUserId(), (long) descendantSocial, SocialStatusEnum.SHOPPING_SOCIAL.getStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            原本这里有添加到distri_order_calc表的记录,但是现在要合赢奖和(直推奖、自得奖)分开,所以现在搬走了 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // ========== 修改用户钱包 ================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //直推奖也要限制额度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Long ancestorHighQuota = integralDOAncestor.getHighQuota() + new BigDecimal(orderPercentageDO.getBaseMaxQuota()).longValue();//加上基础的最大额度值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //amount用于记录本次添加的值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Long amount = 0L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //平台需要补回的收益 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Long ptReplenish = ancestorQuotaInt; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //如果直推人的可获取额度大于0,则能够获取 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (ancestorHighQuota.compareTo(0L) > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (ancestorHighQuota.compareTo(ancestorQuotaInt) > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //如果最大额度 > 直推人可获取额度,则直接获取 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    amount = ancestorQuotaInt; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //平台没有需要补回的收益 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ptReplenish = 0L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //如果最大额度 < 直推人可获取额度,则获取自己的最大额度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    amount = ancestorHighQuota; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //用户本次没有拿到的直推奖 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ptReplenish = ancestorQuotaInt - ancestorHighQuota; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            changeUserWallet(integralDO, integralDOAncestor, ptIntegral, amount, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    descendantQuotaInt, highQuotaInt, grossProfitAfterBonusInt, platformQuotaInt, ptReplenish); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // ========== 修改平台信息 ================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 每个订单计算的过程 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 增加平台收益 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 平台服务费 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            PtProfitSaveReqVO ptProfitSaveReqVO = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    PtProfitSaveReqVO.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            .ptAdd(platformQuotaInt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            .ptGrossAdd(grossProfitAfterBonusInt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            .ptTotalAdd(platformQuotaInt + grossProfitAfterBonusInt).build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 当直推人获取的积分额度不足时,平台收益要加回来,并生成log 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (ptReplenish.compareTo(0L) > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                calcIntegral(ptProfitSaveReqVOS, ptProfitSaveReqVO, ptReplenish, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        k.getId(), k.getNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ptProfitSaveReqVOS.add(ptProfitSaveReqVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // ========== 增加日志记录 ================= 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 平台记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 平台总收益 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 平台总收益 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            PtProfitLogSaveReqVO ptTotal = PtProfitLogSaveReqVO.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .orderId(k.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .profitStatus(CaclEnum.PLATFORM_TOTAL_ADD.getType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .orderNo(k.getNo()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .amount(platformQuotaInt + grossProfitAfterBonusInt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .afterAmount(ptProfitDO.getPtTotalAdd() + platformQuotaInt + grossProfitAfterBonusInt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .percentTemplate(percentTemplate) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .generateUserId(integralDO.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 平台收益 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            PtProfitLogSaveReqVO ptGrossAddLog = PtProfitLogSaveReqVO.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .orderId(k.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .profitStatus(CaclEnum.PLATFORM_REVENUE.getType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .orderNo(k.getNo()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .amount(grossProfitAfterBonusInt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .afterAmount(ptProfitDO.getPtGrossAdd() + ptProfitSaveReqVO.getPtGrossAdd()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .percentTemplate(percentTemplate) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .generateUserId(integralDO.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 平台服务费 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            PtProfitLogSaveReqVO ptAddLog = PtProfitLogSaveReqVO.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .orderId(k.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .profitStatus(CaclEnum.PLATFORM_SERVICE_FEE.getType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .orderNo(k.getNo()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .amount(platformQuotaInt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .afterAmount(ptProfitDO.getPtAdd() + ptProfitSaveReqVO.getPtAdd()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .percentTemplate(percentTemplate) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .generateUserId(integralDO.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 直推奖记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            PtProfitLogSaveReqVO tjrLog = PtProfitLogSaveReqVO.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .orderId(k.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .profitStatus(CaclEnum.RECOMMENDED_PERSON_QUOTA.getType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .orderNo(k.getNo()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .userId(sharePath.getAncestor()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .amount(amount) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .afterAmount(integralDOAncestor.getRedCurrentQuota()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .freezeAmount(-amount) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .afterFreezeAmount(integralDOAncestor.getFreezeQuota()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .ancestorQuotaAmount(ptReplenish) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .maxAvailablePointsAmount(-amount) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .afterMaxAvailablePointsAmount(ancestorHighQuota - amount) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .percentTemplate(percentTemplate) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .generateUserId(integralDO.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 用户自得记录 + 户冻结积分转化成可用 + 扣减最高可用额度记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            PtProfitLogSaveReqVO ztrLog = PtProfitLogSaveReqVO.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .orderId(k.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .profitStatus(CaclEnum.DIRECT_REFERRAL_QUOTA.getType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .orderNo(k.getNo()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .userId(sharePath.getDescendant()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .amount(descendantQuotaInt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .afterAmount(integralDO.getRedCurrentQuota()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .freezeAmount(-descendantQuotaInt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .afterFreezeAmount(integralDO.getFreezeQuota()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .maxAvailablePointsAmount(highQuotaInt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .afterMaxAvailablePointsAmount(integralDO.getHighQuota() + new BigDecimal(orderPercentageDO.getBaseMaxQuota()).longValue()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .freezeHighQuota(-highQuotaInt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .afterFreezeHighQuota(integralDO.getFreezeHighQuota()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .percentTemplate(percentTemplate) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .generateUserId(integralDO.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ptProfitLogSaveReqVOS.add(ptTotal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ptProfitLogSaveReqVOS.add(ptGrossAddLog); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ptProfitLogSaveReqVOS.add(ptAddLog); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ptProfitLogSaveReqVOS.add(tjrLog); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ptProfitLogSaveReqVOS.add(ztrLog); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            PtProfitDO ptProfit = ptProfitService.getPtProfit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 计算总积分 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Long total = ptProfitSaveReqVOS.stream().mapToLong(PtProfitSaveReqVO::getPtTotalAdd).sum(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Long add = ptProfitSaveReqVOS.stream().mapToLong(PtProfitSaveReqVO::getPtAdd).sum(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Long grossAdd = ptProfitSaveReqVOS.stream().mapToLong(PtProfitSaveReqVO::getPtGrossAdd).sum(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ptProfit.setPtAdd(ptProfit.getPtAdd() + add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ptProfit.setPtTotalAdd(ptProfit.getPtTotalAdd() + total); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ptProfit.setPtGrossAdd(ptProfit.getPtGrossAdd() + grossAdd); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            PtProfitSaveReqVO ptProfitSaveReqVO2 = PtProfitSaveReqVO.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .id(ptProfitDO.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .ptTotalAdd(ptProfit.getPtTotalAdd()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .ptAdd(ptProfit.getPtAdd()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .ptGrossAdd(ptProfit.getPtGrossAdd()).build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ptProfitService.updatePtProfit(ptProfitSaveReqVO2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 信息整合 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ptProfitLogService.saveBatch(ptProfitLogSaveReqVOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 在用户获取直推奖的时候溢出的需要加入到平台,并记录log 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 |