<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 = Optional.ofNullable(params.get(&quot;updateTimeId&quot;))
        .map(Object::toString)
        .map(Long::parseLong)
        .orElseThrow(() -&gt; {
            log.info(&quot;updateTimeId为null&quot;);
            return new Result&lt;&gt;(ResultCode.FAIL);
        });

long userId = Optional.ofNullable(params.get(&quot;userId&quot;))
        .map(Object::toString)
        .map(Long::parseLong)
        .orElseThrow(() -&gt; {
            log.info(&quot;userId为null&quot;);
            return new Result&lt;&gt;(ResultCode.FAIL);
        });

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 = new ArrayList&lt;&gt;();

//获取约课学员
if (!courseInfos.isEmpty()) {
    for (CourseInfo courseInfo : courseInfos) {
        CarUser carUser1 = carUserService.queryOneCarUserById(courseInfo.getUserId());
        currentCarUsers.add(carUser1);

        if (Objects.equals(userId, courseInfo.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)) {
    log.info(&quot;该时间段已过期,请选择其他时间段&quot;);
    return new Result&lt;&gt;(ResultCode.TIME_OUT);

} else if (updateTime.getCourseDate().equals(today)) {
    if (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;);
    int count = updateTime.getCurrentReservation() + 1;//存放目前预约人数
    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);
    }

    //通知教练
    //教练短信发送规则如下:
    //【软件名称】{教练名称}教练,{学员名称}学员预约了您{年月日}{时间段}{阶段}的练车,如有变动及时登录系统。
    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());

    log.info(&quot;coach.getCoachPhone():&quot; + coach.getCoachPhone());
    boolean c = msgService.noticeByOrderUserCourseByUser(map, coach.getCoachPhone());

    if (!c) {
        log.info(&quot;发送信息失败!&quot;);
        return new Result&lt;&gt;(ResultCode.FAIL);
    }
    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;);

    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/isjN 著作权归作者所有。请勿转载和采集!

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