11package com .gpt .geumpumtabackend .rank .service ;
22
3+ import com .gpt .geumpumtabackend .global .exception .BusinessException ;
4+ import com .gpt .geumpumtabackend .global .exception .ExceptionType ;
35import com .gpt .geumpumtabackend .rank .domain .DepartmentRanking ;
46import com .gpt .geumpumtabackend .rank .domain .RankingType ;
57import com .gpt .geumpumtabackend .rank .domain .UserRanking ;
1012import com .gpt .geumpumtabackend .study .repository .StudySessionRepository ;
1113import com .gpt .geumpumtabackend .user .domain .User ;
1214import com .gpt .geumpumtabackend .user .repository .UserRepository ;
15+ import jakarta .transaction .Transactional ;
1316import lombok .RequiredArgsConstructor ;
1417import org .springframework .scheduling .annotation .Scheduled ;
1518import org .springframework .stereotype .Service ;
@@ -75,12 +78,14 @@ public void monthlyRankingScheduler() {
7578 }
7679
7780
81+ @ Transactional
7882 public void calculateAndSavePersonalRanking (LocalDateTime periodStart , LocalDateTime periodEnd , RankingType rankingType ) {
7983 List <PersonalRankingTemp > userRankingTemps = studySessionRepository .calculateFinalizedPeriodRanking (periodStart , periodEnd );
8084
8185 List <UserRanking > userRankings = userRankingTemps .stream ().map (
8286 dto -> {
83- User user = userRepository .getReferenceById (dto .getUserId ());
87+ User user = userRepository .findById (dto .getUserId ())
88+ .orElseThrow (()-> new BusinessException (ExceptionType .USER_NOT_FOUND ));
8489 return UserRanking .builder ()
8590 .user (user )
8691 .totalMillis (dto .getTotalMillis ())
@@ -93,6 +98,7 @@ public void calculateAndSavePersonalRanking(LocalDateTime periodStart, LocalDate
9398 userRankingRepository .saveAll (userRankings );
9499 }
95100
101+ @ Transactional
96102 public void calculateAndSaveDepartmentRanking (LocalDateTime periodStart , LocalDateTime periodEnd , RankingType rankingType ) {
97103 List <DepartmentRankingTemp > departmentRankingTemps = studySessionRepository .calculateFinalizedDepartmentRanking (periodStart , periodEnd );
98104
0 commit comments