Skip to content

Commit 06c06b4

Browse files
authored
Merge pull request #130 from MUIT-UMC/develop
[merge] 250217 / 30th deploy
2 parents e4d032a + 6f94c7c commit 06c06b4

14 files changed

Lines changed: 79 additions & 151 deletions

File tree

src/main/java/muit/backend/apiPayLoad/code/status/ErrorStatus.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public enum ErrorStatus implements BaseErrorCode {
4242
MEMBER_TICKET_ALREADY_CANCELED(HttpStatus.BAD_REQUEST, "MEMBERTICKET4003", "이미 취소하신 티켓입니다."),
4343
//POST ERROR
4444
POST_NOT_FOUND(HttpStatus.NOT_FOUND, "POST4000", "존재하지 않는 게시글입니다."),
45+
IMAGE_NOT_FOUND(HttpStatus.NOT_FOUND, "IMAGE4000", "이미지를 찾을 수 없습니다."),
4546

4647
//REPORT ERROR
4748
UNSUPPORTED_OBJECT_TYPE(HttpStatus.BAD_REQUEST, "REPORT4000", "지원하지 않는 신고 타입입니다."),

src/main/java/muit/backend/controller/postController/CommonPostController.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
import muit.backend.domain.enums.PostType;
1717
import muit.backend.domain.enums.ReportObjectType;
1818
import muit.backend.domain.enums.Role;
19+
import muit.backend.dto.postDTO.PatchPostRequestDTO;
20+
import muit.backend.dto.postDTO.PostRequestDTO;
1921
import muit.backend.dto.postDTO.PostResponseDTO;
2022
import muit.backend.dto.reportDTO.ReportRequestDTO;
2123
import muit.backend.dto.reportDTO.ReportResponseDTO;
@@ -28,8 +30,10 @@
2830
import muit.backend.service.postService.PostService;
2931
import org.springframework.data.domain.Page;
3032
import org.springframework.data.domain.PageRequest;
33+
import org.springframework.http.MediaType;
3134
import org.springframework.transaction.annotation.Transactional;
3235
import org.springframework.web.bind.annotation.*;
36+
import org.springframework.web.multipart.MultipartFile;
3337

3438
import java.util.ArrayList;
3539
import java.util.List;
@@ -155,4 +159,14 @@ public ApiResponse<PostResponseDTO.MyPostResultListDTO> myPost(@RequestHeader("A
155159
return ApiResponse.onSuccess(list);
156160
}
157161

162+
@PatchMapping(value = "/{postId}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
163+
@Operation(summary = "게시글 수정 API", description = "특정 게시글을 수정하는 API 입니다.")
164+
public ApiResponse<PostResponseDTO.GeneralPostResponseDTO> editPost(@RequestHeader("Authorization") String accessToken,
165+
@PathVariable("postId") Long postId,
166+
@RequestPart("postRequestDTO") PatchPostRequestDTO postRequestDTO,
167+
@RequestPart(name = "imageFiles", required = false)List<MultipartFile> img) {
168+
Member member = memberService.getMemberByToken(accessToken);
169+
return ApiResponse.onSuccess(postService.editPost(postId, postRequestDTO, img, member));
170+
}
171+
158172
}

src/main/java/muit/backend/controller/postController/LostController.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -92,16 +92,4 @@ public ApiResponse<LostResponseDTO.GeneralLostResponseDTO> getPost(@RequestHeade
9292
return ApiResponse.onSuccess(lostService.getLostPost(postId,member));
9393
}
9494

95-
96-
@PatchMapping(value = "/{postId}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
97-
@Operation(summary = "분실 게시글 수정 API", description = "분실 게시글을 수정하는 API 입니다.")
98-
public ApiResponse<LostResponseDTO.GeneralLostResponseDTO> editPost(@RequestHeader("Authorization") String accessToken,
99-
@PathVariable("postId") Long postId,
100-
@RequestPart("lostRequestDTO") LostRequestDTO lostRequestDTO,
101-
@RequestPart(name = "imageFiles", required = false)List<MultipartFile> img) {
102-
103-
Member member = memberService.getMemberByToken(accessToken);
104-
return ApiResponse.onSuccess(lostService.editLostPost(postId, lostRequestDTO, img, member));
105-
}
106-
10795
}

src/main/java/muit/backend/controller/postController/PostController.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,4 @@ public ApiResponse<PostResponseDTO.GeneralPostResponseDTO> getPost(@RequestHeade
7070
return ApiResponse.onSuccess(postService.getPost(postId, member));
7171
}
7272

73-
74-
@PatchMapping(value = "/{postId}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
75-
@Operation(summary = "게시글 수정 API", description = "특정 게시글을 수정하는 API 입니다.")
76-
public ApiResponse<PostResponseDTO.GeneralPostResponseDTO> editPost(@RequestHeader("Authorization") String accessToken,
77-
@PathVariable("postId") Long postId,
78-
@RequestPart("postRequestDTO") PostRequestDTO postRequestDTO,
79-
@RequestPart(name = "imageFiles", required = false)List<MultipartFile> img) {
80-
Member member = memberService.getMemberByToken(accessToken);
81-
return ApiResponse.onSuccess(postService.editPost(postId, postRequestDTO, img, member));
82-
}
83-
8473
}

src/main/java/muit/backend/controller/postController/ReviewController.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -88,16 +88,6 @@ public ApiResponse<ReviewResponseDTO.GeneralReviewResponseDTO> getReview(@Reques
8888
return ApiResponse.onSuccess(reviewService.getReview(postId,member));
8989
}
9090

91-
@PatchMapping(value = "/{postId}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
92-
@Operation(summary = "리뷰 게시글 수정 API", description = "특정 리뷰 게시글을 수정하는 API 입니다.")
93-
public ApiResponse<ReviewResponseDTO.GeneralReviewResponseDTO> editReview(@RequestHeader("Authorization") String accessToken,
94-
@PathVariable("postId") Long postId,
95-
@RequestPart("reviewRequestDTO") ReviewRequestDTO reviewRequestDTO,
96-
@RequestPart(name = "imageFiles", required = false)List<MultipartFile> img) {
97-
Member member = memberService.getMemberByToken(accessToken);
98-
99-
return ApiResponse.onSuccess(reviewService.editReview(postId, reviewRequestDTO, img, member));
100-
}
10191

10292

10393

src/main/java/muit/backend/converter/postConverter/ReviewConverter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public static ReviewResponseDTO.GeneralReviewResponseDTO toReviewResponseDTO(Pos
4444

4545
return ReviewResponseDTO.GeneralReviewResponseDTO.builder()
4646
.id(review.getId())
47+
.isMyPost(isMyPost)
4748
.nickname(name)
4849
.memberId(review.getMember().getId())
4950
.musicalId(review.getMusical().getId())

src/main/java/muit/backend/domain/entity/member/Post.java

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import muit.backend.domain.entity.musical.Musical;
1010
import muit.backend.domain.enums.PostType;
1111
import muit.backend.dto.postDTO.LostRequestDTO;
12+
import muit.backend.dto.postDTO.PatchPostRequestDTO;
1213
import muit.backend.dto.postDTO.PostRequestDTO;
1314
import muit.backend.dto.postDTO.ReviewRequestDTO;
1415
import muit.backend.s3.UuidFile;
@@ -78,11 +79,13 @@ public void changeMusical(Musical musical){
7879
this.musical = musical;
7980
}
8081

81-
public void changeImg(List<UuidFile> imgList){
82-
if(!this.images.isEmpty()){
83-
this.images.clear();
82+
public void changeImg(List<UuidFile> newImgList, List<UuidFile> oldImgList){
83+
if(oldImgList.size()!=this.images.size()){//기존 사진 개수가 달라졌으면
84+
this.images.retainAll(oldImgList);//dto에서 보내준 이미지만 남기고 삭제된 항목은 고아객체 만들기
85+
}
86+
if(!newImgList.isEmpty()){
87+
this.images.addAll(newImgList);//새로운 이미지 추가된 건 따로 추가
8488
}
85-
this.images.addAll(imgList);
8689
}
8790

8891
public void increaseMaxIndex(){
@@ -106,26 +109,17 @@ public void changeReportCount(Boolean isAdd){
106109
}
107110

108111

109-
public Post changePost(PostRequestDTO postRequestDTO) {
110-
if(postRequestDTO.getTitle()!=null){this.title = postRequestDTO.getTitle();}
111-
if(postRequestDTO.getContent()!=null){this.content = postRequestDTO.getContent();}
112-
return this;
113112

114-
}
115113

116-
public Post changeLost(LostRequestDTO lostRequestDTO){
117-
if(lostRequestDTO.getTitle()!=null){this.title = lostRequestDTO.getTitle();}
118-
if(lostRequestDTO.getContent()!=null){this.content = lostRequestDTO.getContent();}
119-
if(lostRequestDTO.getLocation()!=null){this.location = lostRequestDTO.getLocation();}
120-
if(lostRequestDTO.getLostItem()!=null){this.lostItem = lostRequestDTO.getLostItem();}
121-
if(lostRequestDTO.getLostDate()!=null){this.lostDate = lostRequestDTO.getLostDate();}
114+
public Post changePost(PatchPostRequestDTO postRequestDTO){
115+
if(postRequestDTO.getIsAnonymous()!=null){this.isAnonymous = postRequestDTO.getIsAnonymous();}
116+
if(postRequestDTO.getTitle()!=null){this.title = postRequestDTO.getTitle();}
117+
if(postRequestDTO.getContent()!=null){this.content = postRequestDTO.getContent();}
118+
if(postRequestDTO.getLocation()!=null){this.location = postRequestDTO.getLocation();}
119+
if(postRequestDTO.getLostItem()!=null){this.lostItem = postRequestDTO.getLostItem();}
120+
if(postRequestDTO.getLostDate()!=null){this.lostDate = postRequestDTO.getLostDate();}
121+
if(postRequestDTO.getRating()!=null){this.rating = postRequestDTO.getRating();}
122122
return this;
123123
}
124124

125-
public Post changeReview(ReviewRequestDTO reviewRequestDTO){
126-
if(reviewRequestDTO.getTitle()!=null){this.title = reviewRequestDTO.getTitle();}
127-
if(reviewRequestDTO.getContent()!=null){this.content = reviewRequestDTO.getContent();}
128-
if(reviewRequestDTO.getRating()!=null){this.rating = reviewRequestDTO.getRating();}
129-
return this;
130-
}
131125
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package muit.backend.dto.postDTO;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Getter;
5+
import lombok.NoArgsConstructor;
6+
7+
import java.time.LocalDate;
8+
import java.time.LocalDateTime;
9+
import java.util.List;
10+
11+
@Getter
12+
@NoArgsConstructor
13+
@AllArgsConstructor
14+
public class PatchPostRequestDTO {
15+
private Boolean isAnonymous;
16+
private String title;
17+
private String content;
18+
private List<String> originalImgUrls;
19+
private LocalDate lostDate;
20+
private String location;
21+
private String lostItem;
22+
private Long musicalId;
23+
private Integer rating;
24+
25+
}

src/main/java/muit/backend/service/postService/LostService.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,4 @@ public interface LostService {
2121

2222
//게시글 생성
2323
public LostResponseDTO.GeneralLostResponseDTO createLostPost(PostType postType, LostRequestDTO lostRequestDTO, List<MultipartFile> img, Member member);
24-
25-
//게시글 수정
26-
LostResponseDTO.GeneralLostResponseDTO editLostPost(Long postId, LostRequestDTO lostRequestDTO, List<MultipartFile> img, Member member);
2724
}

src/main/java/muit/backend/service/postService/LostServiceImpl.java

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -119,39 +119,5 @@ public LostResponseDTO.GeneralLostResponseDTO createLostPost(PostType postType,
119119
return LostConverter.toGeneralLostResponseDTO(post,member);
120120
}
121121

122-
@Override
123-
@Transactional
124-
public LostResponseDTO.GeneralLostResponseDTO editLostPost(Long postId, LostRequestDTO lostRequestDTO, List<MultipartFile> imgFile, Member member) {
125-
//post 유효성 검사
126-
Post post = postRepository.findById(postId)
127-
.orElseThrow(() -> new GeneralException(ErrorStatus.POST_NOT_FOUND));
128-
129-
//작성자와 동일인인지 검사
130-
if(post.getMember()!=member){
131-
throw(new GeneralException(ErrorStatus._FORBIDDEN));
132-
}
133122

134-
FilePath filePath = switch (post.getPostType()){
135-
case LOST -> FilePath.LOST;
136-
case FOUND -> FilePath.FOUND;
137-
default -> throw new RuntimeException("Unsupported post type");
138-
};
139-
140-
//기존 이미지 먼저 삭제
141-
List<UuidFile> existingImg = post.getImages();
142-
if(!existingImg.isEmpty()){
143-
existingImg.forEach(uuidFileService::deleteFile);
144-
}
145-
//수정된 이미지 삽입
146-
List<UuidFile> imgArr = new ArrayList<>();
147-
if(imgFile!=null&&!imgFile.isEmpty()){
148-
imgArr = imgFile.stream().map(img->uuidFileService.createFile(img, FilePath.REVIEW)).collect(Collectors.toList());
149-
}
150-
post.changeImg(imgArr);
151-
152-
//나머지 필드 수정
153-
Post changedPost = post.changeLost(lostRequestDTO);
154-
155-
return LostConverter.toGeneralLostResponseDTO(changedPost,member);
156-
}
157123
}

0 commit comments

Comments
 (0)