|  | @@ -411,6 +411,32 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 | 
	
		
			
				|  |  |      @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_CREATE)
 | 
	
		
			
				|  |  |      public TradeOrderDO createOrder(Long userId, AppTradeOrderCreateReqVO createReqVO) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        //校验最大值 start  add by Ben
 | 
	
		
			
				|  |  | +        //查询订单提成比例
 | 
	
		
			
				|  |  | +        QueryWrapper<OrderPercentageDO> queryWrapper = new QueryWrapper<>();
 | 
	
		
			
				|  |  | +        OrderPercentageDO orderPercentageDO = orderPercentageMapper.selectOne(queryWrapper);//表中只有一条记录
 | 
	
		
			
				|  |  | +        /**
 | 
	
		
			
				|  |  | +         * 毛利 = 成本 * 0.38... (推广费用)
 | 
	
		
			
				|  |  | +         */
 | 
	
		
			
				|  |  | +        String grossProfitPerc = orderPercentageDO.getGrossProfitPerc();
 | 
	
		
			
				|  |  | +        float grossProfitPercFloat = Float.parseFloat(grossProfitPerc);
 | 
	
		
			
				|  |  | +        if(grossProfitPercFloat>1){
 | 
	
		
			
				|  |  | +            throw new RuntimeException("商品毛利值,占利润比例异常,达到"+grossProfitPerc+"!!");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        /**
 | 
	
		
			
				|  |  | +         * 购物本人自得 百分比
 | 
	
		
			
				|  |  | +         */
 | 
	
		
			
				|  |  | +        String grossProfitUserQuotaPerc = orderPercentageDO.getGrossProfitUserQuotaPerc();
 | 
	
		
			
				|  |  | +        float grossProfitUserQuotaPercFloat = Float.parseFloat(grossProfitUserQuotaPerc);
 | 
	
		
			
				|  |  | +        if(grossProfitUserQuotaPercFloat>0.5){
 | 
	
		
			
				|  |  | +            throw new RuntimeException("消费本人获得积分,占毛利比例异常,达到"+grossProfitUserQuotaPerc+"!!");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //校验最大值 end
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          // add by Ben 20240314
 | 
	
		
			
				|  |  |          // 4. 查询每个sku对应的店铺ID,并传回页面
 | 
	
		
			
				|  |  |          List<AppTradeOrderSettlementReqVO.Item> productSkuList = createReqVO.getItems();
 | 
	
	
		
			
				|  | @@ -606,70 +632,70 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        boolean caculateFreezeAmount = false;//增加冻结积分
 | 
	
		
			
				|  |  | +//        boolean caculateFreezeAmount = false;//增加冻结积分
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //增加冻结积分这分部分,是订单微信支付成功后,才执行的,下面的代码只是为了测试方便写在这,实际永远不会执行。add by Ben
 | 
	
		
			
				|  |  | -        if(caculateFreezeAmount){
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            //下面这部分,应该是写到订单支付成功的地方的,写在下面这里,只是为了方便测试
 | 
	
		
			
				|  |  | -            //查询订单提成比例
 | 
	
		
			
				|  |  | -            QueryWrapper<OrderPercentageDO> queryWrapper = new QueryWrapper<>();
 | 
	
		
			
				|  |  | -            OrderPercentageDO orderPercentageDO = orderPercentageMapper.selectOne(queryWrapper);//表中只有一条记录
 | 
	
		
			
				|  |  | -            /**
 | 
	
		
			
				|  |  | -             * 毛利 = 成本 * 0.38... (推广费用)
 | 
	
		
			
				|  |  | -             */
 | 
	
		
			
				|  |  | -            String grossProfitPerc = orderPercentageDO.getGrossProfitPerc();
 | 
	
		
			
				|  |  | -            /**
 | 
	
		
			
				|  |  | -             * 推广-推荐人额度 百分比
 | 
	
		
			
				|  |  | -             */
 | 
	
		
			
				|  |  | -            String grossProfitAncestorQuotaPerc = orderPercentageDO.getGrossProfitAncestorQuotaPerc();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            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);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                Long totalFreezeAmount = 0l;//总冻结积分
 | 
	
		
			
				|  |  | -                for (TradeOrderItemDO tradeOrderItemDO : TradeOrderItemList) {
 | 
	
		
			
				|  |  | -                    ProductSkuDO productSkuDO = skuDOMap.get(tradeOrderItemDO.getSkuId());
 | 
	
		
			
				|  |  | -                    //这类商品的总推广费
 | 
	
		
			
				|  |  | -                    Integer promotionExpenses = (productSkuDO.getPrice()-productSkuDO.getCostPrice())
 | 
	
		
			
				|  |  | -                            *tradeOrderItemDO.getCount();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                    //把商品项的推广费,转换为这项商品直推人获得的冻结积分
 | 
	
		
			
				|  |  | -                    Long itemFreezeAmount =
 | 
	
		
			
				|  |  | -                            promotionExpenses2GrossProfitAncestorQuota(promotionExpenses,
 | 
	
		
			
				|  |  | -                                    grossProfitPerc,//毛利 = 成本 * 0.38... (推广费用)
 | 
	
		
			
				|  |  | -                                    grossProfitAncestorQuotaPerc//推广-推荐人额度 百分比
 | 
	
		
			
				|  |  | -                            );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                    //记录用户在此订单项获得的冻结积分
 | 
	
		
			
				|  |  | -                    TradeOrderItemDO toid = new TradeOrderItemDO();
 | 
	
		
			
				|  |  | -                    toid.setId(tradeOrderItemDO.getId());
 | 
	
		
			
				|  |  | -                    toid.setIncreaseIntegral(itemFreezeAmount);
 | 
	
		
			
				|  |  | -                    tradeOrderItemMapper.updateById(toid);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                    totalFreezeAmount+=itemFreezeAmount;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                Long tradeOrderId = order.getId();
 | 
	
		
			
				|  |  | -                String OrderNum =order.getNo();
 | 
	
		
			
				|  |  | -                integralService.updateUserIntegral(userId, CaclEnum.ORDER_PAY_INTEGRAL, payPoints*(-1),totalFreezeAmount,tradeOrderId,OrderNum);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +//        if(caculateFreezeAmount){
 | 
	
		
			
				|  |  | +//
 | 
	
		
			
				|  |  | +//            //下面这部分,应该是写到订单支付成功的地方的,写在下面这里,只是为了方便测试
 | 
	
		
			
				|  |  | +//            //查询订单提成比例
 | 
	
		
			
				|  |  | +//            QueryWrapper<OrderPercentageDO> queryWrapper = new QueryWrapper<>();
 | 
	
		
			
				|  |  | +//            OrderPercentageDO orderPercentageDO = orderPercentageMapper.selectOne(queryWrapper);//表中只有一条记录
 | 
	
		
			
				|  |  | +//            /**
 | 
	
		
			
				|  |  | +//             * 毛利 = 成本 * 0.38... (推广费用)
 | 
	
		
			
				|  |  | +//             */
 | 
	
		
			
				|  |  | +//            String grossProfitPerc = orderPercentageDO.getGrossProfitPerc();
 | 
	
		
			
				|  |  | +//            /**
 | 
	
		
			
				|  |  | +//             * 推广-推荐人额度 百分比
 | 
	
		
			
				|  |  | +//             */
 | 
	
		
			
				|  |  | +//            String grossProfitAncestorQuotaPerc = orderPercentageDO.getGrossProfitAncestorQuotaPerc();
 | 
	
		
			
				|  |  | +//
 | 
	
		
			
				|  |  | +//            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);
 | 
	
		
			
				|  |  | +//                }
 | 
	
		
			
				|  |  | +//
 | 
	
		
			
				|  |  | +//                Long totalFreezeAmount = 0l;//总冻结积分
 | 
	
		
			
				|  |  | +//                for (TradeOrderItemDO tradeOrderItemDO : TradeOrderItemList) {
 | 
	
		
			
				|  |  | +//                    ProductSkuDO productSkuDO = skuDOMap.get(tradeOrderItemDO.getSkuId());
 | 
	
		
			
				|  |  | +//                    //这类商品的总推广费
 | 
	
		
			
				|  |  | +//                    Integer promotionExpenses = (productSkuDO.getPrice()-productSkuDO.getCostPrice())
 | 
	
		
			
				|  |  | +//                            *tradeOrderItemDO.getCount();
 | 
	
		
			
				|  |  | +//
 | 
	
		
			
				|  |  | +//                    //把商品项的推广费,转换为这项商品直推人获得的冻结积分
 | 
	
		
			
				|  |  | +//                    Long itemFreezeAmount =
 | 
	
		
			
				|  |  | +//                            promotionExpenses2GrossProfitAncestorQuota(promotionExpenses,
 | 
	
		
			
				|  |  | +//                                    grossProfitPerc,//毛利 = 成本 * 0.38... (推广费用)
 | 
	
		
			
				|  |  | +//                                    grossProfitAncestorQuotaPerc//推广-推荐人额度 百分比
 | 
	
		
			
				|  |  | +//                            );
 | 
	
		
			
				|  |  | +//
 | 
	
		
			
				|  |  | +//                    //记录用户在此订单项获得的冻结积分
 | 
	
		
			
				|  |  | +//                    TradeOrderItemDO toid = new TradeOrderItemDO();
 | 
	
		
			
				|  |  | +//                    toid.setId(tradeOrderItemDO.getId());
 | 
	
		
			
				|  |  | +//                    toid.setIncreaseIntegral(itemFreezeAmount);
 | 
	
		
			
				|  |  | +//                    tradeOrderItemMapper.updateById(toid);
 | 
	
		
			
				|  |  | +//
 | 
	
		
			
				|  |  | +//                    totalFreezeAmount+=itemFreezeAmount;
 | 
	
		
			
				|  |  | +//                }
 | 
	
		
			
				|  |  | +//
 | 
	
		
			
				|  |  | +//                Long tradeOrderId = order.getId();
 | 
	
		
			
				|  |  | +//                String OrderNum =order.getNo();
 | 
	
		
			
				|  |  | +//                integralService.updateUserIntegral(userId, CaclEnum.ORDER_PAY_INTEGRAL, payPoints*(-1),totalFreezeAmount,tradeOrderId,OrderNum);
 | 
	
		
			
				|  |  | +//            }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +//        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          return virtualOrder;
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -836,8 +862,11 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
 | 
	
		
			
				|  |  |           * 毛利 = 成本 * 0.38... (推广费用)
 | 
	
		
			
				|  |  |           */
 | 
	
		
			
				|  |  |          String grossProfitPerc = orderPercentageDO.getGrossProfitPerc();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          /**
 | 
	
		
			
				|  |  | -         * 推广-推荐人额度 百分比
 | 
	
		
			
				|  |  | +         * 购物本人自得 百分比
 | 
	
		
			
				|  |  |           */
 | 
	
		
			
				|  |  |          String grossProfitUserQuotaPerc = orderPercentageDO.getGrossProfitUserQuotaPerc();
 | 
	
		
			
				|  |  |  
 |