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 = Optional.ofNullable(params.get("updateTimeId"))
.map(Object::toString)
.map(Long::parseLong)
.orElseThrow(() -> {
log.info("updateTimeId为null");
return new Result<>(ResultCode.FAIL);
});
long userId = Optional.ofNullable(params.get("userId"))
.map(Object::toString)
.map(Long::parseLong)
.orElseThrow(() -> {
log.info("userId为null");
return new Result<>(ResultCode.FAIL);
});
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 = new ArrayList<>();
//获取约课学员
if (!courseInfos.isEmpty()) {
for (CourseInfo courseInfo : courseInfos) {
CarUser carUser1 = carUserService.queryOneCarUserById(courseInfo.getUserId());
currentCarUsers.add(carUser1);
if (Objects.equals(userId, courseInfo.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)) {
log.info("该时间段已过期,请选择其他时间段");
return new Result<>(ResultCode.TIME_OUT);
} else if (updateTime.getCourseDate().equals(today)) {
if (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("新增成功!");
int count = updateTime.getCurrentReservation() + 1;//存放目前预约人数
log.info("当前预约人数:" + count);
//修改当前预约人数
updateTime.setCurrentReservation(count);
int a = updateTimeService.updateOneUpdateTimeByID(updateTime);
if (a < 0) {
log.info("修改当前预约人数失败!");
return new Result<>(ResultCode.FAIL);
}
//通知教练
//教练短信发送规则如下:
//【软件名称】{教练名称}教练,{学员名称}学员预约了您{年月日}{时间段}{阶段}的练车,如有变动及时登录系统。
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());
log.info("coach.getCoachPhone():" + coach.getCoachPhone());
boolean c = msgService.noticeByOrderUserCourseByUser(map, coach.getCoachPhone());
if (!c) {
log.info("发送信息失败!");
return new Result<>(ResultCode.FAIL);
}
System.out.println("【软件名称】" + coach.getRealName() + "教练," + carUser.getRealName() + "学员预约了您" + DateUtils.getTime(updateTime.getCourseDate()) +" "+ RcqtUtils.getStrTime(updateTime.getStartReservationTime(), updateTime.getEndReservationTime()) +" "+updateTime.getProjectType() + "的练车,如有变动及时登录系统。");
return new Result<>(ResultCode.SUCCESS);
} else {
log.info("新增失败!!");
return new Result<>(ResultCode.FAIL);
}
</code></pre>
原文地址: http://www.cveoy.top/t/topic/isjN 著作权归作者所有。请勿转载和采集!