| 
					
				 | 
			
			
				@@ -199,7 +199,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return HttpResponseResult.failed("订单已关闭"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //关闭或完成订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        closeOrSuccessOrder(payReq.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        closeOrSuccessOrder(payReq.getOrderNo(), StringUtil.isEmpty(payReq.getReason()) ? "订单取消" : payReq.getReason()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return HttpResponseResult.succeed(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -380,7 +380,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<UserOrderVo> payingOrderList = baseMapper.selectPendingList(search); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (UserOrderVo orderVo : payingOrderList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //取消订单要获取锁,防止在轮询取消时,用户修改订单状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            boolean b = DistributedLock.of(redissonClient) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DistributedLock.of(redissonClient) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     .runIfLockCanGet(CacheNameEnum.LOCK_EXECUTE_ORDER.getRedisKey(orderVo.getOrderNo()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             , () -> pollingCancelOrder(orderVo.getOrderNo()), 60L, TimeUnit.SECONDS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -388,10 +388,10 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     void pollingCancelOrder(String orderNo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        closeOrSuccessOrder(orderNo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        closeOrSuccessOrder(orderNo, "订单超时"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void closeOrSuccessOrder(String orderNo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void closeOrSuccessOrder(String orderNo, String reason) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         UserOrderVo detail = detail(orderNo, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (null == detail) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -403,7 +403,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         UserOrderPayment userOrderPayment = orderPaymentService.detailByTransNoOrPaymentNo(detail.getTransNo(), detail.getPaymentNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (null == userOrderPayment) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //关闭订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            doOrderCancel(detail, OrderStatusEnum.CLOSE, "订单超时"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            doOrderCancel(detail, OrderStatusEnum.CLOSE, reason); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else if (TradeStatusEnum.pending.equals(userOrderPayment.getStatus())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Payment param = new Payment(detail.getOpenType(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     PaymentClientEnum.valueOf(userOrderPayment.getPaymentClient()), detail.getPayChannel()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -435,10 +435,10 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 orderPaymentService.updateById(userOrderPayment); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //关闭订单付款单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Boolean close = orderPaymentService.closePaymentAndReqOpen(orderNo, "订单超时"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Boolean close = orderPaymentService.closePaymentAndReqOpen(orderNo, reason); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (close) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //关闭订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    doOrderCancel(detail, OrderStatusEnum.CLOSE, "订单超时"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    doOrderCancel(detail, OrderStatusEnum.CLOSE, reason); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else if (TradeStatusEnum.succeeded.equals(userOrderPayment.getStatus())) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -449,7 +449,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             doOrderCancel(detail, OrderStatusEnum.FAIL, userOrderPayment.getPayFailMsg()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else if (TradeStatusEnum.close.equals(userOrderPayment.getStatus())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //关闭订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            doOrderCancel(detail, OrderStatusEnum.CLOSE, "订单超时"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            doOrderCancel(detail, OrderStatusEnum.CLOSE, reason); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -659,6 +659,8 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             configValue = sysConfigService.findConfigValue(SysConfigConstant.GOOD_LOGO_MUSIC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else if (GoodTypeEnum.PINAO_ROOM.equals(goodTypeEnum)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             configValue = sysConfigService.findConfigValue(SysConfigConstant.GOOD_LOGO_PIANO_ROOM); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else if (GoodTypeEnum.ACTI_REGIST.equals(goodTypeEnum)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            configValue = sysConfigService.findConfigValue(SysConfigConstant.GOOD_LOGO_ACTI_REGIST); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return configValue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -816,15 +818,11 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 platformCashAccountRecord = new PlatformCashAccountRecord(orderDetailVo.getUserId(), platformFee, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         InOrOutEnum.IN, PostStatusEnum.RECORDED, AccountBizTypeEnum.PIAON_ROOM, orderDetailVo.getBizId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         orderDetailVo.getOrderNo(), accountPeriodTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }else if (GoodTypeEnum.ACTI_REGIST.equals(orderDetailVo.getGoodType())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                AccountBizTypeEnum bizTypeEnum = AccountBizTypeEnum.valueOf(orderDetailVo.getGoodType().getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                platformCashAccountRecord = new PlatformCashAccountRecord(orderDetailVo.getUserId(), platformFee, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        InOrOutEnum.IN, PostStatusEnum.RECORDED, bizTypeEnum, orderDetailVo.getBizId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        orderDetailVo.getOrderNo(), accountPeriodTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 AccountBizTypeEnum bizTypeEnum = AccountBizTypeEnum.valueOf(orderDetailVo.getGoodType().getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 platformCashAccountRecord = new PlatformCashAccountRecord(orderDetailVo.getUserId(), platformFee, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        InOrOutEnum.IN, PostStatusEnum.WAIT, bizTypeEnum, orderDetailVo.getBizId(), orderDetailVo.getOrderNo(), accountPeriodTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        InOrOutEnum.IN, PostStatusEnum.WAIT, bizTypeEnum, orderDetailVo.getBizId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        orderDetailVo.getOrderNo(), accountPeriodTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             platformCashAccountRecordService.save(platformCashAccountRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -833,7 +831,8 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (null != orderDetailVo.getRecomUserId() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 && !orderDetailVo.getRecomUserId().equals(orderDetailVo.getMerchId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //获取分润收益费率 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal shareFeeRate = getShareFreeByGoodType(orderDetailVo.getGoodType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BigDecimal shareFeeRate = getShareFreeByGoodType(orderDetailVo.getGoodType() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    , orderDetailVo.getBizId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //入老师账户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BigDecimal shareFee = expectPrice.multiply(shareFeeRate).setScale(2, RoundingMode.HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (shareFee.compareTo(BigDecimal.ZERO) > 0) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -867,10 +866,6 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (GoodTypeEnum.VIP.equals(goodType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.VIP_ACCOUNT_PERIOD))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (GoodTypeEnum.VIDEO.equals(goodType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.VIDEO_ACCOUNT_PERIOD))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (GoodTypeEnum.MUSIC.equals(goodType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.MUSIC_ACCOUNT_PERIOD))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else if (GoodTypeEnum.PRACTICE.equals(goodType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.PRACTICE_ACCOUNT_PERIOD))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else if (GoodTypeEnum.LIVE.equals(goodType)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -878,6 +873,12 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             CourseGroup byId = courseGroupService.getById(orderDetailVo.getBizId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             instance.setTime(byId.getSalesEndDate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.LIVE_ACCOUNT_PERIOD))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else if (GoodTypeEnum.VIDEO.equals(goodType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.VIDEO_ACCOUNT_PERIOD))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else if (GoodTypeEnum.MUSIC.equals(goodType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.MUSIC_ACCOUNT_PERIOD))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else if (GoodTypeEnum.ACTI_REGIST.equals(goodType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            instance.add(Calendar.DAY_OF_MONTH, Integer.parseInt(sysConfigService.findConfigValue(SysConfigConstant.ACTI_REGIST_ACCOUNT_PERIOD))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return instance.getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -889,7 +890,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public BigDecimal getShareFreeByGoodType(GoodTypeEnum goodType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public BigDecimal getShareFreeByGoodType(GoodTypeEnum goodType, Long bizId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (GoodTypeEnum.VIP.equals(goodType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return getShareFreeByConfigName(SysConfigConstant.VIP_SHARE_FEE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -902,6 +903,13 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (GoodTypeEnum.MUSIC.equals(goodType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return getShareFreeByConfigName(SysConfigConstant.MUSIC_SHARE_FEE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (GoodTypeEnum.ACTI_REGIST.equals(goodType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取当前活动的分润比例 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ActivityPlan byId = activityPlanService.getById(bizId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (null != byId && null != byId.getShareRate()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return byId.getShareRate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -919,7 +927,8 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private BigDecimal getPlatformFreeByGoodType(GoodTypeEnum goodType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //会员|琴房时长,平台全额收益 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (GoodTypeEnum.VIP.equals(goodType) || GoodTypeEnum.PINAO_ROOM.equals(goodType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (GoodTypeEnum.VIP.equals(goodType) || GoodTypeEnum.PINAO_ROOM.equals(goodType) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                || GoodTypeEnum.ACTI_REGIST.equals(goodType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return BigDecimal.ONE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (GoodTypeEnum.PRACTICE.equals(goodType)) { 
			 |