|  | @@ -2912,7 +2912,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public void courseAdjust(List<CourseSchedule> newCourseSchedules) {
 | 
	
		
			
				|  |  | -        Date now = new Date();
 | 
	
		
			
				|  |  | +        Date date = new Date();
 | 
	
		
			
				|  |  |  		// 课程信息处理
 | 
	
		
			
				|  |  |  		List<Long> courseScheduleIds = newCourseSchedules.stream().map(CourseSchedule::getId).distinct().collect(Collectors.toList());
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -2936,7 +2936,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |                  newCourseSchedule.setGroupType(oldCourseSchedule.getGroupType());
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            if(CourseStatusEnum.OVER.equals(oldCourseSchedule.getStatus())&&newCourseSchedule.getStartClassTime().compareTo(now)<0){
 | 
	
		
			
				|  |  | +            if(CourseStatusEnum.OVER.equals(oldCourseSchedule.getStatus())&&newCourseSchedule.getStartClassTime().compareTo(date)<0){
 | 
	
		
			
				|  |  |              	throw new BizException("调整无效");
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |              
 | 
	
	
		
			
				|  | @@ -3030,16 +3030,31 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |              if(Objects.isNull(newCourseSchedule.getClassDate())){
 | 
	
		
			
				|  |  |                  newCourseSchedule.setClassDate(oldCourseSchedule.getClassDate());
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if (newCourseSchedule.getStartClassTime().after(now)) {
 | 
	
		
			
				|  |  | +            if (newCourseSchedule.getStartClassTime().after(date)) {
 | 
	
		
			
				|  |  |                  newCourseSchedule.setStatus(CourseStatusEnum.NOT_START);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if (newCourseSchedule.getStartClassTime().before(now) && newCourseSchedule.getEndClassTime().after(now)) {
 | 
	
		
			
				|  |  | +            if (newCourseSchedule.getStartClassTime().before(date) && newCourseSchedule.getEndClassTime().after(date)) {
 | 
	
		
			
				|  |  |                  newCourseSchedule.setStatus(CourseStatusEnum.UNDERWAY);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if (newCourseSchedule.getEndClassTime().before(now)) {
 | 
	
		
			
				|  |  | +            if (newCourseSchedule.getEndClassTime().before(date)) {
 | 
	
		
			
				|  |  |                  newCourseSchedule.setStatus(CourseStatusEnum.OVER);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  | +			if (newCourseSchedule.getType() == CourseScheduleType.PRACTICE) {
 | 
	
		
			
				|  |  | +				PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(newCourseSchedule.getMusicGroupId()));
 | 
	
		
			
				|  |  | +				if (practiceGroup.getType() != TRIAL) {
 | 
	
		
			
				|  |  | +					if (DateUtil.minutesBetween(newCourseSchedule.getStartClassTime(), practiceGroup.getCoursesStartDate()) > 0) {
 | 
	
		
			
				|  |  | +						throw new BizException("调整失败: 调整时间不得早于开课时间");
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +					if (DateUtil.minutesBetween(practiceGroup.getCoursesExpireDate(), newCourseSchedule.getEndClassTime()) > 0) {
 | 
	
		
			
				|  |  | +						throw new BizException("调整失败: 截止时间超过课程有效期");
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +					practiceGroup.setCoursesStartDate(courseScheduleDao.getFirstTime(practiceGroup.getId(),PRACTICE.getCode()));
 | 
	
		
			
				|  |  | +					practiceGroup.setCoursesExpireDate(courseScheduleDao.getLastTime(practiceGroup.getId(),PRACTICE.getCode()));
 | 
	
		
			
				|  |  | +					practiceGroup.setUpdateTime(date);
 | 
	
		
			
				|  |  | +					practiceGroupDao.update(practiceGroup);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //课程冲突检测
 | 
	
	
		
			
				|  | @@ -3058,7 +3073,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  			teacherAttendanceMap.put(ta.getCourseScheduleId(), tas);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		Date date = new Date();
 | 
	
		
			
				|  |  |  		Long courseScheduleId = null;
 | 
	
		
			
				|  |  |  		List<TeacherAttendance> insertTeacherAttendanceList = new ArrayList<TeacherAttendance>();
 | 
	
		
			
				|  |  |  		List<CourseScheduleTeacherSalary> insertCourseScheduleTeacherSalaryList = new ArrayList<CourseScheduleTeacherSalary>();
 | 
	
	
		
			
				|  | @@ -3120,8 +3134,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  					insertTeacherAttendanceList.add(ta);
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  				
 | 
	
		
			
				|  |  | -				//清理学生考勤
 | 
	
		
			
				|  |  | -				studentAttendanceDao.deleteStudentAttendancesByCourse(courseScheduleId);
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			if(newCourseSchedule.getStatus() == CourseStatusEnum.NOT_START && newCourseSchedule.getGroupType() == GroupType.MUSIC){
 | 
	
	
		
			
				|  | @@ -3145,29 +3157,33 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -			if(newCourseSchedule.getStatus() == CourseStatusEnum.NOT_START){
 | 
	
		
			
				|  |  | -                //如果已结束修改成了未开始,需要更新学生考勤记录
 | 
	
		
			
				|  |  | -                studentAttendanceDao.deleteStudentAttendancesByCourse(courseScheduleId);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            if ((newCourseSchedule.getStatus() != oldCourseSchedule.getStatus() && newCourseSchedule.getStatus() == CourseStatusEnum.NOT_START)) {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -				if(newCourseSchedule.getGroupType() == GroupType.MUSIC){
 | 
	
		
			
				|  |  | -					//清理课程作业
 | 
	
		
			
				|  |  | -					courseHomeworkService.delHomwworkByCourseScheduleId(courseScheduleId);
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  			VipGroup vipGroup = vipGroupDao.findByCourseSchedule(courseScheduleId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			if(Objects.nonNull(vipGroup)
 | 
	
		
			
				|  |  |  					&&!VipGroupStatusEnum.PROGRESS.equals(vipGroup.getStatus())
 | 
	
		
			
				|  |  |  					&&!VipGroupStatusEnum.FINISHED.equals(vipGroup.getStatus())){
 | 
	
		
			
				|  |  | -				throw new BizException("非进行中课程组不允许进行此操作");
 | 
	
		
			
				|  |  | +				throw new BizException("非进行中或完成的课程组不允许进行此操作");
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -			if(Objects.nonNull(vipGroup)&&newCourseSchedule.getStartClassTime().after(now)){
 | 
	
		
			
				|  |  | +			if(Objects.nonNull(vipGroup) && newCourseSchedule.getStartClassTime().after(date)){
 | 
	
		
			
				|  |  |  				vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);
 | 
	
		
			
				|  |  | +				vipGroup.setUpdateTime(date);
 | 
	
		
			
				|  |  | +				vipGroupDao.update(vipGroup);
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			if ((newCourseSchedule.getStatus() != oldCourseSchedule.getStatus() && newCourseSchedule.getStatus() == CourseStatusEnum.NOT_START)) {
 | 
	
		
			
				|  |  | +                
 | 
	
		
			
				|  |  | +				//如果已结束修改成了未开始,需要更新学生考勤记录
 | 
	
		
			
				|  |  | +                studentAttendanceDao.deleteStudentAttendancesByCourse(courseScheduleId);
 | 
	
		
			
				|  |  | +                
 | 
	
		
			
				|  |  | +				// 清理课程作业
 | 
	
		
			
				|  |  | +				courseHomeworkService.delHomwworkByCourseScheduleId(courseScheduleId);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				//删除申述
 | 
	
		
			
				|  |  | +				courseScheduleComplaintsDao.delByCourseScheduleId(courseScheduleId);
 | 
	
		
			
				|  |  | +				
 | 
	
		
			
				|  |  | +				//删除评论
 | 
	
		
			
				|  |  | +				courseScheduleReviewDao.delByCourseScheduleId(courseScheduleId);
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			// 计算课程时长
 | 
	
	
		
			
				|  | @@ -3175,11 +3191,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  			int newMinutes = DateUtil.minutesBetween(newCourseSchedule.getStartClassTime(), newCourseSchedule.getEndClassTime());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			// 如果修改了老师、课程类型、课程时长、教学模式,需要修改课酬
 | 
	
		
			
				|  |  | -			if (VIP.equals(newCourseSchedule.getGroupType())||!ListUtil.isEquals(oldTeacherIdList, newTeacherIdList) || newCourseSchedule.getType() != oldCourseSchedule.getType()
 | 
	
		
			
				|  |  | +			if (!ListUtil.isEquals(oldTeacherIdList, newTeacherIdList) || newCourseSchedule.getType() != oldCourseSchedule.getType()
 | 
	
		
			
				|  |  |  					|| newCourseSchedule.getTeachMode() != oldCourseSchedule.getTeachMode() || oldMinutes != newMinutes) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  				Map<Integer, Teacher> teacherMap = null;
 | 
	
		
			
				|  |  |  				Map<Integer, Map<CourseScheduleType, TeacherDefaultMusicGroupSalary>> musicGroupSalaryMap = new HashMap<Integer, Map<CourseScheduleType, TeacherDefaultMusicGroupSalary>>();
 | 
	
		
			
				|  |  | +				Map<Integer, Map<Integer, TeacherDefaultVipGroupSalary>> vipGroupSalaryMap = new HashMap<Integer, Map<Integer, TeacherDefaultVipGroupSalary>>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  				if (newCourseSchedule.getGroupType() == GroupType.MUSIC) {
 | 
	
		
			
				|  |  |  					// 所有教师列表
 | 
	
	
		
			
				|  | @@ -3197,20 +3214,16 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  						musicGroupSalaryMap.put(tdms.getUserId(), map);
 | 
	
		
			
				|  |  |  					}
 | 
	
		
			
				|  |  |  				} else if (newCourseSchedule.getGroupType() == GroupType.VIP) {
 | 
	
		
			
				|  |  | -					//查询这节课每位老师对应的课酬
 | 
	
		
			
				|  |  | -					courseScheduleTeacherSalaryDao.queryTeacherSalary(courseScheduleId);
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -				// 所有老师默认vip课酬
 | 
	
		
			
				|  |  | -				List<TeacherDefaultVipGroupSalary> teacherDefaultVipGroupSalaries = teacherDefaultVipGroupSalaryDao.queryByUserIdList(newTeacherIdList);
 | 
	
		
			
				|  |  | -				Map<Integer, Map<Integer, TeacherDefaultVipGroupSalary>> vipGroupSalaryMap = new HashMap<Integer, Map<Integer, TeacherDefaultVipGroupSalary>>();
 | 
	
		
			
				|  |  | -				for (TeacherDefaultVipGroupSalary tdvs : teacherDefaultVipGroupSalaries) {
 | 
	
		
			
				|  |  | -					Map<Integer, TeacherDefaultVipGroupSalary> map = vipGroupSalaryMap.get(tdvs.getUserId());
 | 
	
		
			
				|  |  | -					if (map == null) {
 | 
	
		
			
				|  |  | -						map = new HashMap<Integer, TeacherDefaultVipGroupSalary>();
 | 
	
		
			
				|  |  | +					// 所有老师默认vip课酬
 | 
	
		
			
				|  |  | +					List<TeacherDefaultVipGroupSalary> teacherDefaultVipGroupSalaries = teacherDefaultVipGroupSalaryDao.queryByUserIdList(newTeacherIdList);
 | 
	
		
			
				|  |  | +					for (TeacherDefaultVipGroupSalary tdvs : teacherDefaultVipGroupSalaries) {
 | 
	
		
			
				|  |  | +						Map<Integer, TeacherDefaultVipGroupSalary> map = vipGroupSalaryMap.get(tdvs.getUserId());
 | 
	
		
			
				|  |  | +						if (map == null) {
 | 
	
		
			
				|  |  | +							map = new HashMap<Integer, TeacherDefaultVipGroupSalary>();
 | 
	
		
			
				|  |  | +						}
 | 
	
		
			
				|  |  | +						map.put(tdvs.getVipGroupCategoryId(), tdvs);
 | 
	
		
			
				|  |  | +						vipGroupSalaryMap.put(tdvs.getUserId(), map);
 | 
	
		
			
				|  |  |  					}
 | 
	
		
			
				|  |  | -					map.put(tdvs.getVipGroupCategoryId(), tdvs);
 | 
	
		
			
				|  |  | -					vipGroupSalaryMap.put(tdvs.getUserId(), map);
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  				// 删除课酬
 | 
	
	
		
			
				|  | @@ -3338,9 +3351,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -			//删除申述
 | 
	
		
			
				|  |  | -			courseScheduleComplaintsDao.delByCourseScheduleIds(courseScheduleIds);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  			// 调整日志
 | 
	
		
			
				|  |  |  			CourseScheduleModifyLog courseScheduleModifyLog = new CourseScheduleModifyLog();
 | 
	
		
			
				|  |  |  			courseScheduleModifyLog.setCourseScheduleId(courseScheduleId);
 | 
	
	
		
			
				|  | @@ -3357,9 +3367,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			insertCourseScheduleModifyLogList.add(courseScheduleModifyLog);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -			if(Objects.nonNull(vipGroup)){
 | 
	
		
			
				|  |  | -				vipGroupDao.update(vipGroup);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		if (insertTeacherAttendanceList.size() > 0) {
 |