| 
					
				 | 
			
			
				@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.metadata.IPage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.config.HuifuConfiguration; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.enums.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.constant.SysConfigConstant; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dto.req.OrderPayReq; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -11,10 +12,6 @@ import com.yonge.cooleshow.biz.dal.dto.req.OrderReq; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.entity.UserOrderDetail; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.entity.UserOrder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.entity.UserOrderPayment; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.yonge.cooleshow.biz.dal.enums.OrderTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.yonge.cooleshow.biz.dal.enums.PayChannelEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.yonge.cooleshow.biz.dal.enums.PayStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.sdk.PaymentSdk; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.sdk.req.DeviceInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.sdk.req.PaymentReq; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -59,26 +56,28 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private IdGeneratorService idGeneratorService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //验证订单是否可以下单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private static final Map<OrderTypeEnum, Function<OrderReq, HttpResponseResult<OrderCreateRes>>> orderCreate = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static final Map<GoodTypeEnum, Function<OrderReq.OrderReqInfo, HttpResponseResult<OrderCreateRes>>> orderCreate = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //插入订单后执行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private static final Map<OrderTypeEnum, Consumer<UserOrderVo>> orderAfter = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static final Map<GoodTypeEnum, Consumer<UserOrderDetailVo>> orderAfter = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //订单完成后执行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private static final Map<OrderTypeEnum, Consumer<UserOrderVo>> orderSuccess = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static final Map<GoodTypeEnum, Consumer<UserOrderDetailVo>> orderSuccess = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //订单取消后执行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private static final Map<OrderTypeEnum, Consumer<UserOrderVo>> orderCancel = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static final Map<GoodTypeEnum, Consumer<UserOrderDetailVo>> orderCancel = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @PostConstruct 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private void init() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /**********订单生成前******************/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //vip开通缴费 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderCreate.put(OrderTypeEnum.VIP, vipCardService::orderCreate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCreate.put(GoodTypeEnum.VIP, vipCardService::orderCreate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /**********订单生成后******************/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //orderAfter.put(OrderTypeEnum.VIP, vipCardService::orderAfter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /**********订单完成后******************/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //vip开通缴费 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderSuccess.put(OrderTypeEnum.VIP, vipCardService::orderSuccess); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderSuccess.put(GoodTypeEnum.VIP, vipCardService::orderSuccess); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /**********订单取消后******************/ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -89,7 +88,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public UserOrderVo detail(Long id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         UserOrderVo userOrderVo = baseMapper.detailById(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (null != userOrderVo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            userOrderVo.setOrderDetail(orderDetailService.detail(userOrderVo.getOrderNo())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            userOrderVo.setOrderDetailList(orderDetailService.getOrderDetilListByOrderNo(userOrderVo.getOrderNo())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return userOrderVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -98,7 +97,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public UserOrderVo detail(String orderNo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         UserOrderVo userOrderVo = baseMapper.detailByOrderNo(orderNo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (null != userOrderVo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            userOrderVo.setOrderDetail(orderDetailService.detail(userOrderVo.getOrderNo())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            userOrderVo.setOrderDetailList(orderDetailService.getOrderDetilListByOrderNo(userOrderVo.getOrderNo())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return userOrderVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -118,27 +117,36 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public HttpResponseResult<UserOrder> executeOrder(OrderReq orderReq) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         log.info("订单[创建订单] Req:{}", JSONObject.toJSONString(orderReq)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //验证参数,必须验证参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Function<OrderReq, HttpResponseResult<OrderCreateRes>> checkFunction = orderCreate.get(orderReq.getOrderType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (Objects.isNull(checkFunction)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return HttpResponseResult.failed("订单商品信息获取失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        HttpResponseResult<OrderCreateRes> checkResult = checkFunction.apply(orderReq); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        OrderCreateRes createRes = checkResult.getData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!checkResult.getStatus() || null == createRes || !createRes.getRes()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            log.info("订单[创建订单] Res:{}", JSONObject.toJSONString(checkResult)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return HttpResponseResult.failed("订单商品信息获取失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!checkPositiveOrZero(createRes.getOriginalPrice()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                || !checkPositiveOrZero(createRes.getExpectPrice()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return HttpResponseResult.failed("金额校验失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<OrderCreateRes> resList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (OrderReq.OrderReqInfo info : orderReq.getOrderInfos()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Function<OrderReq.OrderReqInfo, HttpResponseResult<OrderCreateRes>> createFunction = orderCreate.get(info.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (Objects.isNull(createFunction)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return HttpResponseResult.failed("订单商品信息获取失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            info.setUserId(orderReq.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            HttpResponseResult<OrderCreateRes> createResult = createFunction.apply(info); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            OrderCreateRes createRes = createResult.getData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            createRes.setGoodType(info.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!createResult.getStatus() || null == createRes || !createRes.getRes()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                log.info("订单[创建订单] Res:{}", JSONObject.toJSONString(createResult)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return HttpResponseResult.failed("订单商品信息获取失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            resList.add(createRes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //验证成功后,订单入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        UserOrderVo orderVo = insertOrder(orderReq, checkResult.getData()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UserOrderVo orderVo = insertOrder(orderReq, resList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<UserOrderDetailVo> orderDetailList = orderVo.getOrderDetailList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(UserOrderDetailVo orderDetailVo : orderDetailList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetailVo.setUserId(orderReq.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetailVo.setOrderId(orderVo.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Consumer<UserOrderVo> afterFunction = orderAfter.get(orderReq.getOrderType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!Objects.isNull(afterFunction)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            afterFunction.accept(orderVo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Consumer<UserOrderDetailVo> afterFunction = orderAfter.get(orderDetailVo.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!Objects.isNull(afterFunction)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                afterFunction.accept(orderDetailVo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return HttpResponseResult.succeed(orderVo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -151,7 +159,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (null == detail || !payReq.getUserId().equals(detail.getUserId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return HttpResponseResult.failed("订单不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (OrderStatusEnum.WAIT_PAY.equals(detail.getStatus())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (OrderStatusEnum.WAIT_PAY.equals(detail.getStatus()) || OrderStatusEnum.FAIL.equals(detail.getStatus())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //处于待支付状态,需要调用汇付发起付款请求接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return orderPayWaitPay(payReq, detail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else if (OrderStatusEnum.PAYING.equals(detail.getStatus())) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -171,7 +179,9 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 log.error("汇付支付回调,订单未找到。 req is {}", data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (detail.getStatus().equals(OrderStatusEnum.PAYING)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!detail.getStatus().equals(OrderStatusEnum.PAID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    && !detail.getStatus().equals(OrderStatusEnum.WAIT_PAY) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    && !detail.getStatus().equals(OrderStatusEnum.CLOSE)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 orderSuccess(detail, hfRes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 log.error("汇付支付回调,订单状态异常。 req is {}", data); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -186,6 +196,9 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<UserOrderVo> orderList = baseMapper.selectPendingList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (UserOrderVo userOrder : orderList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //待支付订单直接取消 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (OrderStatusEnum.FAIL.equals(userOrder.getStatus())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                failPayOrderHandle(userOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (OrderStatusEnum.WAIT_PAY.equals(userOrder.getStatus())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 waitPayOrderHandle(userOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -196,6 +209,16 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /*** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 处理支付失败订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @author liweifan 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param: userOrder 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @updateTime 2022/4/13 16:51 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void failPayOrderHandle(UserOrderVo userOrder) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orderCancel(userOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /*** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 处理待支付订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @author liweifan 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @param: userOrder 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -263,15 +286,24 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             paymentReq.setExpend(expend); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //付款请求 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<String, Object> res = paymentSdk.executePayment(paymentReq); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        OrderPayRes orderPayRes = new OrderPayRes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderPayRes.setPay_amt(detail.getActualPrice().setScale(2).toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String pay_info = ((JSONObject) res.get("expend")).getString("pay_info"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderPayRes.setPay_info(pay_info); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //入订单付款表,同时修改订单状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        insertOrderPayment(res, payReq); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return HttpResponseResult.succeed(orderPayRes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HttpResponseResult<Map<String, Object>> responseResult = paymentSdk.executePayment(paymentReq); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (responseResult.getStatus()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            OrderPayRes orderPayRes = new OrderPayRes(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderPayRes.setPay_amt(detail.getActualPrice().setScale(2).toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String pay_info = ((JSONObject) responseResult.getData().get("expend")).getString("pay_info"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderPayRes.setPay_info(pay_info); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //入订单付款表,同时修改订单状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            insertOrderPayment(responseResult, payReq); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            baseMapper.updateStatusByOrderNo(payReq.getOrderNo(), OrderStatusEnum.PAYING.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return HttpResponseResult.succeed(orderPayRes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //入订单付款表,同时修改订单状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            insertOrderPayment(responseResult, payReq); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            baseMapper.updateStatusByOrderNo(payReq.getOrderNo(), OrderStatusEnum.FAIL.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return HttpResponseResult.failed(responseResult.getMsg()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /*** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -282,19 +314,23 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @updateTime 2022/4/13 17:56 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @return: com.yonge.cooleshow.biz.dal.entity.UserOrderPayment 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private UserOrderPayment insertOrderPayment(Map<String, Object> res, OrderPayReq payReq) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private UserOrderPayment insertOrderPayment(HttpResponseResult<Map<String, Object>> responseResult, OrderPayReq payReq) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         UserOrderPayment orderPayment = new UserOrderPayment(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         orderPayment.setOrderNo(payReq.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         orderPayment.setPayChannel(payReq.getPayChannel()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderPayment.setTransNo(res.get("id").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderPayment.setPayAmt( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                new BigDecimal(res.get("pay_amt").toString()).setScale(2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String pay_info = ((JSONObject) res.get("expend")).getString("pay_info"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderPayment.setPayInfo(pay_info); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderPayment.setStatus(PayStatusEnum.pending); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (responseResult.getStatus()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<String, Object> res = responseResult.getData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderPayment.setTransNo(res.get("id").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderPayment.setPayAmt( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    new BigDecimal(res.get("pay_amt").toString()).setScale(2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String pay_info = ((JSONObject) res.get("expend")).getString("pay_info"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderPayment.setPayInfo(pay_info); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderPayment.setStatus(PayStatusEnum.pending); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderPayment.setPayFailMsg(responseResult.getMsg()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderPayment.setStatus(PayStatusEnum.failed); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         orderPaymentService.save(orderPayment); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return orderPayment; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -326,52 +362,65 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @updateTime 2022/3/31 16:15 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @return: com.yonge.cooleshow.biz.dal.entity.Order 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private UserOrderVo insertOrder(OrderReq orderReq, OrderCreateRes data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private UserOrderVo insertOrder(OrderReq orderReq, List<OrderCreateRes> resList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         UserOrder userOrder = new UserOrder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //订单号生成 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Long orderNo = idGeneratorService.generatorId("userOrder"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setOrderNo(orderNo.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setUserId(orderReq.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        userOrder.setMerchId(data.getMerchId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setOrderName(orderReq.getOrderName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userOrder.setOrderType(orderReq.getOrderType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setOrderDesc(orderReq.getOrderDesc()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setStatus(OrderStatusEnum.WAIT_PAY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        userOrder.setOriginalPrice(data.getOriginalPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        userOrder.setExpectPrice(data.getExpectPrice()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userOrder.setUserNote(orderReq.getUserNote()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userOrder.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userOrder.setOriginalPrice(new BigDecimal(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userOrder.setExpectPrice(new BigDecimal(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userOrder.setPlantformFee(new BigDecimal(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<UserOrderDetailVo> orderDetailList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (OrderCreateRes res : resList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            UserOrderDetailVo orderDetail = new UserOrderDetailVo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetail.setOrderNo(userOrder.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetail.setMerchId(res.getMerchId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetail.setGoodType(res.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetail.setBizId(res.getBizId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetail.setBizContent(res.getBizContent()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetail.setOriginalPrice(null != res.getOriginalPrice() ? res.getOriginalPrice() : new BigDecimal(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetail.setExpectPrice(null != res.getExpectPrice() ? res.getExpectPrice() : new BigDecimal(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetail.setGoodNum(null != res.getGoodNum() ? res.getGoodNum() : 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //商品单价计算,使用商品原价计算,退费计算公式(退费金额=实际订单金额-(商品单价 * 已经使用商品数)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //其中,已经使用的商品单价按照原价算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetail.setGoodPrice( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    orderDetail.getOriginalPrice().divide(new BigDecimal(orderDetail.getGoodNum())).setScale(2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //平台服务费 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BigDecimal serviceFeeRate = getServiceFeeRate(res.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetail.setPlantformFee(userOrder.getActualPrice().multiply(serviceFeeRate)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetail.setPlantformFeeRate(serviceFeeRate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetail.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetailService.save(orderDetail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetailList.add(orderDetail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            userOrder.setOriginalPrice(userOrder.getOriginalPrice().add(orderDetail.getOriginalPrice())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            userOrder.setExpectPrice(userOrder.getExpectPrice().add(orderDetail.getExpectPrice())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            userOrder.setPlantformFee(userOrder.getPlantformFee().add(orderDetail.getPlantformFee())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //todo 优惠券优惠金额,暂时为0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BigDecimal couponAmount = new BigDecimal(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        userOrder.setActualPrice(data.getExpectPrice().subtract(couponAmount).setScale(2)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        userOrder.setActualPrice(userOrder.getExpectPrice().subtract(couponAmount).setScale(2)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         userOrder.setCouponAmount(couponAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //平台服务费 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        BigDecimal serviceFeeRate = getServiceFeeRate(orderReq.getOrderType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        userOrder.setPlantformFee(userOrder.getActualPrice().multiply(serviceFeeRate)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        userOrder.setPlantformFeeRate(serviceFeeRate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        userOrder.setUserNote(orderReq.getUserNote()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        userOrder.setOrderType(orderReq.getOrderType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        userOrder.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (userOrder.getActualPrice().subtract(orderReq.getActualPrice()).abs() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .compareTo(new BigDecimal(0.01)) > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException("交易金额异常"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         int insert = baseMapper.insert(userOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (insert == 0 || null == userOrder.getId()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new BizException("插入失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        UserOrderDetail orderDetail = new UserOrderDetail(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderDetail.setOrderNo(userOrder.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderDetail.setBizId(data.getBizId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderDetail.setBizContent(data.getBizContent()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (null != data.getGoodNum()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            orderDetail.setGoodNum(data.getGoodNum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //商品单价计算,使用商品原价计算,退费计算公式(退费金额=实际订单金额-(商品单价 * 已经使用商品数)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //其中,已经使用的商品单价按照原价算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderDetail.setGoodPrice( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                data.getOriginalPrice().divide(new BigDecimal(data.getGoodNum())).setScale(2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderDetail.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        orderDetailService.save(orderDetail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         UserOrderVo vo = new UserOrderVo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BeanUtils.copyProperties(vo, userOrder); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -379,7 +428,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new BizException("对象转换失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        vo.setOrderDetail(orderDetail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        vo.setOrderDetailList(orderDetailList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return vo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -390,15 +439,15 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @updateTime 2022/3/31 16:49 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @return: java.math.BigDecimal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private BigDecimal getServiceFeeRate(OrderTypeEnum orderTypeEnum) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private BigDecimal getServiceFeeRate(GoodTypeEnum goodTypeEnum) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String configValue = "0"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (OrderTypeEnum.VIDEO.equals(orderTypeEnum)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (GoodTypeEnum.VIDEO.equals(goodTypeEnum)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             configValue = sysConfigService.findConfigValue(SysConfigConstant.VIDEO_LESSON_SERVICE_FEE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (OrderTypeEnum.PRACTICE.equals(orderTypeEnum)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else if (GoodTypeEnum.PRACTICE.equals(goodTypeEnum)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             configValue = sysConfigService.findConfigValue(SysConfigConstant.PRACTICE_SERVICE_FEE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (OrderTypeEnum.LIVE.equals(orderTypeEnum)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else if (GoodTypeEnum.LIVE.equals(goodTypeEnum)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             configValue = sysConfigService.findConfigValue(SysConfigConstant.LIVE_SERVICE_RATE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (OrderTypeEnum.MUSIC.equals(orderTypeEnum)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else if (GoodTypeEnum.MUSIC.equals(goodTypeEnum)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             configValue = sysConfigService.findConfigValue(SysConfigConstant.MUSIC_SHEET_SERVICE_FEE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return new BigDecimal(configValue).divide(new BigDecimal(100)); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -429,12 +478,18 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (null != orderPayment) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //更新付款单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             orderPayment.setStatus(PayStatusEnum.failed); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderPayment.setPayFailMsg("交易取消"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             orderPaymentService.updateById(orderPayment); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //调用业务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Consumer<UserOrderVo> userOrderVoConsumer = orderCancel.get(userOrder.getOrderType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!Objects.isNull(userOrderVoConsumer)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            userOrderVoConsumer.accept(userOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<UserOrderDetailVo> orderDetailList = orderDetailService.getOrderDetilListByOrderNo(userOrder.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(UserOrderDetailVo orderDetailVo : orderDetailList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetailVo.setUserId(userOrder.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetailVo.setOrderId(userOrder.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //调用业务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Consumer<UserOrderDetailVo> userOrderVoConsumer = orderCancel.get(orderDetailVo.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!Objects.isNull(userOrderVoConsumer)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                userOrderVoConsumer.accept(orderDetailVo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -468,10 +523,16 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         orderPaymentService.updateById(orderPayment); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //调用业务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Consumer<UserOrderVo> userOrderVoConsumer = orderSuccess.get(detail.getOrderType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!Objects.isNull(userOrderVoConsumer)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            userOrderVoConsumer.accept(detail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<UserOrderDetailVo> orderDetailList = orderDetailService.getOrderDetilListByOrderNo(detail.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(UserOrderDetailVo orderDetailVo : orderDetailList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetailVo.setUserId(detail.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orderDetailVo.setOrderId(detail.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //调用业务 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Consumer<UserOrderDetailVo> userOrderVoConsumer = orderSuccess.get(orderDetailVo.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!Objects.isNull(userOrderVoConsumer)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                userOrderVoConsumer.accept(orderDetailVo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |