Skip to content

Commit ba6c689

Browse files
committed
refcator : 랭킹 계산 @transactional 추가
1 parent 25c4838 commit ba6c689

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

src/main/java/com/gpt/geumpumtabackend/rank/service/RankingSchedulerService.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.gpt.geumpumtabackend.rank.service;
22

3+
import com.gpt.geumpumtabackend.global.exception.BusinessException;
4+
import com.gpt.geumpumtabackend.global.exception.ExceptionType;
35
import com.gpt.geumpumtabackend.rank.domain.DepartmentRanking;
46
import com.gpt.geumpumtabackend.rank.domain.RankingType;
57
import com.gpt.geumpumtabackend.rank.domain.UserRanking;
@@ -10,6 +12,7 @@
1012
import com.gpt.geumpumtabackend.study.repository.StudySessionRepository;
1113
import com.gpt.geumpumtabackend.user.domain.User;
1214
import com.gpt.geumpumtabackend.user.repository.UserRepository;
15+
import jakarta.transaction.Transactional;
1316
import lombok.RequiredArgsConstructor;
1417
import org.springframework.scheduling.annotation.Scheduled;
1518
import 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

Comments
 (0)