From 9cf18a663820bf338febf90edb4af70d4a6d1ea9 Mon Sep 17 00:00:00 2001 From: HongGit Date: Sun, 30 Mar 2025 18:55:06 +0900 Subject: [PATCH] =?UTF-8?q?[hotfix]=20=EC=9B=94=EB=B3=84=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=EC=8B=9C=20=EC=A0=9C=EC=B6=9C=20=EC=95=88=ED=95=9C=20?= =?UTF-8?q?=EB=AC=B8=ED=95=AD=EB=8F=84=20=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ClientProblemsGetService.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/moplus/moplus_server/client/problem/service/ClientProblemsGetService.java b/src/main/java/com/moplus/moplus_server/client/problem/service/ClientProblemsGetService.java index bbcb063..bd04eec 100644 --- a/src/main/java/com/moplus/moplus_server/client/problem/service/ClientProblemsGetService.java +++ b/src/main/java/com/moplus/moplus_server/client/problem/service/ClientProblemsGetService.java @@ -29,6 +29,8 @@ import java.time.LocalDate; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -83,12 +85,24 @@ public List getAllProblem(Long memberId, int year, int mo Long publishId = publish.getId(); LocalDate date = publish.getPublishedDate(); - // 날짜별 사용자 제출 정보 조회 + // 문항세트의 전체 문제 목록 조회 + ProblemSet problemSet = problemSetRepository.findByIdElseThrow(publish.getProblemSetId()); + List problemIds = problemSet.getProblemIds(); + + // 사용자 제출 정보 조회 List submissions = problemSubmitRepository.findByMemberIdAndPublishId(memberId, publishId); - List problemStatuses = submissions.stream() - .map(ProblemSubmit::getStatus) + Map submitStatusMap = submissions.stream() + .collect(Collectors.toMap( + ProblemSubmit::getProblemId, + ProblemSubmit::getStatus + )); + + // 모든 문항에 대해 상태 리스트 구성 + List problemStatuses = problemIds.stream() + .map(id -> submitStatusMap.getOrDefault(id, ProblemSubmitStatus.NOT_STARTED)) .toList(); + // 사용자 제출 정보 바탕으로 진행도 결정 DayProgress progress = DayProgress.determineDayProgress(problemStatuses); String mainProblemImageUrl = getMainProblemImageUrl(publish.getProblemSetId());