PostMappingorderCourseByUser public ResultObject orderCourseByUserRequestBody MapString Object params HttpServletRequest request 权限验证 String token = String requestgetAttributeclaims
<p>@PostMapping("/orderCourseByUser")
public Result<Object> orderCourseByUser(@RequestBody Map<String, Object> params, HttpServletRequest request) {
// 权限验证
String token = (String) request.getAttribute("claims_user");
if (token == null || "".equals(token)) {
throw new RuntimeException("权限不足!");
}</p>
<pre><code>log.info("orderCourseByCoach请求报文:" + params);
// 前端传递参数
long updateTimeId = Long.parseLong(params.get("updateTimeId").toString());
long userId = Long.parseLong(params.get("userId").toString());
CourseInfo courseInfo0 = courseInfoService.queryCourseByUpdateTimeIdAndUserId(updateTimeId, userId);
if (courseInfo0 != null && courseInfo0.getTrainingStatus() != 3) {
log.info("请勿重复预约!");
return new Result<>(ResultCode.IS_ORDERED);
}
CarUser carUser = carUserService.queryOneCarUserById(userId);
// 查询当前课程信息
UpdateTime updateTime = updateTimeService.getById(updateTimeId);
// 查询课程教练信息
Coach coach = coachService.queryOneCoachByID(updateTime.getCoachId());
if (updateTime.getIsUpdate() != null && updateTime.getIsUpdate() == 1) {
log.info("教练正在修改数据,无法预约!");
return new Result<>(ResultCode.CAN_NOT_ORDER);
}
// 查询此updateTimeId所有约课情况
List<CourseInfo> courseInfos = courseInfoService.queryCourseByUpdateTimeId(updateTimeId);
// 存放当前所有预约的学员
List<CarUser> currentCarUsers = courseInfos.stream().map(courseInfo -> carUserService.queryOneCarUserById(courseInfo.getUserId())).toList();
if (currentCarUsers.stream().anyMatch(carUser1 -> Objects.equals(userId, carUser1.getUserId()))) {
log.info("你已预约该时间段");
return new Result<>(ResultCode.ALREADY_ORDER);
}
if (currentCarUsers.size() == updateTime.getMaxReservation()) {
log.info("该时间段已约满,请选择其他时间段");
return new Result<>(ResultCode.ALREADY_ORDER_FULL);
}
Date today = RcqtUtils.getDay();
if (updateTime.getCourseDate().before(today) || (updateTime.getCourseDate().equals(today) && LocalTime.now().isAfter(updateTime.getStartReservationTime().toLocalTime()))) {
log.info("该时间段已过期,请选择其他时间段");
return new Result<>(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("新增成功!");
// 通知教练
CompletableFuture.runAsync(() -> {
try {
Map<String, String> map = new HashMap<>();
map.put("coachName", coach.getRealName());
map.put("userName", carUser.getRealName());
map.put("date", DateUtils.getTime(updateTime.getCourseDate()));
map.put("time", RcqtUtils.getStrTime(updateTime.getStartReservationTime(), updateTime.getEndReservationTime()));
map.put("project", updateTime.getProjectType());
boolean c = msgService.noticeByOrderUserCourseByUser(map, coach.getCoachPhone());
if (!c) {
log.info("发送信息失败!");
}
System.out.println("【软件名称】" + coach.getRealName() + "教练," + carUser.getRealName() + "学员预约了您" + DateUtils.getTime(updateTime.getCourseDate()) +" "+ RcqtUtils.getStrTime(updateTime.getStartReservationTime(), updateTime.getEndReservationTime()) +" "+updateTime.getProjectType() + "的练车,如有变动及时登录系统。");
} catch (Exception e) {
log.error("发送信息失败!", e);
}
});
return new Result<>(ResultCode.SUCCESS);
} else {
log.info("新增失败!!");
return new Result<>(ResultCode.FAIL);
}
</code></pre>
原文地址: http://www.cveoy.top/t/topic/isoA 著作权归作者所有。请勿转载和采集!