<p>@PostMapping(&quot;/orderCourseByCoach&quot;)
public Result<Object> orderCourseByCoach(@RequestBody Map&lt;String, Object&gt; params, HttpServletRequest request) {
//权限验证
String token = (String) request.getAttribute(&quot;claims_coach&quot;);
if (StringUtils.isEmpty(token)) {
throw new RuntimeException(&quot;权限不足!&quot;);
}</p>
<pre><code>log.info(&quot;orderCourseByCoach请求报文:&quot; + params);

//解析前端传递参数
Long updateTimeId = Optional.ofNullable(params.get(&quot;updateTimeId&quot;))
        .map(String::valueOf)
        .map(Long::parseLong)
        .orElseThrow(() -&gt; new RuntimeException(&quot;updateTimeId为null&quot;));

JSONArray jsonArray = Optional.ofNullable((JSONArray) params.get(&quot;carUser&quot;))
        .orElseThrow(() -&gt; new RuntimeException(&quot;carUser为null&quot;));

List&lt;Long&gt; carUsers = jsonArray.toJavaList(Long.class);
log.info(&quot;通过前端传递拿到carUser为:&quot; + carUsers);

//查询当前课程信息
UpdateTime updateTime = updateTimeService.getById(updateTimeId);

if (updateTime.getCourseDate().before(RcqtUtils.getDay()) &amp;&amp; !updateTime.getCourseDate().equals(RcqtUtils.getDay())) {
    log.info(&quot;课程过期,无法预约!&quot;);
    return new Result&lt;&gt;(ResultCode.COURSE_DATE_OUT);
} else if (updateTime.getCourseDate().equals(RcqtUtils.getDay()) &amp;&amp; LocalTime.now().isAfter(updateTime.getStartReservationTime().toLocalTime())) {
    log.info(&quot;课程过期,无法预约!&quot;);
    return new Result&lt;&gt;(ResultCode.COURSE_DATE_OUT);
}

//查询课程教练信息
Coach coach = coachService.queryOneCoachByID(updateTime.getCoachId());

List&lt;CourseInfo&gt; courseInfoList = carUsers.stream().map(id -&gt; {
    CourseInfo courseInfo = new CourseInfo();
    courseInfo.setUserId(id);
    courseInfo.setTrainingStatus(0);//训练状态为待训练
    courseInfo.setUpdateTimeId(updateTimeId);
    //存放一份课程数据给学员
    courseInfo.setProjectTypeByUser(updateTime.getProjectType());
    courseInfo.setCourseDateByUser(updateTime.getCourseDate());
    courseInfo.setStartReservationTimeByUser(updateTime.getStartReservationTime());
    courseInfo.setEndReservationTimeByUser(updateTime.getEndReservationTime());
    courseInfo.setSubmitTime(new Date());//预约的时间
    return courseInfo;
}).collect(Collectors.toList());

if (!CollectionUtils.isEmpty(courseInfoList) &amp;&amp; !courseInfoService.saveBatch(courseInfoList)) {
    log.info(&quot;新增失败!!&quot;);
    return new Result&lt;&gt;(ResultCode.FAIL);
}

log.info(&quot;成功!&quot;);
int count = updateTime.getCurrentReservation() + courseInfoList.size();//存放目前预约人数
log.info(&quot;当前预约人数:&quot; + count);

//修改当前预约人数
updateTime.setCurrentReservation(count);

int a = updateTimeService.updateOneUpdateTimeByID(updateTime);

if (a &lt; 0) {
    log.info(&quot;修改当前预约人数失败!&quot;);
    return new Result&lt;&gt;(ResultCode.FAIL);
}

if (count &gt; updateTime.getMaxReservation()) {
    log.info(&quot;当前预约人数大于以前设置的最大预约人数&quot;);
    //修改当前最大预约人数
    updateTime.setMaxReservation(count);

    int ret = updateTimeService.updateOneUpdateTimeByID(updateTime);

    if (ret &gt; 0) {
        log.info(&quot;修改成功!给所有约课学员发送短信!&quot;);

        //通知学员
        for (Long id : carUsers) {
            CarUser carUser1 = carUserService.queryOneCarUserById(id);

            Map&lt;String, String&gt; map = new HashMap&lt;&gt;();
            map.put(&quot;coachName&quot;, coach.getCoachName());
            map.put(&quot;date&quot;, DateUtils.getTime(updateTime.getCourseDate()));
            map.put(&quot;time&quot;, RcqtUtils.getStrTime(updateTime.getStartReservationTime(), updateTime.getEndReservationTime()));
            map.put(&quot;project&quot;, updateTime.getProjectType());

            boolean c = msgService.noticeByOrderUserCourse(map, carUser1.getUserPhone());

            if (!c) {
                log.info(&quot;发送信息失败!&quot;);
                return new Result&lt;&gt;(ResultCode.FAIL);
            }

            System.out.println(&quot;【软件名称】您的教练 &quot; + coach.getRealName() + &quot; 帮您已预约 &quot; + DateUtils.getTime(updateTime.getCourseDate()) + &quot; &quot; + RcqtUtils.getStrTime(updateTime.getStartReservationTime(), updateTime.getEndReservationTime()) + &quot; &quot; + updateTime.getProjectType() + &quot; 的练车,请准时前往驾校练车,如有变动及时登录系统。&quot;);
        }

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

} else {
    log.info(&quot;当前预约人数小于等于以前设置预约人数!给所有约课学员发送短信!&quot;);

    for (Long id : carUsers) {
        CarUser carUser1 = carUserService.queryOneCarUserById(id);

        Map&lt;String, String&gt; map = new HashMap&lt;&gt;();
        map.put(&quot;coachName&quot;, coach.getCoachName());
        map.put(&quot;date&quot;, DateUtils.getTime(updateTime.getCourseDate()));
        map.put(&quot;time&quot;, RcqtUtils.getStrTime(updateTime.getStartReservationTime(), updateTime.getEndReservationTime()));
        map.put(&quot;project&quot;, updateTime.getProjectType());

        boolean c = msgService.noticeByOrderUserCourse(map, carUser1.getUserPhone());

        if (!c) {
            log.info(&quot;发送信息失败!&quot;);
            return new Result&lt;&gt;(ResultCode.FAIL);
        }

        System.out.println(&quot;【软件名称】您的教练 &quot; + coach.getRealName() + &quot; 帮您已预约 &quot; + DateUtils.getTime(updateTime.getCourseDate()) + &quot; &quot; + RcqtUtils.getStrTime(updateTime.getStartReservationTime(), updateTime.getEndReservationTime()) + &quot; &quot; + updateTime.getProjectType() + &quot; 的练车,请准时前往驾校练车,如有变动及时登录系统。&quot;);
    }

    return new Result&lt;&gt;(ResultCode.SUCCESS);
}
</code></pre>
3帮学员约课 PostMappingorderCourseByCoach public ResultObject orderCourseByCoachRequestBody MapString Object params HttpServletRequest request 权限验证 String token = String requestgetAttr

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

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