|  | @@ -1415,6 +1415,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          int singleClassMinutes = 0;
 | 
	
		
			
				|  |  |          int courseNum = 0;
 | 
	
		
			
				|  |  | +        Date coursesExpireDate = null;
 | 
	
		
			
				|  |  | +        Date coursesStartDate = null;
 | 
	
		
			
				|  |  |          GroupType groupType = vipGroupCourseAdjustInfo.getGroupType();
 | 
	
		
			
				|  |  |          switch (vipGroupCourseAdjustInfo.getGroupType()){
 | 
	
		
			
				|  |  |              case PRACTICE:
 | 
	
	
		
			
				|  | @@ -1424,6 +1426,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  singleClassMinutes = practiceGroup.getSingleClassMinutes();
 | 
	
		
			
				|  |  |                  courseNum = courseScheduleDao.countVipGroupCourses(practiceGroup.getId().intValue(),groupType.getCode());
 | 
	
		
			
				|  |  | +                coursesExpireDate = practiceGroup.getCoursesExpireDate();
 | 
	
		
			
				|  |  | +                coursesStartDate = practiceGroup.getCoursesStartDate();
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |              default:
 | 
	
		
			
				|  |  |                  VipGroup vipGroup = vipGroupDao.get(vipGroupCourseAdjustInfo.getVipGroupId().longValue());
 | 
	
	
		
			
				|  | @@ -1562,6 +1566,26 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |              calendar.add(Calendar.DATE, 1);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          checkNewCourseSchedules(courseSchedules, false);
 | 
	
		
			
				|  |  | +        //如果是陪练课,调整时间不允许超过有效期
 | 
	
		
			
				|  |  | +        if(groupType == GroupType.PRACTICE){
 | 
	
		
			
				|  |  | +            for (CourseSchedule e:courseSchedules) {
 | 
	
		
			
				|  |  | +                //已点名的不允许调整
 | 
	
		
			
				|  |  | +                List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseId(e.getId());
 | 
	
		
			
				|  |  | +                if(studentAttendances != null && studentAttendances.size() > 0){
 | 
	
		
			
				|  |  | +                    throw new BizException("调整失败: 课程已点名");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                String classDate = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN);
 | 
	
		
			
				|  |  | +                String startClassTime = DateUtil.format(e.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
 | 
	
		
			
				|  |  | +                Date startDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
 | 
	
		
			
				|  |  | +                Date endDateTime = DateUtil.addMinutes(startDateTime,singleClassMinutes);
 | 
	
		
			
				|  |  | +                if(DateUtil.minutesBetween(startDateTime,coursesStartDate) > 0){
 | 
	
		
			
				|  |  | +                    throw new BizException("调整失败: 课程{}调整时间早于有效期",e.getId());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if(DateUtil.minutesBetween(coursesExpireDate,endDateTime) > 0){
 | 
	
		
			
				|  |  | +                    throw new BizException("调整失败: 课程{}截止时间超过课程有效期",e.getId());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          courseScheduleDao.batchUpdate(courseSchedules);
 | 
	
		
			
				|  |  |          classGroupService.updateClassGroupInfo(classGroup.getId());
 | 
	
		
			
				|  |  |          if(vipGroupCourseAdjustInfo.getCourseCreateStartTime().after(now)){
 | 
	
	
		
			
				|  | @@ -3175,13 +3199,18 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |          if(Objects.isNull(courseSchedule.getStartClassTime())){
 | 
	
		
			
				|  |  |              throw new BizException("请指定上课时间");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        CourseSchedule oldCourseSchedule = courseScheduleDao.getSurplusCourseWithGroup(courseScheduleId);
 | 
	
		
			
				|  |  | +        CourseSchedule oldCourseSchedule = courseScheduleDao.get(courseScheduleId);
 | 
	
		
			
				|  |  |          if(Objects.isNull(oldCourseSchedule)){
 | 
	
		
			
				|  |  | -            throw new BizException("调整失败: 课程状态异常");
 | 
	
		
			
				|  |  | +            throw new BizException("课程不存在");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if(!oldCourseSchedule.getGroupType().equals(GroupType.PRACTICE)){
 | 
	
		
			
				|  |  |              throw new BizException("请选择网管课");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        //已点名的不允许调整
 | 
	
		
			
				|  |  | +        List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseId(courseScheduleId);
 | 
	
		
			
				|  |  | +        if(studentAttendances != null && studentAttendances.size() > 0){
 | 
	
		
			
				|  |  | +            throw new BizException("调整失败: 课程已点名");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          //已结算的课酬不能调整
 | 
	
		
			
				|  |  |          CourseScheduleTeacherSalary teacherSalary = courseScheduleTeacherSalaryDao.queryByCourseScheduleIdAndUserId(oldCourseSchedule.getId(), oldCourseSchedule.getActualTeacherId());
 | 
	
		
			
				|  |  |          if(teacherSalary != null && teacherSalary.getSettlementTime() != null){
 | 
	
	
		
			
				|  | @@ -3192,6 +3221,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |          String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
 | 
	
		
			
				|  |  |          Date startDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
 | 
	
		
			
				|  |  |          Date endDateTime = DateUtil.addMinutes(startDateTime,practiceGroup.getSingleClassMinutes());
 | 
	
		
			
				|  |  | +        if(DateUtil.minutesBetween(startDateTime,practiceGroup.getCoursesStartDate()) > 0){
 | 
	
		
			
				|  |  | +            throw new BizException("调整失败: 调整时间不得早于开课时间");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          if(DateUtil.minutesBetween(practiceGroup.getCoursesExpireDate(),endDateTime) > 0){
 | 
	
		
			
				|  |  |              throw new BizException("调整失败: 截止时间超过课程有效期");
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -3253,7 +3285,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          CourseSchedule oldCourseSchedule = courseScheduleDao.getSurplusCourseWithGroup(courseScheduleId);
 | 
	
		
			
				|  |  |          if(Objects.isNull(oldCourseSchedule)){
 | 
	
		
			
				|  |  | -            throw new BizException("调整失败: 课程状态异常");
 | 
	
		
			
				|  |  | +            throw new BizException("调整失败: 课程已结束");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if(!oldCourseSchedule.getGroupType().equals(GroupType.PRACTICE)){
 | 
	
		
			
				|  |  |              throw new BizException("请选择网管课");
 | 
	
	
		
			
				|  | @@ -3261,7 +3293,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |          if(teacherId.equals(oldCourseSchedule.getActualTeacherId())){
 | 
	
		
			
				|  |  |              throw new BizException("请选择不同的老师");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          //保存修改记录
 | 
	
		
			
				|  |  |          Date date = new Date();
 | 
	
		
			
				|  |  |          CourseScheduleModifyLog scheduleModifyLog = new CourseScheduleModifyLog();
 | 
	
	
		
			
				|  | @@ -3279,6 +3310,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |          checkNewCourseSchedules(courseSchedules,false);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          courseScheduleDao.update(oldCourseSchedule);
 | 
	
		
			
				|  |  | +        List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaries = teacherDefaultPracticeGroupSalaryDao.queryByUserId(teacherId);
 | 
	
		
			
				|  |  | +        if(teacherDefaultPracticeGroupSalaries == null || teacherDefaultPracticeGroupSalaries.size() == 0){
 | 
	
		
			
				|  |  | +            throw new BizException("请设置老师默认课酬");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          teacherAttendanceDao.batchUpdateTeacher(courseScheduleIds,teacherId);
 | 
	
		
			
				|  |  |          courseScheduleTeacherSalaryDao.batchUpdateTeacher(courseScheduleIds,teacherId);
 | 
	
		
			
				|  |  |          courseScheduleModifyLogDao.insert(scheduleModifyLog);
 | 
	
	
		
			
				|  | @@ -3338,6 +3373,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |          Set<Long> courseScheduleIds = courseSchedules.stream().map(e -> e.getId()).collect(Collectors.toSet());
 | 
	
		
			
				|  |  |          courseScheduleTeacherSalaryDao.batchUpdateTeacher(courseScheduleIds,teacherId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaries = teacherDefaultPracticeGroupSalaryDao.queryByUserId(teacherId);
 | 
	
		
			
				|  |  | +        if(teacherDefaultPracticeGroupSalaries == null || teacherDefaultPracticeGroupSalaries.size() == 0){
 | 
	
		
			
				|  |  | +            throw new BizException("请设置老师默认课酬");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          teacherAttendanceDao.batchUpdateTeacher(courseScheduleIds,teacherId);
 | 
	
		
			
				|  |  |          courseScheduleModifyLogDao.batchInsert(scheduleModifyLogs);
 | 
	
		
			
				|  |  |  
 |