cy 3 anos atrás
pai
commit
8af83597fc

+ 1 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java

@@ -232,5 +232,6 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
     void sendTodayNotRepliedAndNotDecorateHomework();
 
     Map<String, String> selectRoomConfig();
+    void test();
 }
 

+ 92 - 15
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java

@@ -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;
+    }
 }

+ 25 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/DateChangeVo.java

@@ -0,0 +1,25 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class DateChangeVo implements Serializable {
+    private Date startTime;
+    private Date endTime;
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+}

+ 0 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/DateVo.java

@@ -1,7 +1,5 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
-import io.swagger.annotations.ApiModelProperty;
-
 import java.io.Serializable;
 
 public class DateVo implements Serializable {

+ 6 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherCourseScheduleController.java

@@ -155,5 +155,11 @@ public class TeacherCourseScheduleController extends BaseController {
     public HttpResponseResult<Object> selectRoomConfig() {
         return succeed(courseScheduleService.selectRoomConfig());
     }
+
+    @GetMapping("/test")
+    public HttpResponseResult<Object> teset() {
+        courseScheduleService.test();
+        return succeed();
+    }
 }