|
@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
@@ -11,10 +12,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
|
|
|
import com.yonge.cooleshow.auth.api.entity.SysUser;
|
|
|
-import com.yonge.cooleshow.biz.dal.dao.CourseScheduleDao;
|
|
|
-import com.yonge.cooleshow.biz.dal.dao.CourseScheduleRepliedDao;
|
|
|
-import com.yonge.cooleshow.biz.dal.dao.CourseScheduleStudentPaymentDao;
|
|
|
-import com.yonge.cooleshow.biz.dal.dao.TeacherFreeTimeDao;
|
|
|
+import com.yonge.cooleshow.biz.dal.dao.*;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.PracticeScheduleDto;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.search.HomeworkSearch;
|
|
@@ -36,7 +34,9 @@ import com.yonge.toolset.utils.date.DateUtil;
|
|
|
import com.yonge.toolset.utils.obj.ObjectUtil;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.redisson.api.RLock;
|
|
|
import org.redisson.api.RMap;
|
|
|
+import org.redisson.api.RedissonClient;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -49,6 +49,7 @@ import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.temporal.TemporalAdjusters;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
import java.util.function.BiConsumer;
|
|
|
import java.util.function.BiFunction;
|
|
|
import java.util.function.Function;
|
|
@@ -68,6 +69,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
private final static Logger log = LoggerFactory.getLogger(CourseScheduleServiceImpl.class);
|
|
|
|
|
|
@Autowired
|
|
|
+ private RedissonClient redissonClient;
|
|
|
+ @Autowired
|
|
|
private SysUserFeignService sysUserFeignService;
|
|
|
@Autowired
|
|
|
private HolidaysFestivalsService holidaysFestivalsService;
|
|
@@ -89,6 +92,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
private TeacherFreeTimeDao teacherFreeTimeDao;
|
|
|
@Autowired
|
|
|
private SysMessageService sysMessageService;
|
|
|
+ @Autowired
|
|
|
+ private HolidaysFestivalsDao holidaysFestivalsDao;
|
|
|
|
|
|
@Override
|
|
|
public CourseScheduleDao getDao() {
|
|
@@ -663,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)));
|
|
@@ -896,66 +903,77 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
//批量检查学生课时在数据库是否重复
|
|
|
batchCheckStudentCourseTime(studentId, dateList, CourseScheduleDate::getStartTime, CourseScheduleDate::getEndTime);
|
|
|
|
|
|
- String orderNo = orderReqInfo.getOrderNo();
|
|
|
- scheduleDto.setType(CourseScheduleEnum.PRACTICE.getCode());
|
|
|
- scheduleDto.setStatus(CourseGroupEnum.ING.getCode());
|
|
|
- scheduleDto.setMixStudentNum(1);
|
|
|
- scheduleDto.setStudentId(studentId);
|
|
|
-
|
|
|
- //写入course_group
|
|
|
- baseMapper.addCourseGroup(scheduleDto);
|
|
|
- Long groupId = scheduleDto.getGroupId();
|
|
|
-
|
|
|
- //根据老师id获取默认配置声部原价
|
|
|
- TeacherSubjectPrice teacherSubjectPrice = teacherFreeTimeDao.selectSubjectPrice(scheduleDto.getTeacherId(), scheduleDto.getSubjectId());
|
|
|
- BigDecimal subjectPrice = teacherSubjectPrice.getSubjectPrice();
|
|
|
-
|
|
|
- //每课实际价格
|
|
|
- Map<Integer, BigDecimal> courseAveragePrice = WrapperUtil.getAveragePrice(scheduleDto.getCourseNum(), scheduleDto.getCoursePrice());
|
|
|
-
|
|
|
- List<CourseScheduleDate> classTime = scheduleDto.getClassTime();
|
|
|
- for (int i = 0; i < classTime.size(); i++) {
|
|
|
- CourseScheduleDate date = classTime.get(i);
|
|
|
- CourseSchedule schedule = new CourseSchedule();
|
|
|
- schedule.setClassDate(date.getClassDate());
|
|
|
- schedule.setStartTime(date.getStartTime());
|
|
|
- schedule.setEndTime(date.getEndTime());
|
|
|
- schedule.setCourseGroupId(groupId);
|
|
|
- schedule.setType(CourseScheduleEnum.PRACTICE.getCode());
|
|
|
- schedule.classNum(i + 1);
|
|
|
- schedule.setTeacherId(scheduleDto.getTeacherId());
|
|
|
- schedule.setLock(1);
|
|
|
- schedule.setStatus(CourseScheduleEnum.NOT_START.getCode());
|
|
|
- schedule.setCreatedBy(scheduleDto.getStudentId());
|
|
|
- //写入course_schedule
|
|
|
- baseMapper.insert(schedule);
|
|
|
-
|
|
|
- Long scheduleId = schedule.getId();
|
|
|
- CourseScheduleStudentPayment payment = new CourseScheduleStudentPayment();
|
|
|
- payment.setUserId(scheduleDto.getStudentId());
|
|
|
- payment.setCourseId(scheduleId);
|
|
|
- payment.setCourseGroupId(groupId);
|
|
|
- payment.setCourseType(CourseScheduleEnum.PRACTICE.getCode());
|
|
|
- payment.setOrderNo(orderNo);
|
|
|
- payment.setOriginalPrice(subjectPrice);//原价
|
|
|
- payment.setExpectPrice(subjectPrice);//预计价格
|
|
|
- payment.setActualPrice(courseAveragePrice.get(i + 1));//实际价格
|
|
|
- //写入course_schedule_student_payment
|
|
|
- courseScheduleStudentPaymentService.save(payment);
|
|
|
- }
|
|
|
+ RLock lock = redissonClient.getLock("buyPractice:teacherId:" + scheduleDto.getTeacherId());
|
|
|
+ try {
|
|
|
+ if (lock.tryLock(20, 10, TimeUnit.SECONDS)) {
|
|
|
+ String orderNo = orderReqInfo.getOrderNo();
|
|
|
+ scheduleDto.setType(CourseScheduleEnum.PRACTICE.getCode());
|
|
|
+ scheduleDto.setStatus(CourseGroupEnum.NOT_SALE.getCode());
|
|
|
+ scheduleDto.setMixStudentNum(1);
|
|
|
+ scheduleDto.setStudentId(studentId);
|
|
|
+
|
|
|
+ //写入course_group
|
|
|
+ baseMapper.addCourseGroup(scheduleDto);
|
|
|
+ Long groupId = scheduleDto.getGroupId();
|
|
|
+
|
|
|
+ //根据老师id获取默认配置声部原价
|
|
|
+ TeacherSubjectPrice teacherSubjectPrice = teacherFreeTimeDao.selectSubjectPrice(scheduleDto.getTeacherId(), scheduleDto.getSubjectId());
|
|
|
+ BigDecimal subjectPrice = teacherSubjectPrice.getSubjectPrice();
|
|
|
+
|
|
|
+ //每课实际价格
|
|
|
+ Map<Integer, BigDecimal> courseAveragePrice = WrapperUtil.getAveragePrice(scheduleDto.getCourseNum(), scheduleDto.getCoursePrice());
|
|
|
+
|
|
|
+ List<CourseScheduleDate> classTime = scheduleDto.getClassTime();
|
|
|
+ for (int i = 0; i < classTime.size(); i++) {
|
|
|
+ CourseScheduleDate date = classTime.get(i);
|
|
|
+ CourseSchedule schedule = new CourseSchedule();
|
|
|
+ schedule.setClassDate(date.getClassDate());
|
|
|
+ schedule.setStartTime(date.getStartTime());
|
|
|
+ schedule.setEndTime(date.getEndTime());
|
|
|
+ schedule.setCourseGroupId(groupId);
|
|
|
+ schedule.setType(CourseScheduleEnum.PRACTICE.getCode());
|
|
|
+ schedule.classNum(i + 1);
|
|
|
+ schedule.setTeacherId(scheduleDto.getTeacherId());
|
|
|
+ schedule.setLock(1);
|
|
|
+ schedule.setStatus(CourseScheduleEnum.NOT_START.getCode());
|
|
|
+ schedule.setCreatedBy(scheduleDto.getStudentId());
|
|
|
+ //写入course_schedule
|
|
|
+ baseMapper.insert(schedule);
|
|
|
+
|
|
|
+ Long scheduleId = schedule.getId();
|
|
|
+ CourseScheduleStudentPayment payment = new CourseScheduleStudentPayment();
|
|
|
+ payment.setUserId(scheduleDto.getStudentId());
|
|
|
+ payment.setCourseId(scheduleId);
|
|
|
+ payment.setCourseGroupId(groupId);
|
|
|
+ payment.setCourseType(CourseScheduleEnum.PRACTICE.getCode());
|
|
|
+ payment.setOrderNo(orderNo);
|
|
|
+ payment.setOriginalPrice(subjectPrice);//原价
|
|
|
+ payment.setExpectPrice(subjectPrice);//预计价格
|
|
|
+ payment.setActualPrice(courseAveragePrice.get(i + 1));//实际价格
|
|
|
+ //写入course_schedule_student_payment
|
|
|
+ courseScheduleStudentPaymentService.save(payment);
|
|
|
+ }
|
|
|
|
|
|
- OrderCreateRes orderCreateRes = new OrderCreateRes();
|
|
|
- orderCreateRes.setRes(true);
|
|
|
- orderCreateRes.setMerchId(scheduleDto.getTeacherId());
|
|
|
- orderCreateRes.setBizId(groupId);
|
|
|
- orderCreateRes.setOriginalPrice(scheduleDto.getCoursePrice());
|
|
|
- orderCreateRes.setExpectPrice(scheduleDto.getCoursePrice());
|
|
|
- orderCreateRes.setGoodNum(scheduleDto.getCourseNum());
|
|
|
- orderCreateRes.setGoodType(GoodTypeEnum.PRACTICE);
|
|
|
- HttpResponseResult<OrderCreateRes> httpResponseResult = new HttpResponseResult<>();
|
|
|
- httpResponseResult.setData(orderCreateRes);
|
|
|
- log.info("buyPracticeCourse return {}", httpResponseResult);
|
|
|
- return httpResponseResult;
|
|
|
+ OrderCreateRes orderCreateRes = new OrderCreateRes();
|
|
|
+ orderCreateRes.setRes(true);
|
|
|
+ orderCreateRes.setMerchId(scheduleDto.getTeacherId());
|
|
|
+ orderCreateRes.setBizId(groupId);
|
|
|
+ orderCreateRes.setOriginalPrice(scheduleDto.getCoursePrice());
|
|
|
+ orderCreateRes.setExpectPrice(scheduleDto.getCoursePrice());
|
|
|
+ orderCreateRes.setGoodNum(scheduleDto.getCourseNum());
|
|
|
+ orderCreateRes.setGoodType(GoodTypeEnum.PRACTICE);
|
|
|
+ HttpResponseResult<OrderCreateRes> httpResponseResult = new HttpResponseResult<>();
|
|
|
+ httpResponseResult.setData(orderCreateRes);
|
|
|
+ log.info("buyPracticeCourse return {}", httpResponseResult);
|
|
|
+ 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);
|
|
|
+ } finally {
|
|
|
+ lock.unlock();
|
|
|
+ }
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -970,9 +988,12 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
throw new BizException("订单不存在!");
|
|
|
}
|
|
|
|
|
|
- //course_schedule中lock_改为0
|
|
|
+ //lock_改为0,课程&组状态改为ING
|
|
|
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());
|
|
|
+ courseGroupService.update(warp);
|
|
|
|
|
|
//查询陪练课服务费
|
|
|
String practiceServiceRateStr = sysConfigService.findConfigValue(SysConfigConstant.PRACTICE_SERVICE_FEE);
|
|
@@ -1050,13 +1071,17 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
Date now = new Date();
|
|
|
//校验时间是否为未来时刻
|
|
|
if (classDate.before(now) || startTime.before(now) || endTime.before(now)) {
|
|
|
- throw new BizException("时间不正确");
|
|
|
+ throw new BizException("排课日期必须大于当前日期");
|
|
|
+ }
|
|
|
+ if (!(DateUtil.dateToString(classDate).equals(DateUtil.dateToString(startTime))) ||
|
|
|
+ !(DateUtil.dateToString(startTime).equals(DateUtil.dateToString(endTime)))) {
|
|
|
+ throw new BizException("排课日期必须为同天");
|
|
|
}
|
|
|
|
|
|
//校验课程是否存在
|
|
|
CourseSchedule schedule = baseMapper.selectOne(Wrappers.<CourseSchedule>lambdaQuery()
|
|
|
.eq(CourseSchedule::getId, courseId)
|
|
|
- .eq(CourseSchedule::getLock, 1)
|
|
|
+ .eq(CourseSchedule::getLock, 0)
|
|
|
.eq(CourseSchedule::getStatus, CourseScheduleEnum.NOT_START)
|
|
|
.eq(CourseSchedule::getType, CourseScheduleEnum.PRACTICE));
|
|
|
if (ObjectUtil.isEmpty(schedule)) {
|
|
@@ -1071,7 +1096,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
throw new BizException("课程无人购买");
|
|
|
}
|
|
|
|
|
|
- //批量检查老师课时在数据库是否重复
|
|
|
+ //校验老师课程是否冲突
|
|
|
List<CourseSchedule> scheduleList = this.list(Wrappers.<CourseSchedule>lambdaQuery()
|
|
|
.eq(CourseSchedule::getTeacherId, teacherId)
|
|
|
.in(CourseSchedule::getStatus, Lists.newArrayList(CourseScheduleEnum.NOT_START.getCode(), CourseScheduleEnum.ING.getCode())));
|
|
@@ -1080,7 +1105,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
throw new BizException("老师排课冲突,课程id:{}", courseSchedule.getId());
|
|
|
}
|
|
|
}
|
|
|
- //批量检查学生课时在数据库是否重复
|
|
|
+
|
|
|
+ //校验学生课程是否冲突
|
|
|
List<CourseSchedule> studentList = baseMapper.selectSchedule(courseId);
|
|
|
for (CourseSchedule courseSchedule : studentList) {
|
|
|
if (inInterSection(startTime, endTime, courseSchedule.getStartTime(), courseSchedule.getEndTime(), true)) {
|
|
@@ -1108,7 +1134,26 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
|
|
|
homePage.setRecentCourses(baseMapper.selectRecentCourses(studentId));
|
|
|
}
|
|
|
if (studentId == null) {
|
|
|
- homePage.setRecentCourses(baseMapper.selectRecentCoursesTeacher(teacherId));
|
|
|
+ StudentHomePage.RecentCourses coursesPractice = baseMapper.selectRecentCoursesPractice(teacherId);
|
|
|
+ StudentHomePage.RecentCourses coursesLive = baseMapper.selectRecentCoursesLive(teacherId);
|
|
|
+
|
|
|
+ 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;
|
|
|
}
|
|
@@ -1185,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);
|
|
|
|
|
|
//老师端-学生买陪练课(短信)
|
|
@@ -1198,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);
|
|
|
|
|
|
//学生端-买陪练课(短信)
|
|
@@ -1255,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);
|
|
|
|
|
|
//老师端-明日课程提醒(短信)
|
|
@@ -1284,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;
|
|
|
+ }
|
|
|
}
|