From 275417fa3d3e50f572992ba68d919a1169b3c6e9 Mon Sep 17 00:00:00 2001 From: mashin2002 Date: Mon, 19 Aug 2024 18:47:22 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20ComplaintD?= =?UTF-8?q?TO=20->=20ComplaintDTO=EC=99=80=20ComplaintDetailDTO=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ComplaintController.java | 8 +-- .../dto/response/ComplaintResponseDTO.java | 58 +++++++++++-------- .../service/ComplaintCommandService.java | 2 +- .../service/ComplaintCommandServiceImpl.java | 7 +-- .../service/ComplaintQueryService.java | 2 +- .../service/ComplaintQueryServiceImpl.java | 13 ++++- 6 files changed, 52 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/example/template/domain/complaint/controller/ComplaintController.java b/src/main/java/com/example/template/domain/complaint/controller/ComplaintController.java index c98ed2f..d3254c0 100644 --- a/src/main/java/com/example/template/domain/complaint/controller/ComplaintController.java +++ b/src/main/java/com/example/template/domain/complaint/controller/ComplaintController.java @@ -39,20 +39,20 @@ public ApiResponse uploadImages( @Operation(summary = "새 민원글 작성") @PostMapping() - public ApiResponse createComplaint(@AuthenticatedMember Member member, + public ApiResponse createComplaint(@AuthenticatedMember Member member, @Valid @RequestBody ComplaintRequestDTO.CreateComplaintDTO createComplaintDTO) { return ApiResponse.onSuccess(complaintCommandService.createComplaint(member, createComplaintDTO)); } @Operation(summary = "내가 쓴 민원글 상세 조회") - @GetMapping("/{complaintId}") - ApiResponsegetComplaintDetail(@AuthenticatedMember Member member, @PathVariable("complaintId") Long complaintId){ + @GetMapping("/my-complaints/{complaintId}") + ApiResponsegetComplaintDetail(@AuthenticatedMember Member member, @PathVariable("complaintId") Long complaintId){ return ApiResponse.onSuccess(complaintQueryService.getComplaintDetail(member, complaintId)); } @Operation(summary = "내가 쓴 민원글 목록 조회") - @GetMapping() + @GetMapping("/my-complaints") ApiResponse> getComplaintList(@AuthenticatedMember Member member){ return ApiResponse.onSuccess(complaintQueryService.getComplaintList(member)); } diff --git a/src/main/java/com/example/template/domain/complaint/dto/response/ComplaintResponseDTO.java b/src/main/java/com/example/template/domain/complaint/dto/response/ComplaintResponseDTO.java index bd7d3be..5b47e0a 100644 --- a/src/main/java/com/example/template/domain/complaint/dto/response/ComplaintResponseDTO.java +++ b/src/main/java/com/example/template/domain/complaint/dto/response/ComplaintResponseDTO.java @@ -29,50 +29,60 @@ public static getStationDTO from(Station station) { } @Builder - @JsonInclude(JsonInclude.Include.NON_NULL) @Getter - public static class ComplaintDTO { - private Long complaintId; - private String title; + public static class ComplaintDTO{ + private String image; + private String name; private String content; - private ComplaintType complaintType; + private String complaintType; private LocalDateTime createdAt; private LocalDateTime updatedAt; - private List images; - - public static ComplaintDTO from(Complaint complaint, List complaintImgList){ - List complaintImgURL = complaintImgList.stream() - .map(ComplaintImg::getImgUrl) - .collect(Collectors.toList()); + public static ComplaintDTO from(Complaint complaint, ComplaintImg complaintImg) { return ComplaintDTO.builder() - .complaintId(complaint.getId()) - .complaintType(complaint.getComplaintType()) - .title(complaint.getTitle()) + .image(complaintImg != null ? complaintImg.getImgUrl() : null) // 이미지가 null이 아닐 경우 URL 반환, null이면 null 반환 + .name(complaint.getStation().getName()) .content(complaint.getContent()) - .images(complaintImgURL) + .complaintType(complaint.getComplaintType().getDescription()) .createdAt(complaint.getCreatedAt()) .updatedAt(complaint.getUpdatedAt()) .build(); } + } + @Builder + @Getter + public static class ComplaintDetailDTO { + private Long complaintId; + private String name; + private String address; //도로명 + private String streetNumber;//지번 + private String institutionPhone; //번호 + private String title; + private String content; + private String complaintType; + private LocalDateTime createdAt; + private LocalDateTime updatedAt; + private List images; - //목록조회를 위해 이미지가 없는 버전 - public static ComplaintDTO from(Complaint complaint){ - return ComplaintDTO.builder() + public static ComplaintDetailDTO from(Complaint complaint, List complaintImgList){ + List complaintImgURL = complaintImgList.stream() + .map(ComplaintImg::getImgUrl) + .collect(Collectors.toList()); + return ComplaintDetailDTO.builder() .complaintId(complaint.getId()) - .complaintType(complaint.getComplaintType()) + .name(complaint.getStation().getName()) + .address(complaint.getStation().getAddress()) + .streetNumber(complaint.getStation().getStreetNumber()) + .institutionPhone(complaint.getStation().getInstitutionPhone()) .title(complaint.getTitle()) .content(complaint.getContent()) + .complaintType(complaint.getComplaintType().getDescription()) + .images(complaintImgURL) .createdAt(complaint.getCreatedAt()) .updatedAt(complaint.getUpdatedAt()) .build(); } - public static List from(List complaints) { - return complaints.stream() - .map(ComplaintDTO::from) - .collect(Collectors.toList()); - } } @Getter diff --git a/src/main/java/com/example/template/domain/complaint/service/ComplaintCommandService.java b/src/main/java/com/example/template/domain/complaint/service/ComplaintCommandService.java index a643293..98cbce4 100644 --- a/src/main/java/com/example/template/domain/complaint/service/ComplaintCommandService.java +++ b/src/main/java/com/example/template/domain/complaint/service/ComplaintCommandService.java @@ -10,5 +10,5 @@ public interface ComplaintCommandService { ComplaintResponseDTO.ComplaintImgDTO uploadImages(List images); - ComplaintResponseDTO.ComplaintDTO createComplaint(Member member, ComplaintRequestDTO.CreateComplaintDTO createComplaintDTO); + ComplaintResponseDTO.ComplaintDetailDTO createComplaint(Member member, ComplaintRequestDTO.CreateComplaintDTO createComplaintDTO); } diff --git a/src/main/java/com/example/template/domain/complaint/service/ComplaintCommandServiceImpl.java b/src/main/java/com/example/template/domain/complaint/service/ComplaintCommandServiceImpl.java index 1aeddf5..b23afa2 100644 --- a/src/main/java/com/example/template/domain/complaint/service/ComplaintCommandServiceImpl.java +++ b/src/main/java/com/example/template/domain/complaint/service/ComplaintCommandServiceImpl.java @@ -67,7 +67,7 @@ public ComplaintResponseDTO.ComplaintImgDTO uploadImages(List ima } @Override - public ComplaintResponseDTO.ComplaintDTO createComplaint(Member member, ComplaintRequestDTO.CreateComplaintDTO createComplaintDTO) { + public ComplaintResponseDTO.ComplaintDetailDTO createComplaint(Member member, ComplaintRequestDTO.CreateComplaintDTO createComplaintDTO) { Station station = stationRepository.findById(createComplaintDTO.getStationId()). orElseThrow(() -> new StationException(StationErrorCode.NOT_FOUND)); Complaint complaint = ComplaintRequestDTO.CreateComplaintDTO.toEntity(createComplaintDTO, station, member); @@ -84,11 +84,8 @@ public ComplaintResponseDTO.ComplaintDTO createComplaint(Member member, Complain } Complaint savedComplaint = complaintRepository.save(complaint); + return ComplaintResponseDTO.ComplaintDetailDTO.from(savedComplaint, complaintImgs); - if(complaintImgs!=null) { - return ComplaintResponseDTO.ComplaintDTO.from(savedComplaint, complaintImgs); - } - return ComplaintResponseDTO.ComplaintDTO.from(savedComplaint); } diff --git a/src/main/java/com/example/template/domain/complaint/service/ComplaintQueryService.java b/src/main/java/com/example/template/domain/complaint/service/ComplaintQueryService.java index 0775fba..b893526 100644 --- a/src/main/java/com/example/template/domain/complaint/service/ComplaintQueryService.java +++ b/src/main/java/com/example/template/domain/complaint/service/ComplaintQueryService.java @@ -8,7 +8,7 @@ public interface ComplaintQueryService { ComplaintResponseDTO.getStationDTO getStationName(Long stationId); - ComplaintResponseDTO.ComplaintDTO getComplaintDetail(Member member, Long complaintId); + ComplaintResponseDTO.ComplaintDetailDTO getComplaintDetail(Member member, Long complaintId); List getComplaintList(Member member); } diff --git a/src/main/java/com/example/template/domain/complaint/service/ComplaintQueryServiceImpl.java b/src/main/java/com/example/template/domain/complaint/service/ComplaintQueryServiceImpl.java index 7abd739..f12ff43 100644 --- a/src/main/java/com/example/template/domain/complaint/service/ComplaintQueryServiceImpl.java +++ b/src/main/java/com/example/template/domain/complaint/service/ComplaintQueryServiceImpl.java @@ -17,6 +17,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.stream.Collectors; @RequiredArgsConstructor @Service @@ -34,7 +35,7 @@ public ComplaintResponseDTO.getStationDTO getStationName(Long stationId) { } @Override - public ComplaintResponseDTO.ComplaintDTO getComplaintDetail(Member member, Long complaintId) { + public ComplaintResponseDTO.ComplaintDetailDTO getComplaintDetail(Member member, Long complaintId) { Complaint complaint = complaintRepository.findByIdAndMember(complaintId, member); if(complaint == null){ throw new ComplaintException(ComplaintErrorCode.COMPLAINT_NOT_FOUND); @@ -43,12 +44,18 @@ public ComplaintResponseDTO.ComplaintDTO getComplaintDetail(Member member, Long if(complaintImgList == null){ throw new ComplaintException(ComplaintErrorCode.INVALID_IMAGE_URLS); } - return ComplaintResponseDTO.ComplaintDTO.from(complaint); + return ComplaintResponseDTO.ComplaintDetailDTO.from(complaint, complaintImgList); } @Override public List getComplaintList(Member member) { List complaintList = complaintRepository.findAllByMemberId(member.getId()); - return ComplaintResponseDTO.ComplaintDTO.from(complaintList); + // 각 Complaint에 대해 이미지를 하나만 선택하여 가져오기 + return complaintList.stream().map(complaint -> { + // 해당 Complaint와 연관된 첫 번째 이미지를 가져옴 + ComplaintImg complaintImg = complaintImgRepository.findAllByComplaintId(complaint.getId()).stream().findFirst().orElse(null); + // ComplaintDTO에 이미지 정보를 포함시켜 반환 + return ComplaintResponseDTO.ComplaintDTO.from(complaint, complaintImg); + }).collect(Collectors.toList()); } } From 1f1c9e368db3d6f9f55845204dc294d0bb6dda9f Mon Sep 17 00:00:00 2001 From: mashin2002 Date: Mon, 19 Aug 2024 18:54:19 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20ComplaintD?= =?UTF-8?q?TO=EC=97=90=20complaintId=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/complaint/dto/response/ComplaintResponseDTO.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/example/template/domain/complaint/dto/response/ComplaintResponseDTO.java b/src/main/java/com/example/template/domain/complaint/dto/response/ComplaintResponseDTO.java index 5b47e0a..f8bbf54 100644 --- a/src/main/java/com/example/template/domain/complaint/dto/response/ComplaintResponseDTO.java +++ b/src/main/java/com/example/template/domain/complaint/dto/response/ComplaintResponseDTO.java @@ -31,6 +31,7 @@ public static getStationDTO from(Station station) { @Builder @Getter public static class ComplaintDTO{ + private Long complaintId; private String image; private String name; private String content; @@ -40,6 +41,7 @@ public static class ComplaintDTO{ public static ComplaintDTO from(Complaint complaint, ComplaintImg complaintImg) { return ComplaintDTO.builder() + .complaintId(complaint.getId()) .image(complaintImg != null ? complaintImg.getImgUrl() : null) // 이미지가 null이 아닐 경우 URL 반환, null이면 null 반환 .name(complaint.getStation().getName()) .content(complaint.getContent())