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

// 前端传递参数
long updateTimeId = Long.parseLong(params.get(&quot;updateTimeId&quot;).toString());
long userId = Long.parseLong(params.get(&quot;userId&quot;).toString());

CourseInfo courseInfo0 = courseInfoService.queryCourseByUpdateTimeIdAndUserId(updateTimeId, userId);

if (courseInfo0 != null &amp;&amp; courseInfo0.getTrainingStatus() != 3) {
    log.info(&quot;请勿重复预约!&quot;);
    return new Result&lt;&gt;(ResultCode.IS_ORDERED);
}

CarUser carUser = carUserService.queryOneCarUserById(userId);
// 查询当前课程信息
UpdateTime updateTime = updateTimeService.getById(updateTimeId);
// 查询课程教练信息
Coach coach = coachService.queryOneCoachByID(updateTime.getCoachId());

if (updateTime.getIsUpdate() != null &amp;&amp; updateTime.getIsUpdate() == 1) {
    log.info(&quot;教练正在修改数据,无法预约!&quot;);
    return new Result&lt;&gt;(ResultCode.CAN_NOT_ORDER);
}

// 查询此updateTimeId所有约课情况
List&lt;CourseInfo&gt; courseInfos = courseInfoService.queryCourseByUpdateTimeId(updateTimeId);
// 存放当前所有预约的学员
List&lt;CarUser&gt; currentCarUsers = courseInfos.stream().map(courseInfo -&gt; carUserService.queryOneCarUserById(courseInfo.getUserId())).toList();

if (currentCarUsers.stream().anyMatch(carUser1 -&gt; Objects.equals(userId, carUser1.getUserId()))) {
    log.info(&quot;你已预约该时间段&quot;);
    return new Result&lt;&gt;(ResultCode.ALREADY_ORDER);
}

if (currentCarUsers.size() == updateTime.getMaxReservation()) {
    log.info(&quot;该时间段已约满,请选择其他时间段&quot;);
    return new Result&lt;&gt;(ResultCode.ALREADY_ORDER_FULL);
}

Date today = RcqtUtils.getDay();
if (updateTime.getCourseDate().before(today) || (updateTime.getCourseDate().equals(today) &amp;&amp; LocalTime.now().isAfter(updateTime.getStartReservationTime().toLocalTime()))) {
    log.info(&quot;该时间段已过期,请选择其他时间段&quot;);
    return new Result&lt;&gt;(ResultCode.TIME_OUT);
}

// 给课程表添加新课程
CourseInfo courseInfo = new CourseInfo();
courseInfo.setUpdateTimeId(updateTimeId);
courseInfo.setUserId(userId);
courseInfo.setTrainingStatus(0);// 新增预约时训练状态默认待训练

courseInfo.setProjectTypeByUser(updateTime.getProjectType());
courseInfo.setCourseDateByUser(updateTime.getCourseDate());
courseInfo.setStartReservationTimeByUser(updateTime.getStartReservationTime());
courseInfo.setEndReservationTimeByUser(updateTime.getEndReservationTime());

courseInfo.setSubmitTime(new Date());

boolean b = courseInfoService.save(courseInfo);

if (b) {
    log.info(&quot;新增成功!&quot;);
    // 通知教练
    CompletableFuture.runAsync(() -&gt; {
        try {
            Map&lt;String, String&gt; map = new HashMap&lt;&gt;();
            map.put(&quot;coachName&quot;, coach.getRealName());
            map.put(&quot;userName&quot;, carUser.getRealName());
            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.noticeByOrderUserCourseByUser(map, coach.getCoachPhone());

            if (!c) {
                log.info(&quot;发送信息失败!&quot;);
            }
            System.out.println(&quot;【软件名称】&quot; + coach.getRealName() + &quot;教练,&quot; + carUser.getRealName() + &quot;学员预约了您&quot; + DateUtils.getTime(updateTime.getCourseDate()) +&quot; &quot;+ RcqtUtils.getStrTime(updateTime.getStartReservationTime(), updateTime.getEndReservationTime()) +&quot; &quot;+updateTime.getProjectType() + &quot;的练车,如有变动及时登录系统。&quot;);
        } catch (Exception e) {
            log.error(&quot;发送信息失败!&quot;, e);
        }
    });

    return new Result&lt;&gt;(ResultCode.SUCCESS);
} else {
    log.info(&quot;新增失败!!&quot;);
    return new Result&lt;&gt;(ResultCode.FAIL);
}
</code></pre>
PostMappingorderCourseByUser public ResultObject orderCourseByUserRequestBody MapString Object params HttpServletRequest request 权限验证 String token = String requestgetAttributeclaims

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

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