Skip to content

Commit 67a9f0a

Browse files
committed
[fix/#94] 문항 번호 sequence 기준으로 조회
1 parent a81ec80 commit 67a9f0a

File tree

3 files changed

+24
-4
lines changed

3 files changed

+24
-4
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ public record ProblemClientGetResponse(
1515
ProblemSubmitStatus status,
1616
List<ChildProblemSubmitStatus> childProblemStatuses
1717
) {
18-
public static ProblemClientGetResponse of(Problem problem, ProblemSubmitStatus status, List<ChildProblemSubmitStatus> childProblemStatuses) {
18+
public static ProblemClientGetResponse of(Problem problem, ProblemSubmitStatus status, List<ChildProblemSubmitStatus> childProblemStatuses, int number) {
1919
return ProblemClientGetResponse.builder()
20-
.number(problem.getNumber())
20+
.number(number)
2121
.imageUrl(problem.getMainProblemImageUrl())
2222
.status(status)
2323
.childProblemStatuses(childProblemStatuses)

src/main/java/com/moplus/moplus_server/client/submit/service/ClientGetService.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,16 @@
2020
import com.moplus.moplus_server.domain.problem.domain.problem.Problem;
2121
import com.moplus.moplus_server.domain.problem.repository.ChildProblemRepository;
2222
import com.moplus.moplus_server.domain.problem.repository.ProblemRepository;
23+
import com.moplus.moplus_server.domain.problemset.domain.ProblemSet;
2324
import com.moplus.moplus_server.domain.problemset.repository.ProblemSetRepository;
2425
import com.moplus.moplus_server.domain.publish.repository.PublishRepository;
2526
import com.moplus.moplus_server.global.error.exception.ErrorCode;
2627
import com.moplus.moplus_server.global.error.exception.InvalidValueException;
28+
import com.moplus.moplus_server.global.error.exception.NotFoundException;
2729
import java.time.LocalDate;
2830
import java.util.ArrayList;
2931
import java.util.List;
32+
import javax.swing.undo.CannotUndoException;
3033
import lombok.RequiredArgsConstructor;
3134
import org.springframework.stereotype.Service;
3235
import org.springframework.transaction.annotation.Transactional;
@@ -74,8 +77,16 @@ public CommentaryGetResponse getCommentary(Long publishId, Long problemId) {
7477
// 처방 정보 생성
7578
PrescriptionResponse prescription = PrescriptionResponse.of(childProblem, mainProblem);
7679

80+
// 문항 번호 추출
81+
ProblemSet problemSet = problemSetRepository.findByIdElseThrow(publish.getProblemSetId());
82+
List<Long> problemIds = problemSet.getProblemIds();
83+
int number = problemIds.indexOf(problemId);
84+
if (number == -1) {
85+
throw new NotFoundException(ErrorCode.PROBLEM_NOT_FOUND_IN_PROBLEM_SET);
86+
}
87+
7788
return CommentaryGetResponse.of(
78-
problem.getNumber(),
89+
number + 1,
7990
problem.getAnswer(),
8091
problem.getMainAnalysisImageUrl(),
8192
problem.getMainHandwritingExplanationImageUrl(),
@@ -138,6 +149,14 @@ public ProblemClientGetResponse getProblem(Long publishId, Long problemId) {
138149
Publish publish = publishRepository.findByIdElseThrow(publishId);
139150
denyAccessToFuturePublish(publish);
140151

152+
// 문항 번호 추출
153+
ProblemSet problemSet = problemSetRepository.findByIdElseThrow(publish.getProblemSetId());
154+
List<Long> problemIds = problemSet.getProblemIds();
155+
int number = problemIds.indexOf(problemId);
156+
if (number == -1) {
157+
throw new NotFoundException(ErrorCode.PROBLEM_NOT_FOUND_IN_PROBLEM_SET);
158+
}
159+
141160
// 문항조회
142161
Problem problem = problemRepository.findByIdElseThrow(problemId);
143162

@@ -155,7 +174,7 @@ public ProblemClientGetResponse getProblem(Long publishId, Long problemId) {
155174
.map(ChildProblemSubmit::getStatus)
156175
.toList();
157176

158-
return ProblemClientGetResponse.of(problem, problemSubmit.getStatus(), childProblemStatuses);
177+
return ProblemClientGetResponse.of(problem, problemSubmit.getStatus(), childProblemStatuses, number + 1);
159178
}
160179

161180
@Transactional(readOnly = true)

src/main/java/com/moplus/moplus_server/global/error/exception/ErrorCode.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public enum ErrorCode {
3434
INVALID_SHORT_NUMBER_ANSWER(HttpStatus.BAD_REQUEST, "주관식 문항의 정답은 0~999 사이의 숫자여야 합니다"),
3535
INVALID_CONFIRM_PROBLEM(HttpStatus.BAD_REQUEST, "유효하지 않은 문항들 : "),
3636
INVALID_DIFFICULTY(HttpStatus.BAD_REQUEST, "난이도는 1~10 사이의 숫자여야 합니다"),
37+
PROBLEM_NOT_FOUND_IN_PROBLEM_SET(HttpStatus.NOT_FOUND, "해당 날짜에 발행된 문항세트에 존재하는 문항이 아닙니다."),
3738

3839
//새끼 문항
3940
CHILD_PROBLEM_NOT_FOUND(HttpStatus.NOT_FOUND, "해당 새끼 문제를 찾을 수 없습니다"),

0 commit comments

Comments
 (0)