|  | @@ -976,10 +976,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |  	public void updateVipGroupStudentNumAndStatus(Long vipGroupId , ClassGroup classGroup, Integer num, boolean updateVipStatus) {
 | 
	
		
			
				|  |  | -		VipGroup vipGroup = vipGroupDao.getLockVipGroup(vipGroupId);
 | 
	
		
			
				|  |  | -		if(Objects.isNull(vipGroup)){
 | 
	
		
			
				|  |  | -			throw new BizException("指定的vip课程不存在");
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +//		VipGroup vipGroup = vipGroupDao.getLockVipGroup(vipGroupId);
 | 
	
		
			
				|  |  | +//		if(Objects.isNull(vipGroup)){
 | 
	
		
			
				|  |  | +//			throw new BizException("指定的vip课程不存在");
 | 
	
		
			
				|  |  | +//		}
 | 
	
		
			
				|  |  |  		if(Objects.isNull(classGroup)){
 | 
	
		
			
				|  |  |  			throw new BizException("未找到关联班级");
 | 
	
		
			
				|  |  |  		}
 | 
	
	
		
			
				|  | @@ -994,9 +994,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  		if(studentPaymentNum.equals(classGroup.getExpectStudentNum())&&updateVipStatus){
 | 
	
		
			
				|  |  |  			classGroup.setStudentNum(studentPaymentNum);
 | 
	
		
			
				|  |  |  			classGroup.setDelFlag(0);
 | 
	
		
			
				|  |  | -			vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
 | 
	
		
			
				|  |  |  			createVipGroupCourseScheInfo(vipGroupId,classGroup);
 | 
	
		
			
				|  |  | -			vipGroupDao.update(vipGroup);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		if(num!=0||updateVipStatus){
 | 
	
		
			
				|  |  |  			int i = courseScheduleDao.countVipGroupCourses(vipGroupId.intValue());
 | 
	
	
		
			
				|  | @@ -1050,8 +1048,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  | +	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |  	public Map buyVipGroup(VipGroupBuyParamsDto vipGroupBuyParams) {
 | 
	
		
			
				|  |  |  		SysUser user = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  |  		if(user == null){
 | 
	
	
		
			
				|  | @@ -1292,7 +1290,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  		HashSet<Integer> hashSet = new HashSet<>(organIds);
 | 
	
		
			
				|  |  |  		String organIdsString = StringUtils.join(hashSet, ",");
 | 
	
		
			
				|  |  |  		vipGroup.setOrganIdList(organIdsString);
 | 
	
		
			
				|  |  | -		vipGroupDao.update(vipGroup);
 | 
	
		
			
				|  |  | +		if(classGroup.getExpectStudentNum().equals(classGroup.getStudentNum())){
 | 
	
		
			
				|  |  | +			vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		update(vipGroup);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		try {
 | 
	
		
			
				|  |  |  			contractService.transferVipGroupCoursesContract(userId,vipGroupId);
 | 
	
	
		
			
				|  | @@ -1351,7 +1352,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |          if(Objects.isNull(surplusCourseFee)){
 | 
	
		
			
				|  |  |              surplusCourseFee = new BigDecimal(0);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        surplusCourseFee = surplusCourseFee.multiply(new BigDecimal(0.8)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | +        VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupCategoryId().intValue());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if(vipGroupCategory.getStudentNum()<=1){
 | 
	
		
			
				|  |  | +            surplusCourseFee = surplusCourseFee.multiply(new BigDecimal(0.8)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | +        }else{
 | 
	
		
			
				|  |  | +            surplusCourseFee = surplusCourseFee.multiply(new BigDecimal(0.7)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  		studentApplyRefunds.setExpectAmount(surplusCourseFee);
 | 
	
		
			
				|  |  |  		studentApplyRefunds.setStatus(StudentApplyRefundsStatus.ING);
 | 
	
		
			
				|  |  |  		String orderNo=StringUtils.join(new String[]{userId.toString(),String.valueOf(System.currentTimeMillis())});
 | 
	
	
		
			
				|  | @@ -1744,52 +1752,19 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  		if(Objects.isNull(bigDecimal)){
 | 
	
		
			
				|  |  |  			bigDecimal = new BigDecimal(0);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -		bigDecimal = bigDecimal.multiply(new BigDecimal(0.8)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupCategoryId().intValue());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		if(vipGroupCategory.getStudentNum()<=1){
 | 
	
		
			
				|  |  | +            bigDecimal = bigDecimal.multiply(new BigDecimal(0.8)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | +        }else{
 | 
	
		
			
				|  |  | +            bigDecimal = bigDecimal.multiply(new BigDecimal(0.7)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  		result.put("suplusCourseFee", bigDecimal);
 | 
	
		
			
				|  |  |  		return result;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -//	@Override
 | 
	
		
			
				|  |  | -//	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -//	public Map<String, BigDecimal> getStudentSurplusCourseFee(Long vipGroupId, Integer studentId) {
 | 
	
		
			
				|  |  | -//		if(Objects.isNull(vipGroupId)||Objects.isNull(studentId)){
 | 
	
		
			
				|  |  | -//			throw new BizException("请指定课程和学生");
 | 
	
		
			
				|  |  | -//		}
 | 
	
		
			
				|  |  | -//		VipGroup vipGroup = vipGroupDao.get(vipGroupId);
 | 
	
		
			
				|  |  | -//		if(Objects.isNull(vipGroup)){
 | 
	
		
			
				|  |  | -//			throw new BizException("未找到指定vip课");
 | 
	
		
			
				|  |  | -//		}
 | 
	
		
			
				|  |  | -//		if(vipGroup.getStatus().equals(VipGroupStatusEnum.CANCEL)){
 | 
	
		
			
				|  |  | -//			throw new BizException("不能对已停止的课程进行退课操作");
 | 
	
		
			
				|  |  | -//		}
 | 
	
		
			
				|  |  | -//		Map<String,BigDecimal> result=new HashMap<>();
 | 
	
		
			
				|  |  | -//		if(vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING)){
 | 
	
		
			
				|  |  | -//			StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, studentId, DealStatusEnum.SUCCESS.getCode());
 | 
	
		
			
				|  |  | -//			if(Objects.isNull(studentPaymentOrder)){
 | 
	
		
			
				|  |  | -//				BigDecimal surplusCourseFee = studentPaymentOrderDao.sumSurplusCourseFee(vipGroupId.toString(), studentId);
 | 
	
		
			
				|  |  | -//				if(Objects.isNull(surplusCourseFee)){
 | 
	
		
			
				|  |  | -//					result.put("suplusCourseFee",new BigDecimal(0));
 | 
	
		
			
				|  |  | -//				}else{
 | 
	
		
			
				|  |  | -//					result.put("suplusCourseFee",surplusCourseFee);
 | 
	
		
			
				|  |  | -//				}
 | 
	
		
			
				|  |  | -//			}else{
 | 
	
		
			
				|  |  | -//				result.put("suplusCourseFee",studentPaymentOrder.getActualAmount());
 | 
	
		
			
				|  |  | -//			}
 | 
	
		
			
				|  |  | -//			return result;
 | 
	
		
			
				|  |  | -//		}
 | 
	
		
			
				|  |  | -//		ClassGroup classGroup = classGroupDao.findByVipGroup(vipGroupId, null);
 | 
	
		
			
				|  |  | -//		if(Objects.isNull(classGroup)){
 | 
	
		
			
				|  |  | -//			throw new BizException("未找到对应班级");
 | 
	
		
			
				|  |  | -//		}
 | 
	
		
			
				|  |  | -//		BigDecimal bigDecimal = courseScheduleStudentPaymentDao.countSurplusCourseFee(classGroup.getId(), studentId);
 | 
	
		
			
				|  |  | -//		if(Objects.isNull(bigDecimal)){
 | 
	
		
			
				|  |  | -//			bigDecimal = new BigDecimal(0);
 | 
	
		
			
				|  |  | -//		}
 | 
	
		
			
				|  |  | -//		bigDecimal = bigDecimal.multiply(new BigDecimal(0.8)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | -//		result.put("suplusCourseFee", bigDecimal);
 | 
	
		
			
				|  |  | -//		return result;
 | 
	
		
			
				|  |  | -//	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	public void applyRefundAudit(Long id, StudentApplyRefundsStatus status, String remark,BigDecimal amount) {
 |