2通过日期查询约课安排 GetMappingqueryCourseByCoachIDByDate public ResultObject queryCourseByCoachIDByDateCoach coach String date HttpServletRequest request throws ParseException 权限验证 String
<p>//2.通过日期查询约课安排
@GetMapping("/queryCourseByCoachIDByDate")
public Result<Object> queryCourseByCoachIDByDate(Coach coach, String date, HttpServletRequest request) throws ParseException {</p>
<pre><code>//权限验证
String token = (String) request.getAttribute("claims_coach");
if (token == null || "".equals(token)) {
throw new RuntimeException("权限不足!");
}
if (coach.getCoachId() == null) {
log.info("coachId为null");
return new Result<>(ResultCode.FAIL);
}
//转换前端传递日期格式
Date convertedDate = RcqtUtils.getconvertedDate(date);
Map<String, Object> map = new HashMap<>();
//查询日期对应的数据
List<UpdateTime> updateTimeList = updateTimeService.queryUpdateTimeByDate(coach.getCoachId(), convertedDate);
log.info(updateTimeList.toString());
if (CollectionUtils.isEmpty(updateTimeList)) {
log.info("查询当前日期数据为空!");
//查询教练自己设置的默认时间段
List<DefaultTime> defaultTimes = defaultTimeService.queryDefaultTimeByCoachID(coach.getCoachId());
List<UpdateTime> updateTimes = new ArrayList<>();//存放新增的修改时间段
if (!defaultTimes.isEmpty()) {
for (DefaultTime defaultTime : defaultTimes) {
//4.新增修改时间段
if (defaultTime.getStartReservationTime() != null && defaultTime.getEndReservationTime() != null) {
UpdateTime updateTime = new UpdateTime();
updateTime.setCoachId(coach.getCoachId());
updateTime.setProjectType(defaultTime.getProjectType());
updateTime.setCourseDate(convertedDate);
updateTime.setStartReservationTime(defaultTime.getStartReservationTime());
updateTime.setEndReservationTime(defaultTime.getEndReservationTime());
updateTime.setMaxReservation(defaultTime.getMaxReservation());
updateTime.setCourseStatus(false);//人数未满
updateTime.setCurrentReservation(0);//当前预约人数0
//5.查询当前日期是周几,默认时间段里的休息日是否包含当前日期
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String currentDate = dateFormat.format(convertedDate);
String week = RcqtUtils.getDayOfWeek(currentDate);//得到当前日期对应周几
if (!StringUtils.isEmpty(week)) {
updateTime.setIsBreakDate(defaultTime.getRestDay().contains(week));
}
updateTimes.add(updateTime);
}
}
boolean b = updateTimeService.saveBatch(updateTimes);
if (!b) {
log.info("新增失败");
return new Result<>(ResultCode.FAIL);
}
updateTimeList = updateTimes;
}
}
List<UpdateTimeDto> updateTimeDtoList = new ArrayList<>();
for (UpdateTime updateTime : updateTimeList) {
UpdateTimeDto updateTimeDto = new UpdateTimeDto();
BeanUtils.copyProperties(updateTime, updateTimeDto);
List<CourseInfo> courseInfos = courseInfoService.queryCourseByUpdateTimeId(updateTime.getUpdateTimeId());
List<CarUser> carUserList = new ArrayList<>();
//获取约课学员
if (!courseInfos.isEmpty()) {
for (CourseInfo courseInfo : courseInfos) {
CarUser carUser = carUserService.queryOneCarUserById(courseInfo.getUserId());
carUserList.add(carUser);
}
updateTimeDto.setCurrentReservation(carUserList.size());//当前预约人数
updateTime.setCurrentReservation(carUserList.size());
//当前预约人数等于设置最大预约人数
if (carUserList.size() == updateTime.getMaxReservation()) {
updateTimeDto.setCourseStatus(true);//设置课程状态为已满
updateTime.setCourseStatus(true);
}
updateTimeDto.setCarUserList(carUserList);
}
//判断时间是否过期
if (updateTime.getCourseDate().equals(RcqtUtils.getDay()) && updateTime.getStartReservationTime() != null) {
updateTimeDto.setIsTimeOut(LocalTime.now().isAfter(updateTime.getStartReservationTime().toLocalTime()));
}
updateTimeDtoList.add(updateTimeDto);
map.put("isBreakDate", updateTime.getIsBreakDate());//给前端总的休息状态
}
//修改数据库状态
boolean b = updateTimeService.updateBatchById(updateTimeList);
if (!b) {
log.info("修改失败!");
return new Result<>(ResultCode.FAIL);
}
boolean isTimeOutAll = updateTimeDtoList.stream().anyMatch(updateTimeDto -> updateTimeDto.getIsTimeOut() != null && updateTimeDto.getIsTimeOut());
map.put("isTimeOutAll", isTimeOutAll);
map.put("updateTimeList", updateTimeDtoList);
log.info("通过日期查询约课安排成功!");
return new Result<>(ResultCode.SUCCESS, map);
</code></pre>
原文地址: https://www.cveoy.top/t/topic/imrz 著作权归作者所有。请勿转载和采集!