<p>//2.通过日期查询约课安排
@GetMapping(&quot;/queryCourseByCoachIDByDate&quot;)
public Result<Object> queryCourseByCoachIDByDate(Coach coach, String date, HttpServletRequest request) throws ParseException {</p>
<pre><code>//权限验证
String token = (String) request.getAttribute(&quot;claims_coach&quot;);

if (token == null || &quot;&quot;.equals(token)) {
    throw new RuntimeException(&quot;权限不足!&quot;);
}

if (coach.getCoachId() == null) {
    log.info(&quot;coachId为null&quot;);
    return new Result&lt;&gt;(ResultCode.FAIL);
}

//转换前端传递日期格式
Date convertedDate = RcqtUtils.getconvertedDate(date);

Map&lt;String, Object&gt; map = new HashMap&lt;&gt;();
//查询日期对应的数据
List&lt;UpdateTime&gt; updateTimeList = updateTimeService.queryUpdateTimeByDate(coach.getCoachId(), convertedDate);

log.info(updateTimeList.toString());
if (CollectionUtils.isEmpty(updateTimeList)) {
    log.info(&quot;查询当前日期数据为空!&quot;);
    //查询教练自己设置的默认时间段
    List&lt;DefaultTime&gt; defaultTimes = defaultTimeService.queryDefaultTimeByCoachID(coach.getCoachId());
    List&lt;UpdateTime&gt; updateTimes = new ArrayList&lt;&gt;();//存放新增的修改时间段

    if (!defaultTimes.isEmpty()) {
        for (DefaultTime defaultTime : defaultTimes) {
            //4.新增修改时间段
            if (defaultTime.getStartReservationTime() != null &amp;&amp; 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(&quot;yyyy-MM-dd&quot;);
                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(&quot;新增失败&quot;);
            return new Result&lt;&gt;(ResultCode.FAIL);
        }
        updateTimeList = updateTimes;
    }

}

List&lt;UpdateTimeDto&gt; updateTimeDtoList = new ArrayList&lt;&gt;();
for (UpdateTime updateTime : updateTimeList) {
    UpdateTimeDto updateTimeDto = new UpdateTimeDto();
    BeanUtils.copyProperties(updateTime, updateTimeDto);

    List&lt;CourseInfo&gt; courseInfos = courseInfoService.queryCourseByUpdateTimeId(updateTime.getUpdateTimeId());
    List&lt;CarUser&gt; carUserList = new ArrayList&lt;&gt;();

    //获取约课学员
    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()) &amp;&amp; updateTime.getStartReservationTime() != null) {
        updateTimeDto.setIsTimeOut(LocalTime.now().isAfter(updateTime.getStartReservationTime().toLocalTime()));
    }

    updateTimeDtoList.add(updateTimeDto);

    map.put(&quot;isBreakDate&quot;, updateTime.getIsBreakDate());//给前端总的休息状态
}

//修改数据库状态
boolean b = updateTimeService.updateBatchById(updateTimeList);

if (!b) {
    log.info(&quot;修改失败!&quot;);
    return new Result&lt;&gt;(ResultCode.FAIL);
}

boolean isTimeOutAll = updateTimeDtoList.stream().anyMatch(updateTimeDto -&gt; updateTimeDto.getIsTimeOut() != null &amp;&amp; updateTimeDto.getIsTimeOut());
map.put(&quot;isTimeOutAll&quot;, isTimeOutAll);

map.put(&quot;updateTimeList&quot;, updateTimeDtoList);
log.info(&quot;通过日期查询约课安排成功!&quot;);
return new Result&lt;&gt;(ResultCode.SUCCESS, map);
</code></pre>
2通过日期查询约课安排 GetMappingqueryCourseByCoachIDByDate public ResultObject queryCourseByCoachIDByDateCoach coach String date HttpServletRequest request throws ParseException 权限验证 String

原文地址: https://www.cveoy.top/t/topic/imrz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录