| 
					
				 | 
			
			
				@@ -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(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -609,67 +635,67 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         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(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |