Skip to content

Commit ae8b738

Browse files
committed
Merge remote-tracking branch 'origin/develop' into develop
2 parents a77aa7e + 9ca913c commit ae8b738

File tree

2 files changed

+28
-7
lines changed

2 files changed

+28
-7
lines changed

src/main/java/com/moplus/moplus_server/client/problem/service/ClientProblemsGetService.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import java.time.LocalDate;
3030
import java.util.ArrayList;
3131
import java.util.List;
32+
import java.util.Map;
33+
import java.util.stream.Collectors;
3234
import lombok.RequiredArgsConstructor;
3335
import org.springframework.stereotype.Service;
3436
import org.springframework.transaction.annotation.Transactional;
@@ -83,12 +85,24 @@ public List<AllProblemGetResponse> getAllProblem(Long memberId, int year, int mo
8385
Long publishId = publish.getId();
8486
LocalDate date = publish.getPublishedDate();
8587

86-
// 날짜별 사용자 제출 정보 조회
88+
// 문항세트의 전체 문제 목록 조회
89+
ProblemSet problemSet = problemSetRepository.findByIdElseThrow(publish.getProblemSetId());
90+
List<Long> problemIds = problemSet.getProblemIds();
91+
92+
// 사용자 제출 정보 조회
8793
List<ProblemSubmit> submissions = problemSubmitRepository.findByMemberIdAndPublishId(memberId, publishId);
88-
List<ProblemSubmitStatus> problemStatuses = submissions.stream()
89-
.map(ProblemSubmit::getStatus)
94+
Map<Long, ProblemSubmitStatus> submitStatusMap = submissions.stream()
95+
.collect(Collectors.toMap(
96+
ProblemSubmit::getProblemId,
97+
ProblemSubmit::getStatus
98+
));
99+
100+
// 모든 문항에 대해 상태 리스트 구성
101+
List<ProblemSubmitStatus> problemStatuses = problemIds.stream()
102+
.map(id -> submitStatusMap.getOrDefault(id, ProblemSubmitStatus.NOT_STARTED))
90103
.toList();
91104

105+
92106
// 사용자 제출 정보 바탕으로 진행도 결정
93107
DayProgress progress = DayProgress.determineDayProgress(problemStatuses);
94108
String mainProblemImageUrl = getMainProblemImageUrl(publish.getProblemSetId());

src/main/java/com/moplus/moplus_server/client/submit/dto/response/DayProgress.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,18 @@ public static DayProgress determineDayProgress(List<ProblemSubmitStatus> problem
1111
if (problemStatuses.isEmpty()) {
1212
return INCOMPLETE;
1313
}
14-
else if (problemStatuses.contains(ProblemSubmitStatus.IN_PROGRESS)) {
15-
return IN_PROGRESS;
16-
}
17-
else{
14+
boolean allNotStarted = problemStatuses.stream()
15+
.allMatch(status -> status == ProblemSubmitStatus.NOT_STARTED);
16+
17+
boolean allFinished = problemStatuses.stream()
18+
.allMatch(status -> status == ProblemSubmitStatus.CORRECT || status == ProblemSubmitStatus.INCORRECT);
19+
20+
if (allNotStarted) {
21+
return INCOMPLETE;
22+
} else if (allFinished) {
1823
return COMPLETE;
24+
} else {
25+
return IN_PROGRESS;
1926
}
2027
}
2128
}

0 commit comments

Comments
 (0)