Skip to content

Commit f39d543

Browse files
committed
[feat/#94] 사용자 새끼문항 조회 api 구현
1 parent f119973 commit f39d543

File tree

3 files changed

+61
-0
lines changed

3 files changed

+61
-0
lines changed

src/main/java/com/moplus/moplus_server/client/submit/controller/ClientGetController.java

+11
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.moplus.moplus_server.client.submit.controller;
22

33
import com.moplus.moplus_server.client.submit.dto.response.AllProblemGetResponse;
4+
import com.moplus.moplus_server.client.submit.dto.response.ChildProblemClientGetResponse;
45
import com.moplus.moplus_server.client.submit.dto.response.CommentaryGetResponse;
56
import com.moplus.moplus_server.client.submit.dto.response.ProblemClientGetResponse;
67
import com.moplus.moplus_server.client.submit.service.ClientGetService;
@@ -49,4 +50,14 @@ public ResponseEntity<ProblemClientGetResponse> getProblem(
4950
) {
5051
return ResponseEntity.ok(clientGetService.getProblem(publishId, problemId));
5152
}
53+
54+
@GetMapping("problem/{publishId}/{problemId}/{childProblemId}")
55+
@Operation(summary = "새끼문항 조회", description = "사용자에게 보여지는 새끼문항을 조회합니다.")
56+
public ResponseEntity<ChildProblemClientGetResponse> getChildProblem(
57+
@PathVariable Long publishId,
58+
@PathVariable Long problemId,
59+
@PathVariable Long childProblemId
60+
) {
61+
return ResponseEntity.ok(clientGetService.getChildProblem(publishId, problemId, childProblemId));
62+
}
5263
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.moplus.moplus_server.client.submit.dto.response;
2+
3+
import com.moplus.moplus_server.client.submit.domain.ChildProblemSubmitStatus;
4+
import lombok.Builder;
5+
6+
@Builder
7+
public record ChildProblemClientGetResponse(
8+
int problemNumber,
9+
int childProblemNumber,
10+
String imageUrl,
11+
ChildProblemSubmitStatus status
12+
) {
13+
public static ChildProblemClientGetResponse of(int problemNumber, int childProblemNumber, String imageUrl,
14+
ChildProblemSubmitStatus status
15+
) {
16+
return ChildProblemClientGetResponse.builder()
17+
.problemNumber(problemNumber)
18+
.childProblemNumber(childProblemNumber)
19+
.imageUrl(imageUrl)
20+
.status(status)
21+
.build();
22+
}
23+
}

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

+27
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.moplus.moplus_server.client.submit.domain.ProblemSubmit;
88
import com.moplus.moplus_server.client.submit.domain.ProblemSubmitStatus;
99
import com.moplus.moplus_server.client.submit.dto.response.AllProblemGetResponse;
10+
import com.moplus.moplus_server.client.submit.dto.response.ChildProblemClientGetResponse;
1011
import com.moplus.moplus_server.client.submit.dto.response.ChildProblemDetailResponse;
1112
import com.moplus.moplus_server.client.submit.dto.response.CommentaryGetResponse;
1213
import com.moplus.moplus_server.client.submit.dto.response.DayProgress;
@@ -17,6 +18,7 @@
1718
import com.moplus.moplus_server.client.submit.repository.ProblemSubmitRepository;
1819
import com.moplus.moplus_server.domain.problem.domain.childProblem.ChildProblem;
1920
import com.moplus.moplus_server.domain.problem.domain.problem.Problem;
21+
import com.moplus.moplus_server.domain.problem.repository.ChildProblemRepository;
2022
import com.moplus.moplus_server.domain.problem.repository.ProblemRepository;
2123
import com.moplus.moplus_server.domain.problemset.repository.ProblemSetRepository;
2224
import com.moplus.moplus_server.domain.publish.repository.PublishRepository;
@@ -38,6 +40,7 @@ public class ClientGetService {
3840
private final ProblemRepository problemRepository;
3941
private final ProblemSetRepository problemSetRepository;
4042
private final ChildProblemSubmitRepository childProblemSubmitRepository;
43+
private final ChildProblemRepository childProblemRepository;
4144

4245

4346
@Transactional(readOnly = true)
@@ -125,6 +128,7 @@ private String getMainProblemImageUrl(Long problemSetId) {
125128
public ProblemClientGetResponse getProblem(Long publishId, Long problemId) {
126129
Long memberId = 1L;
127130

131+
// 문항조회
128132
Problem problem = problemRepository.findByIdElseThrow(problemId);
129133

130134
// 문항 제출 조회
@@ -143,4 +147,27 @@ public ProblemClientGetResponse getProblem(Long publishId, Long problemId) {
143147

144148
return ProblemClientGetResponse.of(problem, problemSubmit.getStatus(), childProblemStatuses);
145149
}
150+
151+
@Transactional(readOnly = true)
152+
public ChildProblemClientGetResponse getChildProblem(Long publishId, Long problemId, Long childProblemId) {
153+
Long memberId = 1L;
154+
155+
// 문항/새끼문항 조회
156+
Problem problem = problemRepository.findByIdElseThrow(problemId);
157+
ChildProblem childProblem = childProblemRepository.findByIdElseThrow(childProblemId);
158+
159+
// 새끼문항 제출 조회
160+
ChildProblemSubmit childProblemSubmit = childProblemSubmitRepository.findByMemberIdAndPublishIdAndChildProblemIdElseThrow(
161+
memberId, publishId, childProblemId);
162+
163+
int sequence = 0;
164+
for (int i = 0; i < problem.getChildProblems().size(); i++) {
165+
if (problem.getChildProblems().get(i).getId().equals(childProblemId)) {
166+
sequence = i + 1;
167+
break;
168+
}
169+
}
170+
171+
return ChildProblemClientGetResponse.of(problem.getNumber(), sequence, childProblem.getImageUrl(), childProblemSubmit.getStatus());
172+
}
146173
}

0 commit comments

Comments
 (0)