|  | @@ -200,7 +200,8 @@ public class OrderCalcServiceImpl implements OrderCalcService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              // 计算
 | 
	
		
			
				|  |  |              // 计算利润: (价格 - 成本价格) * 产品数量
 | 
	
		
			
				|  |  | -            final BigDecimal[] profit = {new BigDecimal("0"), new BigDecimal("0")};      //用户自得不用要计算,从orderItem里面获取
 | 
	
		
			
				|  |  | +            //用户自得和直推奖不用计算,从orderItem里面获取
 | 
	
		
			
				|  |  | +            final BigDecimal[] profit = {new BigDecimal("0"), new BigDecimal("0"), new BigDecimal("0")};
 | 
	
		
			
				|  |  |              k.getOrderItemMessages().forEach(j -> {
 | 
	
		
			
				|  |  |                  BigDecimal onePrice = new BigDecimal(j.getPrice());
 | 
	
		
			
				|  |  |                  BigDecimal oneCostPrice = new BigDecimal(j.getCostPrice());
 | 
	
	
		
			
				|  | @@ -208,6 +209,7 @@ public class OrderCalcServiceImpl implements OrderCalcService {
 | 
	
		
			
				|  |  |                  BigDecimal oneGrossProfit = onePrice.subtract(oneCostPrice).multiply(productCount);
 | 
	
		
			
				|  |  |                  profit[0] = profit[0].add(oneGrossProfit);  // 注意这里的改动
 | 
	
		
			
				|  |  |                  profit[1] = profit[1].add(new BigDecimal(j.getIncreaseIntegral()));     //自得积分
 | 
	
		
			
				|  |  | +                profit[2] = profit[2].add(new BigDecimal(j.getAncestorIncreaseIntegral()));     //自得积分
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  updateOrderItem(j.getOrderItemId());
 | 
	
		
			
				|  |  |              });
 | 
	
	
		
			
				|  | @@ -227,7 +229,7 @@ public class OrderCalcServiceImpl implements OrderCalcService {
 | 
	
		
			
				|  |  |              BigDecimal descendantQuota = profit[1];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              // 直推奖: 毛利 * 0.3 (上一级)
 | 
	
		
			
				|  |  | -            BigDecimal ancestorQuota = grossProfit.multiply(new BigDecimal(orderPercentageDO.getGrossProfitAncestorQuotaPerc())).setScale(4, RoundingMode.DOWN);
 | 
	
		
			
				|  |  | +            BigDecimal ancestorQuota = profit[2];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              // 合赢将: 毛利 * 0.08
 | 
	
		
			
				|  |  |              BigDecimal bonusQuota = grossProfit.multiply(new BigDecimal(orderPercentageDO.getGrossProfitBonusQuotaPerc())).setScale(4, RoundingMode.DOWN);
 | 
	
	
		
			
				|  | @@ -241,7 +243,7 @@ public class OrderCalcServiceImpl implements OrderCalcService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              // 乘以 10000 并转换为整数
 | 
	
		
			
				|  |  |              Long grossProfitInt = grossProfit.multiply(new BigDecimal("10000")).setScale(0, RoundingMode.DOWN).longValue();
 | 
	
		
			
				|  |  | -            Long ancestorQuotaInt = ancestorQuota.multiply(new BigDecimal("10000")).setScale(0, RoundingMode.DOWN).longValue();
 | 
	
		
			
				|  |  | +            Long ancestorQuotaInt = ancestorQuota.longValue();
 | 
	
		
			
				|  |  |              Long descendantQuotaInt = descendantQuota.longValue();
 | 
	
		
			
				|  |  |              Long bonusQuotaInt = bonusQuota.multiply(new BigDecimal("10000")).setScale(0, RoundingMode.DOWN).longValue();
 | 
	
		
			
				|  |  |              Long highQuotaInt = highQuota.multiply(new BigDecimal("10000")).setScale(0, RoundingMode.DOWN).longValue();
 | 
	
	
		
			
				|  | @@ -252,9 +254,9 @@ public class OrderCalcServiceImpl implements OrderCalcService {
 | 
	
		
			
				|  |  |              // 获取当前下单人关系
 | 
	
		
			
				|  |  |              SharePathDO sharePath = getSharePath(k.getUserId());
 | 
	
		
			
				|  |  |              // 如果sharePath为空, 则说明没有直推人关系
 | 
	
		
			
				|  |  | -            IntegralDO integralDOAncestor = integralService.selectByUser(sharePath.getAncestor());
 | 
	
		
			
				|  |  | -            IntegralDO integralDO = integralService.selectByUser(sharePath.getDescendant());
 | 
	
		
			
				|  |  | -            IntegralDO ptIntegral = integralService.selectByUser(1L);
 | 
	
		
			
				|  |  | +            IntegralDO integralDOAncestor = integralService.selectByUser(sharePath.getAncestor());      //父级
 | 
	
		
			
				|  |  | +            IntegralDO integralDO = integralService.selectByUser(sharePath.getDescendant());            //自己
 | 
	
		
			
				|  |  | +            IntegralDO ptIntegral = integralService.selectByUser(1L);                         //pt
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              // ========== 身价计算 ==============
 | 
	
	
		
			
				|  | @@ -372,6 +374,8 @@ public class OrderCalcServiceImpl implements OrderCalcService {
 | 
	
		
			
				|  |  |                      .userId(sharePath.getAncestor())
 | 
	
		
			
				|  |  |                      .amount(amount)
 | 
	
		
			
				|  |  |                      .afterAmount(integralDOAncestor.getCurrentQuota())
 | 
	
		
			
				|  |  | +                    .freezeAmount(amount)
 | 
	
		
			
				|  |  | +                    .afterFreezeAmount(integralDOAncestor.getFreezeQuota())
 | 
	
		
			
				|  |  |                      .ancestorQuotaAmount(ptReplenish)
 | 
	
		
			
				|  |  |                      .maxAvailablePointsAmount(-amount)
 | 
	
		
			
				|  |  |                      .afterMaxAvailablePointsAmount(ancestorHighQuota - amount)
 | 
	
	
		
			
				|  | @@ -386,7 +390,7 @@ public class OrderCalcServiceImpl implements OrderCalcService {
 | 
	
		
			
				|  |  |                      .orderNo(k.getNo())
 | 
	
		
			
				|  |  |                      .userId(sharePath.getDescendant())
 | 
	
		
			
				|  |  |                      .amount(descendantQuotaInt)
 | 
	
		
			
				|  |  | -                    .afterAmount(integralDO.getCurrentQuota() + descendantQuotaInt)
 | 
	
		
			
				|  |  | +                    .afterAmount(integralDO.getCurrentQuota())
 | 
	
		
			
				|  |  |                      .freezeAmount(-descendantQuotaInt)
 | 
	
		
			
				|  |  |                      .afterFreezeAmount(integralDO.getFreezeQuota())
 | 
	
		
			
				|  |  |                      .maxAvailablePointsAmount(highQuotaInt)
 | 
	
	
		
			
				|  | @@ -514,6 +518,7 @@ public class OrderCalcServiceImpl implements OrderCalcService {
 | 
	
		
			
				|  |  |          // 减少推荐人的可获取额度
 | 
	
		
			
				|  |  |          integralDOAncestor.setHighQuota(integralDOAncestor.getHighQuota() - ancestorQuota);
 | 
	
		
			
				|  |  |          integralDOAncestor.setAncestorQuota(integralDOAncestor.getAncestorQuota() + ancestorQuota);
 | 
	
		
			
				|  |  | +        integralDOAncestor.setFreezeQuota(integralDOAncestor.getFreezeQuota() - ancestorQuota);
 | 
	
		
			
				|  |  |          integralService.updateIntegral(BeanUtils.toBean(integralDOAncestor, IntegralSaveReqVO.class));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 增加平台额度
 |