根据提供的代码,以下是对代码的优化和检查:

  1. 在方法签名中,建议使用具体的数据类型而不是使用泛型Object作为返回类型。例如,将Result<Object>更改为Result<Map<String, Object>>
  2. 不建议在控制器方法中直接抛出RuntimeException。可以使用自定义的异常类来处理权限不足的情况,并在全局异常处理器中捕获和处理该异常。
  3. 在权限验证部分,可以使用StringUtils.isEmpty(token)来检查token是否为空,而不是使用"".equals(token)
  4. 在教练ID为空的情况下,可以直接返回失败的结果,而不需要打印日志。可以使用return Result.failure()来返回失败的结果。
  5. 在查询教练课程的部分,可以使用Java 8的流和Stream API来简化代码。例如,可以使用LocalTime.now().isAfter(c.getStartReservationTime())来替代now.after(c.getStartReservationTime())
  6. 建议在方法中适当地添加注释以提高代码的可读性和可维护性。
  7. 检查是否正确设置了日志记录器。
  8. 检查是否正确引入了相关的类和接口。

根据以上优化和检查,以下是优化后的代码:

@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);
}
``
3根据ID查询出一个教练 GetMappingqueryOneCoachByIdMy public ResultObject queryOneCoachByIdMyCoach coach HttpServletRequest request 权限验证 String token = String requestgetAttributeclaims_coach;

原文地址: https://www.cveoy.top/t/topic/hXva 著作权归作者所有。请勿转载和采集!

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