|  | @@ -2659,7 +2659,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              PracticeGroup userLatestPracticeGroup = practiceGroupDao.findUserPracticeGroup(practiceGroupBuyParams.getStudentId(),practiceGroupBuyParams.getGroupId());
 | 
	
		
			
				|  |  |              if(Objects.nonNull(userLatestPracticeGroup)){
 | 
	
		
			
				|  |  | -                if(userLatestPracticeGroup.getGroupStatus().equals(GroupStatusEnum.NORMAL)&&userLatestPracticeGroup.getCoursesExpireDate().before(now)){
 | 
	
		
			
				|  |  | +                if(!userLatestPracticeGroup.getGroupStatus().equals(GroupStatusEnum.NORMAL)||userLatestPracticeGroup.getCoursesExpireDate().before(now)){
 | 
	
		
			
				|  |  |                      throw new BizException("当前课程组已经无法续费,请选择购买");
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  LocalDate lastExpiredDay=LocalDateTime.ofInstant(userLatestPracticeGroup.getCoursesExpireDate().toInstant(),DateUtil.zoneId).toLocalDate();
 | 
	
	
		
			
				|  | @@ -3001,20 +3001,8 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 | 
	
		
			
				|  |  |          Map<DealStatusEnum, Long> statusOrderNumMap = userGroupOrders.stream().collect(Collectors.groupingBy(StudentPaymentOrder::getStatus, Collectors.counting()));
 | 
	
		
			
				|  |  |          Long successOrderNum=statusOrderNumMap.get(DealStatusEnum.SUCCESS);
 | 
	
		
			
				|  |  |          if(Objects.nonNull(successOrderNum)&&successOrderNum>0){
 | 
	
		
			
				|  |  | -            if(order.getStatus().equals(DealStatusEnum.FAILED)&&Objects.nonNull(order.getBalancePaymentAmount())){
 | 
	
		
			
				|  |  | -                sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "网管课购买失败");
 | 
	
		
			
				|  |  | -                SysUserCashAccountDetail sysUserIncomeCashAccountDetail = new SysUserCashAccountDetail();
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setUserId(order.getUserId());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setAmount(order.getBalancePaymentAmount());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setBalance(sysUserCashAccount.getBalance().add(order.getBalancePaymentAmount()));
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setAttribute(order.getTransNo());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setChannel(studentPaymentOrder.getPaymentChannel());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setComAmount(studentPaymentOrder.getComAmount());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setPerAmount(studentPaymentOrder.getPerAmount());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setDescription("网管课支付失败,退还余额");
 | 
	
		
			
				|  |  | -                sysUserCashAccountDetailService.insert(sysUserIncomeCashAccountDetail);
 | 
	
		
			
				|  |  | +            if(order.getStatus().equals(DealStatusEnum.FAILED)&&Objects.nonNull(order.getBalancePaymentAmount())&&order.getBalancePaymentAmount().compareTo(BigDecimal.ZERO)>0){
 | 
	
		
			
				|  |  | +                sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "网管课支付失败,退还余额");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              studentPaymentOrderDao.update(order);
 | 
	
		
			
				|  |  |              return;
 | 
	
	
		
			
				|  | @@ -3022,20 +3010,8 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          Long ingOrderNum=statusOrderNumMap.get(DealStatusEnum.ING);
 | 
	
		
			
				|  |  |          if(Objects.nonNull(ingOrderNum)&&ingOrderNum>1&&order.getStatus().equals(DealStatusEnum.FAILED)){
 | 
	
		
			
				|  |  | -            if(Objects.nonNull(order.getBalancePaymentAmount())){
 | 
	
		
			
				|  |  | -                sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "网管课购买失败");
 | 
	
		
			
				|  |  | -                SysUserCashAccountDetail sysUserIncomeCashAccountDetail = new SysUserCashAccountDetail();
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setUserId(order.getUserId());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setAmount(order.getBalancePaymentAmount());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setBalance(sysUserCashAccount.getBalance().add(order.getBalancePaymentAmount()));
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setAttribute(order.getTransNo());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setChannel(studentPaymentOrder.getPaymentChannel());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setComAmount(studentPaymentOrder.getComAmount());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setPerAmount(studentPaymentOrder.getPerAmount());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setDescription("网管课支付失败,退还余额");
 | 
	
		
			
				|  |  | -                sysUserCashAccountDetailService.insert(sysUserIncomeCashAccountDetail);
 | 
	
		
			
				|  |  | +            if(Objects.nonNull(order.getBalancePaymentAmount())&&order.getBalancePaymentAmount().compareTo(BigDecimal.ZERO)>0){
 | 
	
		
			
				|  |  | +                sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "网管课支付失败,退还余额");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              studentPaymentOrderDao.update(order);
 | 
	
		
			
				|  |  |              return;
 | 
	
	
		
			
				|  | @@ -3044,20 +3020,8 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 | 
	
		
			
				|  |  |          if(order.getStatus().equals(DealStatusEnum.SUCCESS)){
 | 
	
		
			
				|  |  |              courseScheduleDao.updateGroupCourseLock(order.getMusicGroupId(),GroupType.PRACTICE,0);
 | 
	
		
			
				|  |  |          }else{
 | 
	
		
			
				|  |  | -            if(Objects.nonNull(order.getBalancePaymentAmount())){
 | 
	
		
			
				|  |  | -                sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "网管课购买失败");
 | 
	
		
			
				|  |  | -                SysUserCashAccountDetail sysUserIncomeCashAccountDetail = new SysUserCashAccountDetail();
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setUserId(order.getUserId());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.RECHARGE);
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setAmount(order.getBalancePaymentAmount());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setBalance(sysUserCashAccount.getBalance().add(order.getBalancePaymentAmount()));
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setAttribute(order.getTransNo());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setChannel(studentPaymentOrder.getPaymentChannel());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setComAmount(studentPaymentOrder.getComAmount());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setPerAmount(studentPaymentOrder.getPerAmount());
 | 
	
		
			
				|  |  | -                sysUserIncomeCashAccountDetail.setDescription("网管课支付失败,退还余额");
 | 
	
		
			
				|  |  | -                sysUserCashAccountDetailService.insert(sysUserIncomeCashAccountDetail);
 | 
	
		
			
				|  |  | +            if(Objects.nonNull(order.getBalancePaymentAmount())&&order.getBalancePaymentAmount().compareTo(BigDecimal.ZERO)>0){
 | 
	
		
			
				|  |  | +                sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "网管课支付失败,退还余额");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              studentPaymentOrderDao.update(order);
 | 
	
		
			
				|  |  |              PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(order.getMusicGroupId()));
 | 
	
	
		
			
				|  | @@ -3102,8 +3066,10 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(order.getMusicGroupId()));
 | 
	
		
			
				|  |  |          if(practiceGroup.getGroupStatus().equals(GroupStatusEnum.CANCEL)){
 | 
	
		
			
				|  |  | +            order.setVersion(order.getVersion()+1);
 | 
	
		
			
				|  |  |              order.setMemo("支付成功,在重新支付时,用户选择取消");
 | 
	
		
			
				|  |  |              studentPaymentOrderDao.update(order);
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(order.getMusicGroupId(), GroupType.PRACTICE.getCode());
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -3406,16 +3372,16 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 | 
	
		
			
				|  |  |              if(Objects.isNull(userFreePracticeGroup)){
 | 
	
		
			
				|  |  |                  continue;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(userFreePracticeGroup.getId().toString(), GroupType.PRACTICE.getCode());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            CourseScheduleEvaluate courseScheduleEvaluate = courseScheduleEvaluateDao.findByClassGroupId(classGroup.getId());
 | 
	
		
			
				|  |  | -            if(Objects.isNull(courseScheduleEvaluate)){
 | 
	
		
			
				|  |  | -                continue;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +//            ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(userFreePracticeGroup.getId().toString(), GroupType.PRACTICE.getCode());
 | 
	
		
			
				|  |  | +//
 | 
	
		
			
				|  |  | +//            CourseScheduleEvaluate courseScheduleEvaluate = courseScheduleEvaluateDao.findByClassGroupId(classGroup.getId());
 | 
	
		
			
				|  |  | +//            if(Objects.isNull(courseScheduleEvaluate)){
 | 
	
		
			
				|  |  | +//                continue;
 | 
	
		
			
				|  |  | +//            }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            String pushUrl = baseApiUrl + "/#/reportDetail?classGroupId=" + classGroup.getId();
 | 
	
		
			
				|  |  | +            String pushUrl = baseApiUrl + "/#/reportDetail?classGroupId=" + report.getClassGroupId();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            String smsUrl = baseApiUrl + "/#/transfer?url=" + baseApiUrl + "&hash=reportDetail&classGroupId=" + classGroup.getId();
 | 
	
		
			
				|  |  | +            String smsUrl = baseApiUrl + "/#/transfer?url=" + baseApiUrl + "&hash=reportDetail&classGroupId=" + report.getClassGroupId();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  //            SysUser student = sysUserFeignService.queryUserById(userFreePracticeGroup.getStudentId());
 | 
	
		
			
				|  |  |              SysUser student = teacherDao.getUser(userFreePracticeGroup.getStudentId());
 |