|
@@ -90,6 +90,8 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
|
|
|
|
private static Date activityStartDate, activityEndDate, applyStartDay, courseExpireDate;
|
|
private static Date activityStartDate, activityEndDate, applyStartDay, courseExpireDate;
|
|
|
|
|
|
|
|
+ private static List<String> applyDayTimes=new ArrayList<>();
|
|
|
|
+
|
|
static {
|
|
static {
|
|
applyStartDay = DateUtil.stringToDate("2020-02-08 00:00:00");
|
|
applyStartDay = DateUtil.stringToDate("2020-02-08 00:00:00");
|
|
activityStartDate = DateUtil.stringToDate("2020-02-09 00:00:00");
|
|
activityStartDate = DateUtil.stringToDate("2020-02-09 00:00:00");
|
|
@@ -135,6 +137,22 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
for (Integer schoolId : schoolIds3) {
|
|
for (Integer schoolId : schoolIds3) {
|
|
schoolSubjectTeachersMap.put(schoolId, subjectTeachersMap3);
|
|
schoolSubjectTeachersMap.put(schoolId, subjectTeachersMap3);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ applyDayTimes.add("09:00:00");
|
|
|
|
+ applyDayTimes.add("09:30:00");
|
|
|
|
+ applyDayTimes.add("10:00:00");
|
|
|
|
+ applyDayTimes.add("11:00:00");
|
|
|
|
+ applyDayTimes.add("11:30:00");
|
|
|
|
+ applyDayTimes.add("12:00:00");
|
|
|
|
+ applyDayTimes.add("14:00:00");
|
|
|
|
+ applyDayTimes.add("14:30:00");
|
|
|
|
+ applyDayTimes.add("15:00:00");
|
|
|
|
+ applyDayTimes.add("16:00:00");
|
|
|
|
+ applyDayTimes.add("16:30:00");
|
|
|
|
+ applyDayTimes.add("17:00:00");
|
|
|
|
+ applyDayTimes.add("19:00:00");
|
|
|
|
+ applyDayTimes.add("19:30:00");
|
|
|
|
+ applyDayTimes.add("20:00:00");
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -929,11 +947,30 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
}
|
|
}
|
|
|
|
|
|
List<Date> tempEnableApplyDates = new ArrayList<>();
|
|
List<Date> tempEnableApplyDates = new ArrayList<>();
|
|
|
|
+ Date yesterday=null;
|
|
|
|
+ Date tomorrow=null;
|
|
|
|
+ if(Objects.nonNull(firstClassTime)){
|
|
|
|
+ Calendar tempCalendar=Calendar.getInstance();
|
|
|
|
+ tempCalendar.setTime(firstClassTime);
|
|
|
|
+ tempCalendar.add(Calendar.DATE,-1);
|
|
|
|
+ yesterday=tempCalendar.getTime();
|
|
|
|
+ tempCalendar.add(Calendar.DATE,2);
|
|
|
|
+ tomorrow=tempCalendar.getTime();
|
|
|
|
+ }
|
|
for (Date enableApplyDate : enableApplyDates) {
|
|
for (Date enableApplyDate : enableApplyDates) {
|
|
Date enableApplyDateCourseEndTime = DateUtil.addMinutes(enableApplyDate, practiceCourseMinutes);
|
|
Date enableApplyDateCourseEndTime = DateUtil.addMinutes(enableApplyDate, practiceCourseMinutes);
|
|
- if (Objects.nonNull(firstClassTime) && DateUtil.isSameDay(enableApplyDate, firstClassTime)) {
|
|
|
|
- continue;
|
|
|
|
|
|
+ if (Objects.nonNull(firstClassTime)) {
|
|
|
|
+ if(DateUtil.isSameDay(enableApplyDate, firstClassTime)){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ if(DateUtil.isSameDay(enableApplyDate, tomorrow)){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ if(DateUtil.isSameDay(enableApplyDate, yesterday)){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+
|
|
if (teacherId == 100473) {
|
|
if (teacherId == 100473) {
|
|
checkTeacherLeaveDate = false;
|
|
checkTeacherLeaveDate = false;
|
|
Calendar tempCalendar = Calendar.getInstance();
|
|
Calendar tempCalendar = Calendar.getInstance();
|
|
@@ -1379,327 +1416,20 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
|
|
calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(enableEndTimeStr.split(":")[0]));
|
|
calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(enableEndTimeStr.split(":")[0]));
|
|
calendar.set(Calendar.MINUTE, Integer.valueOf(enableEndTimeStr.split(":")[1]));
|
|
calendar.set(Calendar.MINUTE, Integer.valueOf(enableEndTimeStr.split(":")[1]));
|
|
Date enableApplyDayEndTime = calendar.getTime();
|
|
Date enableApplyDayEndTime = calendar.getTime();
|
|
- result.add(enableApplyDayStartTime);
|
|
|
|
Calendar applyStartCalendar = Calendar.getInstance();
|
|
Calendar applyStartCalendar = Calendar.getInstance();
|
|
applyStartCalendar.setTime(enableApplyDayStartTime);
|
|
applyStartCalendar.setTime(enableApplyDayStartTime);
|
|
- while (true) {
|
|
|
|
- applyStartCalendar.add(Calendar.MINUTE, practiceApplyIntervalMinutes);
|
|
|
|
- if (applyStartCalendar.getTime().after(enableApplyDayEndTime)) {
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- result.add(applyStartCalendar.getTime());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
- public Map practiceApply(PracticeGroup practiceGroup) {
|
|
|
|
- Map result = new HashMap();
|
|
|
|
- SysConfig practiceSubjectIdListConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_SUBJECT_ID_LIST);
|
|
|
|
- if (!Arrays.asList(practiceSubjectIdListConfig.getParanValue().split(",")).contains(practiceGroup.getSubjectId().toString())) {
|
|
|
|
- result.put("status", "DISABLE_SUBJECT");
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
- Integer practiceCourseMinutes = 25;
|
|
|
|
- SysConfig practiceCourseMinutesConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_MINUTES);
|
|
|
|
- if (Objects.nonNull(practiceCourseMinutesConfig)) {
|
|
|
|
- practiceCourseMinutes = practiceCourseMinutesConfig.getParanValue(Integer.class);
|
|
|
|
- }
|
|
|
|
- SysConfig practiceCourseSalaryConfig = sysConfigService.findByParamName(SysConfigService.PRACTICE_COURSE_SALARY);
|
|
|
|
- Date now = new Date();
|
|
|
|
- if (practiceGroup.getFirstCourseTime().before(activityStartDate)
|
|
|
|
- || practiceGroup.getFirstCourseTime().after(activityEndDate)) {
|
|
|
|
- result.put("status", "APPLY_DATE_OVERFLOW");
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
- if (practiceGroup.getSecondCourseTime().before(activityStartDate)
|
|
|
|
- || practiceGroup.getSecondCourseTime().after(activityEndDate)) {
|
|
|
|
- result.put("status", "APPLY_DATE_OVERFLOW");
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
- if (DateUtil.isSameDay(practiceGroup.getFirstCourseTime(), practiceGroup.getSecondCourseTime())) {
|
|
|
|
- result.put("status", "TWO_DATE_ON_ONE_DAY");
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- List<Date> allCourseDates = new ArrayList<>();
|
|
|
|
- allCourseDates.add(practiceGroup.getFirstCourseTime());
|
|
|
|
- allCourseDates.add(practiceGroup.getSecondCourseTime());
|
|
|
|
- allCourseDates.add(DateUtil.addDays(practiceGroup.getFirstCourseTime(), 7));
|
|
|
|
- if (DateUtil.isSameDay(allCourseDates.get(1), allCourseDates.get(2))) {
|
|
|
|
- Date tempDate = allCourseDates.get(2);
|
|
|
|
- allCourseDates.remove(2);
|
|
|
|
- allCourseDates.add(DateUtil.addDays(tempDate, 7));
|
|
|
|
- }
|
|
|
|
- allCourseDates.add(DateUtil.addDays(practiceGroup.getSecondCourseTime(), 7));
|
|
|
|
- if (DateUtil.isSameDay(allCourseDates.get(2), allCourseDates.get(3))) {
|
|
|
|
- Date tempDate = allCourseDates.get(3);
|
|
|
|
- allCourseDates.remove(3);
|
|
|
|
- allCourseDates.add(DateUtil.addDays(tempDate, 7));
|
|
|
|
- }
|
|
|
|
- if (allCourseDates.get(2).before(activityStartDate)
|
|
|
|
- || allCourseDates.get(2).after(courseExpireDate)) {
|
|
|
|
- result.put("status", "APPLY_DATE_OVERFLOW");
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
- if (allCourseDates.get(3).before(activityStartDate)
|
|
|
|
- || allCourseDates.get(3).after(courseExpireDate)) {
|
|
|
|
- result.put("status", "APPLY_DATE_OVERFLOW");
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
- allCourseDates.sort(Comparator.comparing(Date::getTime));
|
|
|
|
-
|
|
|
|
- studentDao.lockUser(practiceGroup.getStudentId());
|
|
|
|
-
|
|
|
|
- Integer applyTimes = practiceGroupDao.countUserPracticeApplyRecord(practiceGroup.getStudentId());
|
|
|
|
-
|
|
|
|
- if (applyTimes >= 1) {
|
|
|
|
- result.put("status", "IS_APPLIED");
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
- applyTimes += 1;
|
|
|
|
-
|
|
|
|
- practiceGroup.setCoursesStartDate(allCourseDates.get(0));
|
|
|
|
- practiceGroup.setCoursesExpireDate(DateUtil.addMinutes(allCourseDates.get(3), practiceCourseMinutes));
|
|
|
|
- Integer teacherId = searchTeacherId(practiceGroup);
|
|
|
|
- if (Objects.isNull(teacherId)) {
|
|
|
|
- result.put("status", "NO_TEACHER");
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
- practiceGroup.setUserId(teacherId);
|
|
|
|
- Teacher teacher = teacherService.getDetail(teacherId);
|
|
|
|
- Employee employee = employeeDao.get(teacherId);
|
|
|
|
- if (Objects.isNull(employee) || StringUtils.isEmpty(employee.getOrganIdList()) || employee.getOrganIdList().contains(",")) {
|
|
|
|
- practiceGroup.setOrganId(teacher.getTeacherOrganId());
|
|
|
|
- } else {
|
|
|
|
- practiceGroup.setOrganId(Integer.parseInt(employee.getOrganIdList()));
|
|
|
|
- }
|
|
|
|
- Subject subject = subjectDao.get(practiceGroup.getSubjectId());
|
|
|
|
- if (Objects.isNull(subject)) {
|
|
|
|
- result.put("status", "DISABLE_SUBJECT");
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
- SysUser sysUser = sysUserFeignService.queryUserById(practiceGroup.getStudentId());
|
|
|
|
- practiceGroup.setName(subject.getName() + "•" + sysUser.getUsername());
|
|
|
|
- practiceGroup.setSingleClassMinutes(practiceCourseMinutes);
|
|
|
|
- practiceGroupDao.insert(practiceGroup);
|
|
|
|
-
|
|
|
|
- //创建班级信息
|
|
|
|
- ClassGroup classGroup = new ClassGroup();
|
|
|
|
- classGroup.setSubjectIdList(practiceGroup.getSubjectId().toString());
|
|
|
|
- classGroup.setExpectStudentNum(1);
|
|
|
|
- classGroup.setStudentNum(1);
|
|
|
|
- classGroup.setName(practiceGroup.getName());
|
|
|
|
- classGroup.setTotalClassTimes(allCourseDates.size());
|
|
|
|
- classGroup.setType(ClassGroupTypeEnum.PRACTICE);
|
|
|
|
- classGroup.setDelFlag(0);
|
|
|
|
- classGroup.setGroupType(GroupType.PRACTICE);
|
|
|
|
- classGroup.setMusicGroupId(practiceGroup.getId().toString());
|
|
|
|
- classGroup.setCreateTime(now);
|
|
|
|
- classGroup.setUpdateTime(now);
|
|
|
|
- classGroupDao.insert(classGroup);
|
|
|
|
-
|
|
|
|
- //创建班级老师关联记录
|
|
|
|
- ClassGroupTeacherMapper classGroupTeacherMapper = new ClassGroupTeacherMapper();
|
|
|
|
- classGroupTeacherMapper.setMusicGroupId(practiceGroup.getId().toString());
|
|
|
|
- classGroupTeacherMapper.setClassGroupId(classGroup.getId());
|
|
|
|
- classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.BISHOP);
|
|
|
|
- classGroupTeacherMapper.setUserId(teacherId);
|
|
|
|
- classGroupTeacherMapper.setGroupType(GroupType.PRACTICE);
|
|
|
|
- classGroupTeacherMapper.setCreateTime(now);
|
|
|
|
- classGroupTeacherMapper.setUpdateTime(now);
|
|
|
|
- classGroupTeacherMapperDao.insert(classGroupTeacherMapper);
|
|
|
|
-
|
|
|
|
- //创建班级与老师课酬记录
|
|
|
|
- ClassGroupTeacherSalary classGroupTeacherSalary = new ClassGroupTeacherSalary();
|
|
|
|
- classGroupTeacherSalary.setMusicGroupId(practiceGroup.getId().toString());
|
|
|
|
- classGroupTeacherSalary.setClassGroupId(classGroup.getId());
|
|
|
|
- classGroupTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
|
|
|
|
- classGroupTeacherSalary.setUserId(teacherId);
|
|
|
|
- classGroupTeacherSalary.setSalary(new BigDecimal(practiceCourseSalaryConfig.getParanValue(Integer.class)));
|
|
|
|
- classGroupTeacherSalary.setOnlineClassesSalary(new BigDecimal(practiceCourseSalaryConfig.getParanValue(Integer.class)));
|
|
|
|
- classGroupTeacherSalary.setGroupType(GroupType.PRACTICE);
|
|
|
|
- classGroupTeacherSalary.setCreateTime(now);
|
|
|
|
- classGroupTeacherSalary.setUpdateTime(now);
|
|
|
|
- classGroupTeacherSalaryDao.insert(classGroupTeacherSalary);
|
|
|
|
-
|
|
|
|
- //班级学生关联表
|
|
|
|
- ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
|
|
|
|
- classGroupStudentMapper.setMusicGroupId(practiceGroup.getId().toString());
|
|
|
|
- classGroupStudentMapper.setClassGroupId(classGroup.getId());
|
|
|
|
- classGroupStudentMapper.setUserId(practiceGroup.getStudentId());
|
|
|
|
- classGroupStudentMapper.setCreateTime(now);
|
|
|
|
- classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
|
|
|
|
- classGroupStudentMapper.setGroupType(GroupType.PRACTICE);
|
|
|
|
- classGroupStudentMapperDao.insert(classGroupStudentMapper);
|
|
|
|
-
|
|
|
|
- List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<>();
|
|
|
|
- List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
|
|
|
|
- List<TeacherAttendance> teacherAttendances = new ArrayList<>();
|
|
|
|
-
|
|
|
|
- for (Date courseDate : allCourseDates) {
|
|
|
|
- //课表
|
|
|
|
- CourseSchedule courseSchedule = new CourseSchedule();
|
|
|
|
- courseSchedule.setMusicGroupId(practiceGroup.getId().toString());
|
|
|
|
- courseSchedule.setClassGroupId(classGroup.getId());
|
|
|
|
- courseSchedule.setStatus(CourseStatusEnum.NOT_START);
|
|
|
|
- courseSchedule.setClassDate(courseDate);
|
|
|
|
- courseSchedule.setStartClassTime(courseDate);
|
|
|
|
- courseSchedule.setEndClassTime(DateUtil.addMinutes(courseDate, practiceCourseMinutes));
|
|
|
|
- courseSchedule.setTeacherId(teacherId);
|
|
|
|
- courseSchedule.setActualTeacherId(teacherId);
|
|
|
|
- courseSchedule.setCreateTime(now);
|
|
|
|
- courseSchedule.setUpdateTime(now);
|
|
|
|
- courseSchedule.setTeachMode(TeachModeEnum.ONLINE);
|
|
|
|
- courseSchedule.setType(CourseSchedule.CourseScheduleType.PRACTICE);
|
|
|
|
- courseSchedule.setGroupType(GroupType.PRACTICE);
|
|
|
|
- courseSchedule.setName(practiceGroup.getName());
|
|
|
|
- courseScheduleDao.insert(courseSchedule);
|
|
|
|
-
|
|
|
|
- //课程与老师薪水表
|
|
|
|
- CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
|
|
|
|
- courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
|
|
|
|
- courseScheduleTeacherSalary.setGroupType(GroupType.PRACTICE);
|
|
|
|
- courseScheduleTeacherSalary.setMusicGroupId(practiceGroup.getId().toString());
|
|
|
|
- courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
|
|
|
|
- courseScheduleTeacherSalary.setUserId(teacherId);
|
|
|
|
- courseScheduleTeacherSalary.setExpectSalary(new BigDecimal(practiceCourseSalaryConfig.getParanValue()));
|
|
|
|
- courseScheduleTeacherSalary.setCreateTime(now);
|
|
|
|
- courseScheduleTeacherSalary.setUpdateTime(now);
|
|
|
|
- courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
|
|
|
|
- courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
|
|
|
|
-
|
|
|
|
- //学生缴费记录
|
|
|
|
- CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
|
|
|
|
- courseScheduleStudentPayment.setGroupType(GroupType.PRACTICE);
|
|
|
|
- courseScheduleStudentPayment.setMusicGroupId(practiceGroup.getId().toString());
|
|
|
|
- courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
|
|
|
|
- courseScheduleStudentPayment.setUserId(practiceGroup.getStudentId());
|
|
|
|
- courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
|
|
|
|
- courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
|
|
|
|
- courseScheduleStudentPayment.setCreateTime(now);
|
|
|
|
- courseScheduleStudentPayment.setUpdateTime(now);
|
|
|
|
- courseScheduleStudentPayments.add(courseScheduleStudentPayment);
|
|
|
|
-
|
|
|
|
- //教师签到记录
|
|
|
|
- TeacherAttendance teacherAttendance = new TeacherAttendance();
|
|
|
|
- teacherAttendance.setMusicGroupId(practiceGroup.getId().toString());
|
|
|
|
- teacherAttendance.setTeacherId(teacherId);
|
|
|
|
- teacherAttendance.setClassGroupId(classGroup.getId());
|
|
|
|
- teacherAttendance.setGroupType(GroupType.PRACTICE);
|
|
|
|
- teacherAttendance.setCourseScheduleId(courseSchedule.getId());
|
|
|
|
- teacherAttendance.setCreateTime(now);
|
|
|
|
- teacherAttendances.add(teacherAttendance);
|
|
|
|
- }
|
|
|
|
- courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
|
|
|
|
- courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
|
|
|
|
- teacherAttendanceDao.batchInsert(teacherAttendances);
|
|
|
|
-
|
|
|
|
- Student student = studentDao.get(practiceGroup.getStudentId());
|
|
|
|
- if (Objects.isNull(student)) {
|
|
|
|
- student = new Student();
|
|
|
|
- student.setUserId(practiceGroup.getStudentId());
|
|
|
|
- student.setSubjectIdList(practiceGroup.getSubjectId().toString());
|
|
|
|
- studentDao.insert(student);
|
|
|
|
- } else {
|
|
|
|
- if (Objects.isNull(student.getSubjectIdList())) {
|
|
|
|
- student.setSubjectIdList(practiceGroup.getSubjectId().toString());
|
|
|
|
- } else {
|
|
|
|
- String[] studentIdStrings = student.getSubjectIdList().split(",");
|
|
|
|
- List<String> studentIds = new ArrayList<>(Arrays.asList(studentIdStrings));
|
|
|
|
- if (!studentIds.contains(practiceGroup.getSubjectId().toString())) {
|
|
|
|
- studentIds.add(practiceGroup.getSubjectId().toString());
|
|
|
|
- }
|
|
|
|
- student.setSubjectIdList(StringUtils.join(studentIds.toArray(), ","));
|
|
|
|
|
|
+ for (String applyDayTime : applyDayTimes) {
|
|
|
|
+ String temp=DateUtil.dateToString(applyStartCalendar.getTime(),"yyyy-MM-dd");
|
|
|
|
+ temp=temp+" "+applyDayTime;
|
|
|
|
+ result.add(DateUtil.stringToDate(temp,"yyyy-MM-dd HH:mm:ss"));
|
|
}
|
|
}
|
|
- studentDao.update(student);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- List<CourseSchedule> studentRepeatCourse1 = courseScheduleDao.findStudentCoursesWithIncludeDateRange(practiceGroup.getStudentId(), allCourseDates.get(0), DateUtil.addMinutes(allCourseDates.get(2), practiceCourseMinutes));
|
|
|
|
- if (CollectionUtils.isEmpty(studentRepeatCourse1)) {
|
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
|
- result.put("status", "STUDENT_COURSE_REPEAT");
|
|
|
|
- return result;
|
|
|
|
-// throw new BizException("您预约的时间端和您现有的课程冲突");
|
|
|
|
- }
|
|
|
|
- List<CourseSchedule> studentRepeatCourse2 = courseScheduleDao.findStudentCoursesWithIncludeDateRange(practiceGroup.getStudentId(), allCourseDates.get(1), DateUtil.addMinutes(allCourseDates.get(3), practiceCourseMinutes));
|
|
|
|
- if (CollectionUtils.isEmpty(studentRepeatCourse2)) {
|
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
|
- result.put("status", "STUDENT_COURSE_REPEAT");
|
|
|
|
- return result;
|
|
|
|
-// throw new BizException("您预约的时间端和您现有的课程冲突");
|
|
|
|
- }
|
|
|
|
- List<CourseSchedule> studentRepeatCourse3 = courseScheduleDao.findStudentCoursesWithIncludeDateRange(practiceGroup.getStudentId(), allCourseDates.get(2), DateUtil.addMinutes(allCourseDates.get(3), practiceCourseMinutes));
|
|
|
|
- if (CollectionUtils.isEmpty(studentRepeatCourse3)) {
|
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
|
- result.put("status", "STUDENT_COURSE_REPEAT");
|
|
|
|
- return result;
|
|
|
|
-// throw new BizException("您预约的时间端和您现有的课程冲突");
|
|
|
|
}
|
|
}
|
|
- List<CourseSchedule> studentRepeatCourse4 = courseScheduleDao.findStudentCoursesWithIncludeDateRange(practiceGroup.getStudentId(), allCourseDates.get(3), DateUtil.addMinutes(allCourseDates.get(3), practiceCourseMinutes));
|
|
|
|
- if (CollectionUtils.isEmpty(studentRepeatCourse4)) {
|
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
|
- result.put("status", "STUDENT_COURSE_REPEAT");
|
|
|
|
- return result;
|
|
|
|
-// throw new BizException("您预约的时间端和您现有的课程冲突");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //推送
|
|
|
|
- List<CourseSchedule> courseSchedules1 = courseScheduleDao.findTeacherCoursesWithIncludeDateRange(teacherId, allCourseDates.get(2), DateUtil.addMinutes(allCourseDates.get(2), practiceCourseMinutes));
|
|
|
|
- List<CourseSchedule> courseSchedules2 = courseScheduleDao.findTeacherCoursesWithIncludeDateRange(teacherId, allCourseDates.get(3), DateUtil.addMinutes(allCourseDates.get(3), practiceCourseMinutes));
|
|
|
|
- if (!CollectionUtils.isEmpty(courseSchedules1) || !CollectionUtils.isEmpty(courseSchedules2)) {
|
|
|
|
- if (courseSchedules1 == null) {
|
|
|
|
- courseSchedules1 = new ArrayList<>();
|
|
|
|
- }
|
|
|
|
- if (courseSchedules2 == null) {
|
|
|
|
- courseSchedules2 = new ArrayList<>();
|
|
|
|
- }
|
|
|
|
- courseSchedules1.addAll(courseSchedules2);
|
|
|
|
- List<String> courseDates = new ArrayList<>();
|
|
|
|
- List<String> courseNames = new ArrayList<>();
|
|
|
|
- for (int i = 0; i < courseSchedules1.size(); i++) {
|
|
|
|
- if (courseSchedules1.get(i).getGroupType().equals(GroupType.PRACTICE)) {
|
|
|
|
- if (courseSchedules1.get(i).getMusicGroupId().equals(practiceGroup.getId().toString())) {
|
|
|
|
- continue;
|
|
|
|
- } else {
|
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
|
- result.put("status", "TEACHER_PRACTICE_REPEAT");
|
|
|
|
- return result;
|
|
|
|
-// throw new BizException("指派的老师存在课程冲突");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- courseDates.add(DateUtil.dateToString(courseSchedules1.get(i).getStartClassTime(), "yyyy-MM-dd HH:mm:ss"));
|
|
|
|
- courseNames.add(courseSchedules1.get(i).getName());
|
|
|
|
- }
|
|
|
|
- if (!CollectionUtils.isEmpty(courseDates)) {
|
|
|
|
- String courseDatesStr = StringUtils.join(courseDates, "、");
|
|
|
|
- String courseNamesStr = StringUtils.join(courseNames, "、");
|
|
|
|
- Map<Integer, String> teacherMap = new HashMap<>();
|
|
|
|
- teacherMap.put(teacherId, teacherId.toString());
|
|
|
|
- sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PUSH_TEACHER_COURSE_COLLIDE,
|
|
|
|
- teacherMap, null, 0, null, "TEACHER", Objects.isNull(sysUser.getUsername()) ? sysUser.getPhone() : sysUser.getUsername(), courseDatesStr, courseNamesStr, courseNamesStr);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- List<ImGroupMember> imGroupMemberList = new ArrayList<>();
|
|
|
|
- imGroupMemberList.add(new ImGroupMember(practiceGroup.getUserId().toString()));
|
|
|
|
- imGroupMemberList.add(new ImGroupMember(practiceGroup.getStudentId().toString()));
|
|
|
|
- ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
|
|
|
|
- // 创建群组
|
|
|
|
- imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
|
|
|
|
-
|
|
|
|
- result.put("teacherName", teacher.getRealName());
|
|
|
|
- result.put("enableApply", applyTimes < 1 ? 1 : 0);
|
|
|
|
- result.put("status", "SUCCESS");
|
|
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
- public Map practiceApply2(PracticeGroup practiceGroup) {
|
|
|
|
|
|
+ public Map practiceApply(PracticeGroup practiceGroup) {
|
|
if(Objects.isNull(practiceGroup.getUserId())){
|
|
if(Objects.isNull(practiceGroup.getUserId())){
|
|
throw new BizException("请选择老师");
|
|
throw new BizException("请选择老师");
|
|
}
|
|
}
|