Skip to content

Commit 7fe060c

Browse files
authored
Merge pull request #301 from prgrms-web-devcourse-final-project/refactor/EA3-195-study
[EA3-195] refactor: 스터디 종료 로직 쿼리 수정
2 parents 8df9db4 + 0e9e5c3 commit 7fe060c

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

src/main/java/grep/neogulcoder/domain/study/service/StudySchedulerService.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import grep.neogulcoder.domain.study.Study;
55
import grep.neogulcoder.domain.study.StudyMember;
66
import grep.neogulcoder.domain.study.event.StudyExtensionReminderEvent;
7+
import grep.neogulcoder.domain.study.repository.StudyMemberQueryRepository;
78
import grep.neogulcoder.domain.study.repository.StudyMemberRepository;
89
import grep.neogulcoder.domain.study.repository.StudyRepository;
910
import lombok.RequiredArgsConstructor;
@@ -14,6 +15,8 @@
1415
import java.time.LocalDate;
1516
import java.time.LocalDateTime;
1617
import java.util.List;
18+
import java.util.Map;
19+
import java.util.stream.Collectors;
1720

1821
@Transactional(readOnly = true)
1922
@RequiredArgsConstructor
@@ -24,6 +27,7 @@ public class StudySchedulerService {
2427
private final BuddyEnergyService buddyEnergyService;
2528
private final StudyMemberRepository studyMemberRepository;
2629
private final ApplicationEventPublisher eventPublisher;
30+
private final StudyMemberQueryRepository studyMemberQueryRepository;
2731

2832
@Transactional
2933
public void findStudiesEndingIn7Days() {
@@ -43,14 +47,27 @@ public void finalizeStudies() {
4347
LocalDateTime now = LocalDateTime.now();
4448
List<Study> studiesToBeFinished = studyRepository.findStudiesToBeFinished(now);
4549

50+
Map<Long, List<StudyMember>> memberMap = getActivatedMemberMap(studiesToBeFinished);
51+
4652
for (Study study : studiesToBeFinished) {
4753
study.finish();
4854

4955
// 스터디 멤버들 조회 후 버디에너지 업데이트
50-
List<StudyMember> members = studyMemberRepository.findFetchStudyByStudyId(study.getId());
56+
List<StudyMember> members = memberMap.getOrDefault(study.getId(), List.of());
5157
for (StudyMember member : members) {
5258
buddyEnergyService.updateEnergyByStudy(member.getUserId(), member.isLeader());
5359
}
5460
}
5561
}
62+
63+
private Map<Long, List<StudyMember>> getActivatedMemberMap(List<Study> studies) {
64+
List<Long> studyIds = studies.stream()
65+
.map(Study::getId)
66+
.toList();
67+
68+
List<StudyMember> allActivatedMembers = studyMemberQueryRepository.findActivatedMembersByStudyIds(studyIds);
69+
70+
return allActivatedMembers.stream()
71+
.collect(Collectors.groupingBy(studyMember -> studyMember.getStudy().getId()));
72+
}
5673
}

0 commit comments

Comments
 (0)