|  | @@ -126,10 +126,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  			throw new BizException("请选择指导老师");
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		if(Objects.isNull(vipGroup.getVipGroupApplyBaseInfo().getTeacherSchoolId())){
 | 
	
		
			
				|  |  | -			throw new BizException("请设置教学点");
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  	    if(vipGroup.getCourseSchedules().size()!=(vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum()+vipGroup.getVipGroupApplyBaseInfo().getOnlineClassesNum())){
 | 
	
		
			
				|  |  |  	        throw new BizException("建课失败,当前课程存在未排课课程,请调整相关设置");
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -1875,9 +1871,59 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  			return;
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +		VipGroupActivity vipGroupActivity = null;
 | 
	
		
			
				|  |  | +		if(Objects.nonNull(vipGroup.getVipGroupActivityId())){
 | 
	
		
			
				|  |  | +			vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  		BigDecimal surplusCourseNum = new BigDecimal(surplusCourses.size());
 | 
	
		
			
				|  |  |  		BigDecimal surplusCoursesPrice=new BigDecimal(0);
 | 
	
		
			
				|  |  | -		for (CourseSchedule courseSchedule : surplusCourses) {
 | 
	
		
			
				|  |  | +		boolean hasGiveClass=false;
 | 
	
		
			
				|  |  | +		int onlineCourseTimes=0,
 | 
	
		
			
				|  |  | +			offlineCourseTimes=0,
 | 
	
		
			
				|  |  | +			onlineCourseTotalTimes=0,
 | 
	
		
			
				|  |  | +			offlineCourseTotalTimes=0,
 | 
	
		
			
				|  |  | +			giveClassTimes=0;
 | 
	
		
			
				|  |  | +		if(vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING)
 | 
	
		
			
				|  |  | +				&&Objects.nonNull(vipGroupActivity)
 | 
	
		
			
				|  |  | +			&&vipGroupActivity.getType().equals(VipGroupActivityTypeEnum.GIVE_CLASS)
 | 
	
		
			
				|  |  | +			&&surplusCourses.size()>=Integer.parseInt(vipGroupActivity.getAttribute1())){
 | 
	
		
			
				|  |  | +			hasGiveClass=true;
 | 
	
		
			
				|  |  | +			giveClassTimes=Integer.parseInt(vipGroupActivity.getAttribute2());
 | 
	
		
			
				|  |  | +			surplusCourseNum=surplusCourseNum.subtract(new BigDecimal(giveClassTimes));
 | 
	
		
			
				|  |  | +			Map<TeachModeEnum, List<CourseSchedule>> teachModeCourseMap = surplusCourses.stream()
 | 
	
		
			
				|  |  | +					.collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
 | 
	
		
			
				|  |  | +			List<CourseSchedule> onlineCourses=teachModeCourseMap.get(TeachModeEnum.ONLINE);
 | 
	
		
			
				|  |  | +			if(!CollectionUtils.isEmpty(onlineCourses)){
 | 
	
		
			
				|  |  | +				onlineCourseTotalTimes=onlineCourses.size();
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			List<CourseSchedule> offlineCourses=teachModeCourseMap.get(TeachModeEnum.OFFLINE);
 | 
	
		
			
				|  |  | +			if(!CollectionUtils.isEmpty(offlineCourses)){
 | 
	
		
			
				|  |  | +				offlineCourseTotalTimes=offlineCourses.size();
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		for (int i=0;i<surplusCourses.size();i++) {
 | 
	
		
			
				|  |  | +			CourseSchedule courseSchedule=surplusCourses.get(i);
 | 
	
		
			
				|  |  | +			if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
 | 
	
		
			
				|  |  | +				offlineCourseTimes+=1;
 | 
	
		
			
				|  |  | +			}else if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
 | 
	
		
			
				|  |  | +				onlineCourseTimes+=1;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			if(hasGiveClass
 | 
	
		
			
				|  |  | +					&&vipGroup.getGiveTeachMode() == courseSchedule.getTeachMode()){
 | 
	
		
			
				|  |  | +				if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)
 | 
	
		
			
				|  |  | +					&&offlineCourseTimes>(offlineCourseTotalTimes-giveClassTimes)){
 | 
	
		
			
				|  |  | +					continue;
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				if(hasGiveClass
 | 
	
		
			
				|  |  | +						&&vipGroup.getGiveTeachMode() == courseSchedule.getTeachMode()){
 | 
	
		
			
				|  |  | +					if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)
 | 
	
		
			
				|  |  | +							&&onlineCourseTimes>(onlineCourseTotalTimes-giveClassTimes)){
 | 
	
		
			
				|  |  | +						continue;
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  |  			if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
 | 
	
		
			
				|  |  |  				surplusCoursesPrice=surplusCoursesPrice.add(vipGroup.getOfflineClassesUnitPrice());
 | 
	
		
			
				|  |  |  			}else if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
 | 
	
	
		
			
				|  | @@ -1896,7 +1942,15 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  //			courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentForVipGroup(vipGroupId,studentId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			List<CourseScheduleStudentPayment> courseScheduleStudentPayments=new ArrayList<>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			offlineCourseTimes=0;
 | 
	
		
			
				|  |  | +			onlineCourseTimes=0;
 | 
	
		
			
				|  |  |  			for (CourseSchedule vipGroupCourseSchedule : surplusCourses) {
 | 
	
		
			
				|  |  | +				if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
 | 
	
		
			
				|  |  | +					offlineCourseTimes+=1;
 | 
	
		
			
				|  |  | +				}else if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
 | 
	
		
			
				|  |  | +					onlineCourseTimes+=1;
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  |  				CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
 | 
	
		
			
				|  |  |  				courseScheduleStudentPayment.setGroupType(GroupType.VIP);
 | 
	
		
			
				|  |  |  				courseScheduleStudentPayment.setMusicGroupId(vipGroupId.toString());
 | 
	
	
		
			
				|  | @@ -1904,6 +1958,17 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  				courseScheduleStudentPayment.setCourseScheduleId(vipGroupCourseSchedule.getId());
 | 
	
		
			
				|  |  |  				courseScheduleStudentPayment.setUserId(studentId);
 | 
	
		
			
				|  |  |  				courseScheduleStudentPayment.setExpectPrice(avgCourseFee);
 | 
	
		
			
				|  |  | +				if(hasGiveClass
 | 
	
		
			
				|  |  | +						&&vipGroup.getGiveTeachMode() == vipGroupCourseSchedule.getTeachMode()){
 | 
	
		
			
				|  |  | +					if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)
 | 
	
		
			
				|  |  | +							&&offlineCourseTimes>(offlineCourseTotalTimes-giveClassTimes)){
 | 
	
		
			
				|  |  | +						courseScheduleStudentPayment.setExpectPrice(new BigDecimal(0));
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +					if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)
 | 
	
		
			
				|  |  | +							&&onlineCourseTimes>(onlineCourseTotalTimes-giveClassTimes)){
 | 
	
		
			
				|  |  | +						courseScheduleStudentPayment.setExpectPrice(new BigDecimal(0));
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  |  				courseScheduleStudentPayment.setCreateTime(now);
 | 
	
		
			
				|  |  |  				courseScheduleStudentPayment.setUpdateTime(now);
 | 
	
		
			
				|  |  |  				courseScheduleStudentPayments.add(courseScheduleStudentPayment);
 | 
	
	
		
			
				|  | @@ -2058,7 +2123,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  		if(Objects.isNull(sysUserCashAccount)){
 | 
	
		
			
				|  |  |  			throw new BizException("当前用户没有现金账户");
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -		CourseSchedule
 | 
	
		
			
				|  |  |  		vipGroupPayInfo.setBalance(sysUserCashAccount.getBalance());
 | 
	
		
			
				|  |  |  		return  vipGroupPayInfo;
 | 
	
		
			
				|  |  |  	}
 |