|
@@ -668,7 +668,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
}
|
|
|
|
|
|
if (replied == 1) {
|
|
|
- search.setRepliedIds(studentList);
|
|
|
+ if (CollectionUtils.isEmpty(studentList)) {
|
|
|
+ search.setRepliedIds(null);
|
|
|
+ } else search.setRepliedIds(studentList);
|
|
|
}
|
|
|
}
|
|
|
return page.setRecords(baseMapper.queryTeacherPracticeCourse(page, monthToDate(search)));
|
|
@@ -901,9 +903,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
//批量检查学生课时在数据库是否重复
|
|
|
batchCheckStudentCourseTime(studentId, dateList, CourseScheduleDate::getStartTime, CourseScheduleDate::getEndTime);
|
|
|
|
|
|
- RLock lock = redissonClient.getLock("buyPractice:teacherId:"+scheduleDto.getTeacherId());
|
|
|
+ RLock lock = redissonClient.getLock("buyPractice:teacherId:" + scheduleDto.getTeacherId());
|
|
|
try {
|
|
|
- if(lock.tryLock(20,10, TimeUnit.SECONDS)){
|
|
|
+ if (lock.tryLock(20, 10, TimeUnit.SECONDS)) {
|
|
|
String orderNo = orderReqInfo.getOrderNo();
|
|
|
scheduleDto.setType(CourseScheduleEnum.PRACTICE.getCode());
|
|
|
scheduleDto.setStatus(CourseGroupEnum.NOT_SALE.getCode());
|
|
@@ -966,8 +968,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
return httpResponseResult;
|
|
|
}
|
|
|
} catch (InterruptedException e) {
|
|
|
- log.error("runIfLockCanGet error lockName : {}", "buyPractice:teacherId:"+scheduleDto.getTeacherId(), e);
|
|
|
- throw new RuntimeException("runIfLockCanGet error lockName :" + "buyPractice:teacherId:"+scheduleDto.getTeacherId(), e);
|
|
|
+ log.error("runIfLockCanGet error lockName : {}", "buyPractice:teacherId:" + scheduleDto.getTeacherId(), e);
|
|
|
+ throw new RuntimeException("runIfLockCanGet error lockName :" + "buyPractice:teacherId:" + scheduleDto.getTeacherId(), e);
|
|
|
} finally {
|
|
|
lock.unlock();
|
|
|
}
|
|
@@ -990,7 +992,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
List<Long> scheduleIds = paymentList.stream().map(CourseScheduleStudentPayment::getCourseId).collect(Collectors.toList());
|
|
|
baseMapper.updateLock(scheduleIds);
|
|
|
UpdateWrapper<CourseGroup> warp = new UpdateWrapper<>();
|
|
|
- warp.set("status_","ING").eq("id_",paymentList.get(0).getCourseGroupId());
|
|
|
+ warp.set("status_", "ING").eq("id_", paymentList.get(0).getCourseGroupId());
|
|
|
courseGroupService.update(warp);
|
|
|
|
|
|
//查询陪练课服务费
|
|
@@ -1135,14 +1137,23 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
StudentHomePage.RecentCourses coursesPractice = baseMapper.selectRecentCoursesPractice(teacherId);
|
|
|
StudentHomePage.RecentCourses coursesLive = baseMapper.selectRecentCoursesLive(teacherId);
|
|
|
|
|
|
- Date practiceTime = coursesPractice.getCourseStartTime();
|
|
|
- Date liveTime = coursesLive.getCourseStartTime();
|
|
|
-
|
|
|
- if (practiceTime.compareTo(liveTime)==-1){
|
|
|
- homePage.setRecentCourses(coursesPractice);
|
|
|
- } else {
|
|
|
+ if (coursesPractice == null && coursesLive != null) {
|
|
|
homePage.setRecentCourses(coursesLive);
|
|
|
}
|
|
|
+ if (coursesPractice != null && coursesLive == null) {
|
|
|
+ homePage.setRecentCourses(coursesPractice);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (coursesPractice != null && coursesLive != null) {
|
|
|
+ Date practiceTime = coursesPractice.getCourseStartTime();
|
|
|
+ Date liveTime = coursesLive.getCourseStartTime();
|
|
|
+
|
|
|
+ if (practiceTime.compareTo(liveTime) == -1) {
|
|
|
+ homePage.setRecentCourses(coursesPractice);
|
|
|
+ } else {
|
|
|
+ homePage.setRecentCourses(coursesLive);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
return homePage;
|
|
|
}
|
|
@@ -1219,7 +1230,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
String teacherUrl = sysMessageService.selectConfigUrl(MessageTypeEnum.STUDENT_BUY_PRACTICE.getCode());
|
|
|
sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_BUY_PRACTICE,
|
|
|
teacherReceivers, null, 0, teacherUrl, ClientEnum.TEACHER.getCode(),
|
|
|
- student.getUsername(), courseNum );
|
|
|
+ student.getUsername(), courseNum);
|
|
|
log.info("send success {}", MessageTypeEnum.STUDENT_BUY_PRACTICE);
|
|
|
|
|
|
//老师端-学生买陪练课(短信)
|
|
@@ -1232,7 +1243,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
String studentUrl = sysMessageService.selectConfigUrl(MessageTypeEnum.PRACTICE_BUY.getCode());
|
|
|
sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PRACTICE_BUY,
|
|
|
studentReceivers, null, 0, studentUrl, ClientEnum.STUDENT.getCode(),
|
|
|
- teacher.getUsername(), courseNum );
|
|
|
+ teacher.getUsername(), courseNum);
|
|
|
log.info("send success {}", MessageTypeEnum.PRACTICE_BUY);
|
|
|
|
|
|
//学生端-买陪练课(短信)
|
|
@@ -1289,7 +1300,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
String teacherUrl = sysMessageService.selectConfigUrl(MessageTypeEnum.TOMORROW_COURSE_REMINDER.getCode());
|
|
|
sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TOMORROW_COURSE_REMINDER,
|
|
|
teacherReceivers, null, 0, teacherUrl, ClientEnum.TEACHER.getCode(),
|
|
|
- practiceCount.toString(), liveCount.toString() );
|
|
|
+ practiceCount.toString(), liveCount.toString());
|
|
|
log.info("send success {}", MessageTypeEnum.TOMORROW_COURSE_REMINDER);
|
|
|
|
|
|
//老师端-明日课程提醒(短信)
|
|
@@ -1318,4 +1329,70 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
sysConfig.put("liveEndTime", sysConfigService.findConfigValue(SysConfigConstant.DESTROY_EXPIRED_LIVE_ROOM_MINUTE));
|
|
|
return sysConfig;
|
|
|
}
|
|
|
+
|
|
|
+ public void test() {
|
|
|
+ //1.查询所有过审的老师
|
|
|
+ List<TeacherFreeTime> teacherFreeTime = teacherFreeTimeDao.getTeacherFreeTime();
|
|
|
+
|
|
|
+ //2.根据配置是否跳过节假日分组
|
|
|
+ //跳过节假日
|
|
|
+ List<TeacherFreeTime> skipHoliday = teacherFreeTime.stream().filter(item -> item.getSkipHolidayFlag()).collect(Collectors.toList());
|
|
|
+ //不跳过节假日
|
|
|
+ List<TeacherFreeTime> noSkipHoliday = teacherFreeTime.stream().filter(item -> !item.getSkipHolidayFlag()).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //3.查询节假日
|
|
|
+ HolidaysFestivals holidays = holidaysFestivalsDao.queryByYear(Integer.parseInt(DateUtil.getYear(new Date())));
|
|
|
+ String[] strs = holidays.getHolidaysFestivalsJson().split(",");
|
|
|
+ List<String> holiday = Arrays.asList(strs);
|
|
|
+
|
|
|
+ //4.获取未来30天日期
|
|
|
+ List<String> futureDays = DateUtil.getFutureDays(30);
|
|
|
+ //5.获取未来30天日期(剔除节假日)
|
|
|
+ List<String> futureDaysNoVacation = futureDays.stream().filter(item -> !holiday.contains(item)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ Map<Long, Object> map = new HashMap<>();
|
|
|
+
|
|
|
+
|
|
|
+ //6.遍历老师获取周1-7配置
|
|
|
+ for (TeacherFreeTime freeTimeConfig : skipHoliday) {//跳过节假日
|
|
|
+ String mondayConfig = freeTimeConfig.getMonday();
|
|
|
+ List<DateVo> mondayConfigList = JSONObject.parseArray(mondayConfig, DateVo.class);
|
|
|
+ List<DateChangeVo> rList = new ArrayList<>();//未来30天所有周一排课时间
|
|
|
+
|
|
|
+ map.put(freeTimeConfig.getId(), rList);
|
|
|
+ for (String day : futureDaysNoVacation) {//遍历未来30天跳过节假日
|
|
|
+ String week = DateUtil.getWeek(day);
|
|
|
+ if (week.equals("monday")) {//当前时间为周一
|
|
|
+ splicingDate(day, mondayConfigList, rList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ System.out.println(map);
|
|
|
+
|
|
|
+ //7.遍历30天日期拼接配置 生成日历
|
|
|
+
|
|
|
+ //8.根据老师id查询未来课程时间
|
|
|
+
|
|
|
+ //9.遍历7.8校验区间是否重合
|
|
|
+
|
|
|
+ //10.记录没重合老师id
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 拼接日期时间
|
|
|
+ *
|
|
|
+ * @param day 日期
|
|
|
+ * @param strDateList 时间集合
|
|
|
+ * @param rList 接受容器
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<DateChangeVo> splicingDate(String day, List<DateVo> strDateList, List<DateChangeVo> rList) {
|
|
|
+ for (DateVo vo : strDateList) {
|
|
|
+ DateChangeVo dateChange = new DateChangeVo();
|
|
|
+ dateChange.setStartTime(DateUtil.strToDate(day + " " + vo.getStartTime()));
|
|
|
+ dateChange.setEndTime(DateUtil.strToDate(day + " " + vo.getEndTime()));
|
|
|
+ rList.add(dateChange);
|
|
|
+ }
|
|
|
+ return rList;
|
|
|
+ }
|
|
|
}
|