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