3根据ID查询出一个教练 GetMappingqueryOneCoachByIdMy public ResultObject queryOneCoachByIdMyCoach coach HttpServletRequest request 权限验证 String token = String requestgetAttributeclaims_coach;
根据提供的代码,以下是对代码的优化和检查:
- 在方法签名中,建议使用具体的数据类型而不是使用泛型Object作为返回类型。例如,将
Result<Object>更改为Result<Map<String, Object>>。 - 不建议在控制器方法中直接抛出RuntimeException。可以使用自定义的异常类来处理权限不足的情况,并在全局异常处理器中捕获和处理该异常。
- 在权限验证部分,可以使用
StringUtils.isEmpty(token)来检查token是否为空,而不是使用"".equals(token)。 - 在教练ID为空的情况下,可以直接返回失败的结果,而不需要打印日志。可以使用
return Result.failure()来返回失败的结果。 - 在查询教练课程的部分,可以使用Java 8的流和Stream API来简化代码。例如,可以使用
LocalTime.now().isAfter(c.getStartReservationTime())来替代now.after(c.getStartReservationTime())。 - 建议在方法中适当地添加注释以提高代码的可读性和可维护性。
- 检查是否正确设置了日志记录器。
- 检查是否正确引入了相关的类和接口。
根据以上优化和检查,以下是优化后的代码:
@GetMapping("/queryOneCoachByIdMy")
public Result<Map<String, Object>> queryOneCoachByIdMy(Coach coach, HttpServletRequest request) {
// 权限验证
String token = (String) request.getAttribute("claims_coach");
if (StringUtils.isEmpty(token)) {
throw new InsufficientPermissionException("权限不足!");
}
if (coach.getCoachId() == null) {
return Result.failure(ResultCode.FAIL);
}
// 查询教练信息
CoachDto coachDto = coachService.queryOneCoachByIDAndDrivingSchool(coach.getCoachId());
// 查询教练车辆使用情况
int carUserCount = coachService.queryCoachCarUserByCoachIdByCount(coach.getCoachId());
int carUserCountByStudy = coachService.queryCoachCarUserByCoachIdAndStudyStatusByCount(coach.getCoachId(), true);
int carUserCountByNotStudy = coachService.queryCoachCarUserByCoachIdAndStudyStatusByCount(coach.getCoachId(), false);
coachDto.setCarUserCount(carUserCount);
coachDto.setCarUserCountByStudy(carUserCountByStudy);
coachDto.setCarUserCountByNotStudy(carUserCountByNotStudy);
// 判断教练是否在工作中
Date currentDate = RcqtUtils.getDay();
List<CourseDto> courseDtoList = courseInfoService.queryCourseByCoachId(coach.getCoachId(), currentDate);
boolean isWorking = courseDtoList.stream()
.anyMatch(c -> LocalTime.now().isAfter(c.getStartReservationTime()) && LocalTime.now().isBefore(c.getEndReservationTime()));
coachDto.setWorkStatus(isWorking);
Map<String, Object> map = new HashMap<>();
map.put("coach", coachDto);
return Result.success(map);
}
``
原文地址: https://www.cveoy.top/t/topic/hXva 著作权归作者所有。请勿转载和采集!