3帮学员约课 PostMappingorderCourseByCoach public ResultObject orderCourseByCoachRequestBody MapString Object params HttpServletRequest request 权限验证 String token = String requestgetAttr
<p>@PostMapping("/orderCourseByCoach")
public Result<Object> orderCourseByCoach(@RequestBody Map<String, Object> params, HttpServletRequest request) {
//权限验证
String token = (String) request.getAttribute("claims_coach");
if (StringUtils.isEmpty(token)) {
throw new RuntimeException("权限不足!");
}</p>
<pre><code>log.info("orderCourseByCoach请求报文:" + params);
//解析前端传递参数
Long updateTimeId = Optional.ofNullable(params.get("updateTimeId"))
.map(String::valueOf)
.map(Long::parseLong)
.orElseThrow(() -> new RuntimeException("updateTimeId为null"));
JSONArray jsonArray = Optional.ofNullable((JSONArray) params.get("carUser"))
.orElseThrow(() -> new RuntimeException("carUser为null"));
List<Long> carUsers = jsonArray.toJavaList(Long.class);
log.info("通过前端传递拿到carUser为:" + carUsers);
//查询当前课程信息
UpdateTime updateTime = updateTimeService.getById(updateTimeId);
if (updateTime.getCourseDate().before(RcqtUtils.getDay()) && !updateTime.getCourseDate().equals(RcqtUtils.getDay())) {
log.info("课程过期,无法预约!");
return new Result<>(ResultCode.COURSE_DATE_OUT);
} else if (updateTime.getCourseDate().equals(RcqtUtils.getDay()) && LocalTime.now().isAfter(updateTime.getStartReservationTime().toLocalTime())) {
log.info("课程过期,无法预约!");
return new Result<>(ResultCode.COURSE_DATE_OUT);
}
//查询课程教练信息
Coach coach = coachService.queryOneCoachByID(updateTime.getCoachId());
List<CourseInfo> courseInfoList = carUsers.stream().map(id -> {
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) && !courseInfoService.saveBatch(courseInfoList)) {
log.info("新增失败!!");
return new Result<>(ResultCode.FAIL);
}
log.info("成功!");
int count = updateTime.getCurrentReservation() + courseInfoList.size();//存放目前预约人数
log.info("当前预约人数:" + count);
//修改当前预约人数
updateTime.setCurrentReservation(count);
int a = updateTimeService.updateOneUpdateTimeByID(updateTime);
if (a < 0) {
log.info("修改当前预约人数失败!");
return new Result<>(ResultCode.FAIL);
}
if (count > updateTime.getMaxReservation()) {
log.info("当前预约人数大于以前设置的最大预约人数");
//修改当前最大预约人数
updateTime.setMaxReservation(count);
int ret = updateTimeService.updateOneUpdateTimeByID(updateTime);
if (ret > 0) {
log.info("修改成功!给所有约课学员发送短信!");
//通知学员
for (Long id : carUsers) {
CarUser carUser1 = carUserService.queryOneCarUserById(id);
Map<String, String> map = new HashMap<>();
map.put("coachName", coach.getCoachName());
map.put("date", DateUtils.getTime(updateTime.getCourseDate()));
map.put("time", RcqtUtils.getStrTime(updateTime.getStartReservationTime(), updateTime.getEndReservationTime()));
map.put("project", updateTime.getProjectType());
boolean c = msgService.noticeByOrderUserCourse(map, carUser1.getUserPhone());
if (!c) {
log.info("发送信息失败!");
return new Result<>(ResultCode.FAIL);
}
System.out.println("【软件名称】您的教练 " + coach.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);
}
} else {
log.info("当前预约人数小于等于以前设置预约人数!给所有约课学员发送短信!");
for (Long id : carUsers) {
CarUser carUser1 = carUserService.queryOneCarUserById(id);
Map<String, String> map = new HashMap<>();
map.put("coachName", coach.getCoachName());
map.put("date", DateUtils.getTime(updateTime.getCourseDate()));
map.put("time", RcqtUtils.getStrTime(updateTime.getStartReservationTime(), updateTime.getEndReservationTime()));
map.put("project", updateTime.getProjectType());
boolean c = msgService.noticeByOrderUserCourse(map, carUser1.getUserPhone());
if (!c) {
log.info("发送信息失败!");
return new Result<>(ResultCode.FAIL);
}
System.out.println("【软件名称】您的教练 " + coach.getRealName() + " 帮您已预约 " + DateUtils.getTime(updateTime.getCourseDate()) + " " + RcqtUtils.getStrTime(updateTime.getStartReservationTime(), updateTime.getEndReservationTime()) + " " + updateTime.getProjectType() + " 的练车,请准时前往驾校练车,如有变动及时登录系统。");
}
return new Result<>(ResultCode.SUCCESS);
}
</code></pre>
原文地址: https://www.cveoy.top/t/topic/imqi 著作权归作者所有。请勿转载和采集!