Skip to content

Commit df072e6

Browse files
committed
[ADD] reportResponse for modify
1 parent 0324611 commit df072e6

File tree

6 files changed

+102
-14
lines changed

6 files changed

+102
-14
lines changed

src/main/java/com/dsmpear/main/user_backend_v2/controller/ReportController.java

+6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.dsmpear.main.user_backend_v2.controller;
22

33
import com.dsmpear.main.user_backend_v2.payload.response.ReportContentResponse;
4+
import com.dsmpear.main.user_backend_v2.payload.response.ReportModifyResponse;
45
import com.dsmpear.main.user_backend_v2.service.report.ReportService;
56
import lombok.RequiredArgsConstructor;
67
import org.springframework.web.bind.annotation.*;
@@ -17,6 +18,11 @@ public ReportContentResponse getReportContent(@PathVariable Long reportId) {
1718
return reportService.getReport(reportId);
1819
}
1920

21+
@GetMapping("/modify/{reportId}")
22+
public ReportModifyResponse getReportModify(@PathVariable Long reportId) {
23+
return reportService.getReportModify(reportId);
24+
}
25+
2026
@DeleteMapping("/{reportId}")
2127
public Long deleteReport(@PathVariable Long reportId) {
2228
return reportService.deleteReport(reportId);

src/main/java/com/dsmpear/main/user_backend_v2/mapper/ReportMapper.java

+11-4
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@
33
import com.dsmpear.main.user_backend_v2.entity.report.Report;
44
import com.dsmpear.main.user_backend_v2.entity.user.User;
55
import com.dsmpear.main.user_backend_v2.payload.request.report.BaseReportRequest;
6-
import com.dsmpear.main.user_backend_v2.payload.response.MemberResponse;
7-
import com.dsmpear.main.user_backend_v2.payload.response.ReportCommentsResponse;
8-
import com.dsmpear.main.user_backend_v2.payload.response.ReportContentResponse;
9-
import com.dsmpear.main.user_backend_v2.payload.response.ReportResponse;
6+
import com.dsmpear.main.user_backend_v2.payload.response.*;
107
import org.mapstruct.Mapper;
118
import org.mapstruct.Mapping;
129

@@ -42,4 +39,14 @@ public interface ReportMapper {
4239
ReportContentResponse entityToContentResponse(Report report, Boolean isMine,
4340
List<ReportCommentsResponse> comments, List<MemberResponse> member);
4441

42+
@Mapping(source = "report.languages", target = "languages")
43+
@Mapping(source = "report.reportType.type", target = "type")
44+
@Mapping(source = "report.reportType.field", target = "field")
45+
@Mapping(source = "report.reportType.access", target = "access")
46+
@Mapping(source = "report.reportType.grade", target = "grade")
47+
@Mapping(source = "report.reportFile.id", target = "fileId")
48+
@Mapping(source = "member", target = "member")
49+
@Mapping(source = "report.createdAt", target = "createdAt")
50+
ReportModifyResponse entityToModifyResponse(Report report, Boolean isMine, List<MemberResponse> member);
51+
4552
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.dsmpear.main.user_backend_v2.payload.response;
2+
3+
import com.dsmpear.main.user_backend_v2.entity.report.enums.Access;
4+
import com.dsmpear.main.user_backend_v2.entity.report.enums.Field;
5+
import com.dsmpear.main.user_backend_v2.entity.report.enums.Grade;
6+
import com.dsmpear.main.user_backend_v2.entity.report.enums.Type;
7+
import lombok.AllArgsConstructor;
8+
import lombok.Builder;
9+
import lombok.Getter;
10+
import lombok.NoArgsConstructor;
11+
12+
import java.time.LocalDateTime;
13+
import java.util.List;
14+
15+
@Getter
16+
@Builder
17+
@NoArgsConstructor
18+
@AllArgsConstructor
19+
public class ReportModifyResponse {
20+
21+
private String title;
22+
23+
private String description;
24+
25+
private LocalDateTime createdAt;
26+
27+
private List<String> languages;
28+
29+
private Type type;
30+
31+
private Grade grade;
32+
33+
private Access access;
34+
35+
private Field field;
36+
37+
private String teamName;
38+
39+
private List<MemberResponse> member;
40+
41+
private Long fileId;
42+
43+
private String github;
44+
45+
}

src/main/java/com/dsmpear/main/user_backend_v2/service/report/ReportService.java

+3
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@
55
import com.dsmpear.main.user_backend_v2.entity.report.enums.Type;
66
import com.dsmpear.main.user_backend_v2.payload.response.ReportContentResponse;
77
import com.dsmpear.main.user_backend_v2.payload.response.ReportListResponse;
8+
import com.dsmpear.main.user_backend_v2.payload.response.ReportModifyResponse;
89
import org.springframework.data.domain.Pageable;
910

1011

1112
public interface ReportService {
1213
ReportContentResponse getReport(Long reportId);
1314

15+
ReportModifyResponse getReportModify(Long reportId);
16+
1417
ReportListResponse getReportList(Pageable pageable, Type type, Field field, Grade grade);
1518

1619
Long deleteReport(Long reportId);

src/main/java/com/dsmpear/main/user_backend_v2/service/report/ReportServiceImpl.java

+20-10
Original file line numberDiff line numberDiff line change
@@ -37,22 +37,25 @@ public class ReportServiceImpl implements ReportService {
3737
public ReportContentResponse getReport(Long reportId) {
3838
Report report = reportFacade.createReport(reportId);
3939

40+
List<MemberResponse> members = getMembers(report);
41+
4042
List<ReportCommentsResponse> comments = report.getComments()
4143
.stream().map(comment ->
4244
commentMapper.entityToResponse(comment, comment.getUser().equals(userFacade.createAuthUser())))
4345
.collect(Collectors.toList());
4446

45-
List<MemberResponse> members = report.getMembers()
46-
.stream().map(memberMapper::entityToResponse)
47-
.collect(Collectors.toList());
48-
49-
if(!isAccessible(report)) {
50-
throw new InvalidAccessException();
51-
}
52-
47+
validateAccessible(report);
5348
return reportMapper.entityToContentResponse(report, userFacade.isMine(report), comments, members);
5449
}
5550

51+
@Override
52+
public ReportModifyResponse getReportModify(Long reportId) {
53+
Report report = reportFacade.createReport(reportId);
54+
List<MemberResponse> members = getMembers(report);
55+
validateAccessible(report);
56+
return reportMapper.entityToModifyResponse(report, userFacade.isMine(report), members);
57+
}
58+
5659
@Override
5760
public ReportListResponse getReportList(Pageable pageable, Type type, Field field, Grade grade) {
5861
Page<Report> reportResponses = reportCustomRepository.findAllByAccessAndGradeAndFieldAndType(grade, field, type, pageable);
@@ -71,8 +74,15 @@ public Long deleteReport(Long reportId) {
7174
return reportId;
7275
}
7376

74-
private boolean isAccessible(Report report) {
75-
return report.getReportType().getAccess().equals(Access.EVERY) || userFacade.isMine(report);
77+
private List<MemberResponse> getMembers(Report report) {
78+
return report.getMembers()
79+
.stream().map(memberMapper::entityToResponse)
80+
.collect(Collectors.toList());
81+
}
82+
83+
private void validateAccessible(Report report) {
84+
if(!(report.getReportType().getAccess().equals(Access.EVERY) || userFacade.isMine(report)))
85+
throw new InvalidAccessException();
7686
}
7787

7888
}

src/test/java/com/dsmpear/main/user_backend_v2/ReportControllerTest.java

+17
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.dsmpear.main.user_backend_v2.payload.request.report.SoleReportRequest;
1313
import com.dsmpear.main.user_backend_v2.payload.request.report.TeamReportRequest;
1414
import com.dsmpear.main.user_backend_v2.payload.response.ReportContentResponse;
15+
import com.dsmpear.main.user_backend_v2.payload.response.ReportModifyResponse;
1516
import com.fasterxml.jackson.databind.ObjectMapper;
1617
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
1718
import org.junit.jupiter.api.AfterEach;
@@ -31,6 +32,7 @@
3132
import java.util.Arrays;
3233

3334
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
35+
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
3436
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
3537

3638
@ExtendWith(SpringExtension.class)
@@ -156,6 +158,21 @@ void cleanUp() {
156158
Assertions.assertTrue(response.getIsSubmitted());
157159
}
158160

161+
162+
@Test
163+
@WithMockUser(value = "email", password = "pwd")
164+
void 보고서_변경_보기_성공() throws Exception {
165+
MvcResult result = mvc.perform(get("/report/modify/"+successReport.getId()))
166+
.andExpect(status().isOk())
167+
.andReturn();
168+
169+
ReportModifyResponse response = new ObjectMapper()
170+
.registerModule(new JavaTimeModule())
171+
.readValue(result.getResponse().getContentAsString(), ReportModifyResponse.class);
172+
173+
Assertions.assertEquals("title_for_every", response.getTitle());
174+
}
175+
159176
@Test
160177
void 보고서_보기_실패_유저_NOTFOUND() throws Exception {
161178
mvc.perform(get("/report/"+1))

0 commit comments

Comments
 (0)