#399 Код-ревью отчета по задачам пользователей
Сделать код-ревью:
@RestController
@RequestMapping("/user")
@RequiredArgsConstructor
@Sl4j
public class UserController {
private final ExerciseService exerciseService;
private final UserRepository userRepository;
@RequestMapping("/get-report")
public Map<String, Double> getReport() {
log.info("get report");
var users = userRepository.findAll();
Map<String, Double> result = new HashMap<>();
users.forEach(
user -> {
var exercises = exerciseService.getUserPerformance(user.id);
var performance = exercises
.stream()
.mapToDouble(t -> Duration.between(t.getStartTime(), t.getEndTime()).toMinutes())
.average().orElse(0);
result.put(user.getName(), performance);
}
);
return result;
}
}
@Data
class User {
Long id;
String name;
}
@Data
class Exercise {
Long id;
@NotNull
LocalDateTime startTime = LocalDateTime.now();
LocalDateTime endTime;
}
@Service
@RequiredArgsConstructor
class ExerciseService {
private final ExerciseRepository exerciseRepository;
List<Exercise> getUserPerformance(Long userId) {
return exerciseRepository.findByUserId(userId);
}
}
interface ExerciseRepository {
List<Exercise> findByUserId(Long userId);
}
interface UserRepository {
List<User> findAll();
}
Разбор вопроса
Войди, чтобы начать диалог
Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти
Доступно с Premium
Это лишь одно из решений, доступных с Premium. А ещё:
- 250+ продвинутых лекций
- 1300+ практических заданий
- 500+ решений задач с реальных собеседований
- Именные сертификаты Java Hub
- Расширенный доступ к AI-ментору