|  | @@ -50,6 +50,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private SysUserFeignService sysUserFeignService;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  | +    private CourseScheduleModifyLogDao courseScheduleModifyLogDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  |      private CourseScheduleComplaintsDao courseScheduleComplaintsDao;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private SysConfigDao sysConfigDao;
 | 
	
	
		
			
				|  | @@ -1179,6 +1181,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public void vipCourseAdjust(VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo) {
 | 
	
		
			
				|  |  | +        SysUser user = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  | +        if (null == user) {
 | 
	
		
			
				|  |  | +            throw new BizException("获取用户信息失败");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          if (Objects.isNull(vipGroupCourseAdjustInfo.getVipGroupId())) {
 | 
	
		
			
				|  |  |              throw new BizException("请指定小课");
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -1224,7 +1230,17 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |                  .stream().map(Long::parseLong).collect(Collectors.toList());
 | 
	
		
			
				|  |  |          //所有的课程
 | 
	
		
			
				|  |  |          List<CourseSchedule> courseSchedules = courseScheduleDao.findByCourseScheduleIds(courseScheduleIds);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        //保存修改记录
 | 
	
		
			
				|  |  | +        List<CourseScheduleModifyLog> scheduleModifyLogs = new ArrayList<>(courseSchedules.size());
 | 
	
		
			
				|  |  | +        Date date = new Date();
 | 
	
		
			
				|  |  | +        courseSchedules.forEach(e->{
 | 
	
		
			
				|  |  | +            CourseScheduleModifyLog scheduleModifyLog = new CourseScheduleModifyLog();
 | 
	
		
			
				|  |  | +            scheduleModifyLog.setCourseScheduleId(e.getId());
 | 
	
		
			
				|  |  | +            scheduleModifyLog.setPreviousCourseSchedule(JSONObject.toJSONString(e));
 | 
	
		
			
				|  |  | +            scheduleModifyLog.setCreateTime(date);
 | 
	
		
			
				|  |  | +            scheduleModifyLog.setOperatorId(user.getId());
 | 
	
		
			
				|  |  | +            scheduleModifyLogs.add(scheduleModifyLog);
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  |          courseSchedules.sort(Comparator.comparing(CourseSchedule::getStartClassTime));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (courseScheduleIds.size() != courseScheduleIds.size()) {
 | 
	
	
		
			
				|  | @@ -1329,6 +1345,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |          classGroupService.updateClassGroupInfo(classGroup.getId());
 | 
	
		
			
				|  |  |  //        vipGroupService.checkVipCourseIsInScore(vipGroupCourseAdjustInfo.getVipGroupId().longValue());
 | 
	
		
			
				|  |  |  //        courseScheduleStudentPaymentService.updateVipGiveCourse(vipGroup.getId());
 | 
	
		
			
				|  |  | +        if(scheduleModifyLogs.size() == courseSchedules.size()){
 | 
	
		
			
				|  |  | +            for (int i = 0;i<courseSchedules.size();i++){
 | 
	
		
			
				|  |  | +                scheduleModifyLogs.get(i).setCurrentCourseSchedule(JSONObject.toJSONString(courseSchedules.get(i)));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            courseScheduleModifyLogDao.batchInsert(scheduleModifyLogs);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
	
		
			
				|  | @@ -2519,13 +2541,18 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public void practiceCourseAdjust(CourseSchedule courseSchedule) {
 | 
	
		
			
				|  |  | -        if(Objects.isNull(courseSchedule.getId())){
 | 
	
		
			
				|  |  | +        SysUser user = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  | +        if (null == user) {
 | 
	
		
			
				|  |  | +            throw new BizException("获取用户信息失败");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        Long courseScheduleId = courseSchedule.getId();
 | 
	
		
			
				|  |  | +        if(Objects.isNull(courseScheduleId)){
 | 
	
		
			
				|  |  |              throw new BizException("请指定课程");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if(Objects.isNull(courseSchedule.getStartClassTime())){
 | 
	
		
			
				|  |  |              throw new BizException("请指定上课时间");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        CourseSchedule oldCourseSchedule = courseScheduleDao.get(courseSchedule.getId());
 | 
	
		
			
				|  |  | +        CourseSchedule oldCourseSchedule = courseScheduleDao.get(courseScheduleId);
 | 
	
		
			
				|  |  |          if(Objects.isNull(oldCourseSchedule)){
 | 
	
		
			
				|  |  |              throw new BizException("未找到对应课程");
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -2545,7 +2572,14 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |          if(DateUtil.minutesBetween(practiceGroup.getCoursesExpireDate(),endDateTime) > 0){
 | 
	
		
			
				|  |  |              throw new BizException("调整失败: 截止时间超过课程有效期");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        //保存修改记录
 | 
	
		
			
				|  |  |          Date date = new Date();
 | 
	
		
			
				|  |  | +        CourseScheduleModifyLog scheduleModifyLog = new CourseScheduleModifyLog();
 | 
	
		
			
				|  |  | +        scheduleModifyLog.setCourseScheduleId(courseScheduleId);
 | 
	
		
			
				|  |  | +        scheduleModifyLog.setPreviousCourseSchedule(JSONObject.toJSONString(oldCourseSchedule));
 | 
	
		
			
				|  |  | +        scheduleModifyLog.setCreateTime(date);
 | 
	
		
			
				|  |  | +        oldCourseSchedule.setUpdateTime(date);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          if(DateUtil.minutesBetween(endDateTime,date) > 0){
 | 
	
		
			
				|  |  |              oldCourseSchedule.setStatus(CourseStatusEnum.OVER);
 | 
	
		
			
				|  |  |          }else if(DateUtil.minutesBetween(date,startDateTime) > 0){
 | 
	
	
		
			
				|  | @@ -2561,20 +2595,29 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |          oldCourseSchedule.setClassDate(courseSchedule.getStartClassTime());
 | 
	
		
			
				|  |  |          oldCourseSchedule.setStartClassTime(courseSchedule.getStartClassTime());
 | 
	
		
			
				|  |  |          oldCourseSchedule.setEndClassTime(DateUtil.addMinutes(courseSchedule.getStartClassTime(),practiceCourseMinutes));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        scheduleModifyLog.setCurrentCourseSchedule(JSONObject.toJSONString(oldCourseSchedule));
 | 
	
		
			
				|  |  | +        scheduleModifyLog.setOperatorId(user.getId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          List<CourseSchedule> courseSchedules=new ArrayList<>();
 | 
	
		
			
				|  |  |          courseSchedules.add(oldCourseSchedule);
 | 
	
		
			
				|  |  |          checkNewCourseSchedules(courseSchedules,false);
 | 
	
		
			
				|  |  |          if(oldCourseSchedule.getStatus() == CourseStatusEnum.NOT_START){
 | 
	
		
			
				|  |  |              teacherAttendanceDao.batchUpdateTeacher(courseSchedules.stream().map(e->e.getId()).collect(Collectors.toSet()),oldCourseSchedule.getActualTeacherId());
 | 
	
		
			
				|  |  |              //清空学生签到记录
 | 
	
		
			
				|  |  | -            studentAttendanceDao.deleteStudentAttendancesByCourse(courseSchedule.getId());
 | 
	
		
			
				|  |  | +            studentAttendanceDao.deleteStudentAttendancesByCourse(courseScheduleId);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          courseScheduleDao.update(oldCourseSchedule);
 | 
	
		
			
				|  |  | +        courseScheduleModifyLogDao.insert(scheduleModifyLog);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public void practiceCourseTeacherAdjust(Long courseScheduleId,Integer teacherId) {
 | 
	
		
			
				|  |  | +        SysUser user = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  | +        if (null == user) {
 | 
	
		
			
				|  |  | +            throw new BizException("获取用户信息失败");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          if(Objects.isNull(courseScheduleId)){
 | 
	
		
			
				|  |  |              throw new BizException("请指定课程");
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -2591,14 +2634,28 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |          if(teacherId.equals(oldCourseSchedule.getActualTeacherId())){
 | 
	
		
			
				|  |  |              throw new BizException("请选择不同的老师");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //保存修改记录
 | 
	
		
			
				|  |  | +        Date date = new Date();
 | 
	
		
			
				|  |  | +        CourseScheduleModifyLog scheduleModifyLog = new CourseScheduleModifyLog();
 | 
	
		
			
				|  |  | +        scheduleModifyLog.setCourseScheduleId(courseScheduleId);
 | 
	
		
			
				|  |  | +        scheduleModifyLog.setPreviousCourseSchedule(JSONObject.toJSONString(oldCourseSchedule));
 | 
	
		
			
				|  |  | +        scheduleModifyLog.setCreateTime(date);
 | 
	
		
			
				|  |  | +        oldCourseSchedule.setUpdateTime(date);
 | 
	
		
			
				|  |  |          oldCourseSchedule.setActualTeacherId(teacherId);
 | 
	
		
			
				|  |  | +        scheduleModifyLog.setCurrentCourseSchedule(JSONObject.toJSONString(oldCourseSchedule));
 | 
	
		
			
				|  |  | +        scheduleModifyLog.setOperatorId(user.getId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          List<CourseSchedule> courseSchedules = new ArrayList<>();
 | 
	
		
			
				|  |  |          courseSchedules.add(oldCourseSchedule);
 | 
	
		
			
				|  |  |          Set<Long> courseScheduleIds = courseSchedules.stream().map(e -> e.getId()).collect(Collectors.toSet());
 | 
	
		
			
				|  |  |          checkNewCourseSchedules(courseSchedules,false);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          courseScheduleDao.update(oldCourseSchedule);
 | 
	
		
			
				|  |  |          teacherAttendanceDao.batchUpdateTeacher(courseScheduleIds,teacherId);
 | 
	
		
			
				|  |  |          courseScheduleTeacherSalaryDao.batchUpdateTeacher(courseScheduleIds,teacherId);
 | 
	
		
			
				|  |  | +        courseScheduleModifyLogDao.insert(scheduleModifyLog);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          Map<Integer, String> map = new HashMap<>(2);
 | 
	
		
			
				|  |  |          map.put(teacherId,teacherId.toString());
 | 
	
		
			
				|  |  |          map.put(oldCourseSchedule.getActualTeacherId(),oldCourseSchedule.getActualTeacherId().toString());
 | 
	
	
		
			
				|  | @@ -2611,6 +2668,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public void practiceGroupTeacherAdjust(String practiceGroupId, Integer teacherId) {
 | 
	
		
			
				|  |  | +        SysUser user = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  | +        if (null == user) {
 | 
	
		
			
				|  |  | +            throw new BizException("获取用户信息失败");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          if(StringUtils.isEmpty(practiceGroupId)){
 | 
	
		
			
				|  |  |              throw new BizException("请指定课程组");
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -2624,11 +2685,23 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |          if(courseSchedules == null || courseSchedules.size() == 0){
 | 
	
		
			
				|  |  |              throw new BizException("没有可调整的课程");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          Map<Integer, String> teacherIdMap = new HashMap<>(10);
 | 
	
		
			
				|  |  |          teacherIdMap.put(teacherId,teacherId.toString());
 | 
	
		
			
				|  |  | +        List<CourseScheduleModifyLog> scheduleModifyLogs = new ArrayList<>(courseSchedules.size());
 | 
	
		
			
				|  |  | +        Date date = new Date();
 | 
	
		
			
				|  |  |          courseSchedules.forEach(e->{
 | 
	
		
			
				|  |  | +            //保存修改记录
 | 
	
		
			
				|  |  | +            CourseScheduleModifyLog scheduleModifyLog = new CourseScheduleModifyLog();
 | 
	
		
			
				|  |  | +            scheduleModifyLog.setCourseScheduleId(e.getId());
 | 
	
		
			
				|  |  | +            scheduleModifyLog.setPreviousCourseSchedule(JSONObject.toJSONString(e));
 | 
	
		
			
				|  |  | +            scheduleModifyLog.setCreateTime(date);
 | 
	
		
			
				|  |  |              teacherIdMap.put(e.getActualTeacherId(),e.getActualTeacherId().toString());
 | 
	
		
			
				|  |  | +            e.setUpdateTime(date);
 | 
	
		
			
				|  |  |              e.setActualTeacherId(teacherId);
 | 
	
		
			
				|  |  | +            scheduleModifyLog.setCurrentCourseSchedule(JSONObject.toJSONString(e));
 | 
	
		
			
				|  |  | +            scheduleModifyLog.setOperatorId(user.getId());
 | 
	
		
			
				|  |  | +            scheduleModifyLogs.add(scheduleModifyLog);
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |          checkNewCourseSchedules(courseSchedules,false);
 | 
	
		
			
				|  |  |          courseScheduleDao.batchUpdate(courseSchedules);
 | 
	
	
		
			
				|  | @@ -2639,6 +2712,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 | 
	
		
			
				|  |  |          classGroupTeacherSalaryDao.updateTeacher(classGroupIds,teacherId);
 | 
	
		
			
				|  |  |          practiceGroupDao.updateUserId(practiceGroupId,teacherId);
 | 
	
		
			
				|  |  |          teacherAttendanceDao.batchUpdateTeacher(courseScheduleIds,teacherId);
 | 
	
		
			
				|  |  | +        courseScheduleModifyLogDao.batchInsert(scheduleModifyLogs);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          if (teacherIdMap != null && teacherIdMap.size() > 0) {
 | 
	
		
			
				|  |  |              sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_COURSE_SCHEDULE_CHANGE_RESULT,
 | 
	
		
			
				|  |  |                      teacherIdMap, null, 0, "7","TEACHER");
 |