Skip to content

Commit

Permalink
Merge pull request #105 from MUIT-UMC/develop
Browse files Browse the repository at this point in the history
[merge] 250212 / 20th deploy
  • Loading branch information
challonsy authored Feb 12, 2025
2 parents b68594d + baf6778 commit cf4ae86
Show file tree
Hide file tree
Showing 20 changed files with 149 additions and 72 deletions.
46 changes: 44 additions & 2 deletions src/main/java/muit/backend/controller/CommentController.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,22 @@
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import muit.backend.apiPayLoad.ApiResponse;
import muit.backend.apiPayLoad.code.status.ErrorStatus;
import muit.backend.apiPayLoad.exception.GeneralException;
import muit.backend.converter.CommentConverter;
import muit.backend.domain.entity.member.Comment;
import muit.backend.domain.entity.member.Member;
import muit.backend.domain.entity.member.Reply;
import muit.backend.domain.enums.PostType;
import muit.backend.domain.enums.Role;
import muit.backend.dto.commentDTO.CommentReplyRequestDTO;
import muit.backend.dto.commentDTO.CommentReplyResponseDTO;
import muit.backend.dto.postDTO.LostRequestDTO;
import muit.backend.dto.postDTO.LostResponseDTO;
import muit.backend.dto.reportDTO.ReportRequestDTO;
import muit.backend.dto.reportDTO.ReportResponseDTO;
import muit.backend.repository.CommentRepository;
import muit.backend.repository.ReplyRepository;
import muit.backend.service.CommentService;
import muit.backend.service.MemberService;
import org.springframework.web.bind.annotation.*;
Expand All @@ -26,6 +34,8 @@ public class CommentController {

private final CommentService commentService;
private final MemberService memberService;
private final CommentRepository commentRepository;
private final ReplyRepository replyRepository;

@GetMapping("/{postId}")
@Operation(summary = "댓글 조회 API", description = "특정 게시물의 댓글을 모두 조회하는 API")
Expand All @@ -37,9 +47,9 @@ public ApiResponse<CommentReplyResponseDTO.CommentListResponseDTO> getCommentLis
@PathVariable("postId") Long postId,
@RequestParam(defaultValue = "0", name = "page") Integer page,
@RequestParam(defaultValue = "20", name = "size") Integer size) {
memberService.getMemberByToken(accessToken);
Member member = memberService.getMemberByToken(accessToken);

return ApiResponse.onSuccess(commentService.getCommentList(postId, page, size));
return ApiResponse.onSuccess(commentService.getCommentList(postId, member, page, size));
}

@PostMapping("/{postId}")
Expand Down Expand Up @@ -80,4 +90,36 @@ public ApiResponse<ReportResponseDTO.ReportResultDTO> reportComment(@RequestHead
Member member = memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(commentService.reportComment(commentType,commentId,member,requestDTO));
}

@GetMapping("/admin/comment")
@Operation(summary = "댓글 단건 조회 API", description = "신고 내용 중 댓글 id로 댓글 정보 불러오는 API")
@Parameters({
@Parameter(name = "commentId", description = "댓글 아이디")
})
public ApiResponse<CommentReplyResponseDTO.CommentResponseDTO> getComment(@RequestHeader("Authorization") String accessToken,
@RequestParam("commentId") Long commentId) {
Member member = memberService.getMemberByToken(accessToken);
if(member.getRole()!= Role.ADMIN){
throw new GeneralException(ErrorStatus.MEMBER_NOT_ADMIN);
}
Comment comment = commentRepository.findById(commentId).orElseThrow(()->new GeneralException(ErrorStatus.COMMENT_NOT_FOUND));

return ApiResponse.onSuccess(CommentConverter.toCommentResponseDTO(comment,member));
}

@GetMapping("/admin/reply")
@Operation(summary = "대댓글 단건 조회 API", description = "신고 내용 중 대댓글 id로 댓글 정보 불러오는 API")
@Parameters({
@Parameter(name = "replyId", description = "대댓글 아이디")
})
public ApiResponse<CommentReplyResponseDTO.ReplyResponseDTO> getReply(@RequestHeader("Authorization") String accessToken,
@RequestParam("commentId") Long commentId) {
Member member = memberService.getMemberByToken(accessToken);
if(member.getRole()!= Role.ADMIN){
throw new GeneralException(ErrorStatus.MEMBER_NOT_ADMIN);
}
Reply reply = replyRepository.findById(commentId).orElseThrow(()->new GeneralException(ErrorStatus.COMMENT_NOT_FOUND));

return ApiResponse.onSuccess(CommentConverter.toReplyResponseDTO(reply,member));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -99,9 +99,9 @@ public ApiResponse<ReportResponseDTO.GeneralReportListDTO> getReportList( @Reque
Page<Report> reports;
if(type==null){
reports= reportRepository.findAll(PageRequest.of(page, size));
}else if(type==Type.POST){
}else if(type==Type.POST){//게시물 신고만 조회
reports=reportRepository.findAllByReportObjectType(ReportObjectType.POST,PageRequest.of(page,size));
}else if(type==Type.COMMENT){
}else if(type==Type.COMMENT){//댓글 신고만 조회
ReportObjectType[] types = {ReportObjectType.COMMENT,ReportObjectType.REPLY};
reports=reportRepository.findAllByReportObjectTypeIn(types,PageRequest.of(page,size));
}else{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,23 +73,23 @@ public ApiResponse<LostResponseDTO.LostResultListDTO> getPostList(@RequestHeader
case LOST -> PostType.LOST;
case FOUND -> PostType.FOUND;
};
memberService.getMemberByToken(accessToken);
Member member = memberService.getMemberByToken(accessToken);
Map<String,String> search = new HashMap<>();
search.put("musicalName",musicalName.trim());
search.put("lostDate",lostDate!=null ? lostDate.toString().trim():"");
search.put("location",location.trim());
search.put("lostItem",lostItem.trim());

return ApiResponse.onSuccess(lostService.getLostPostList(postType, page, size, search));
return ApiResponse.onSuccess(lostService.getLostPostList(postType, member, page, size, search));
}

@GetMapping("/{postId}")
@Operation(summary = "분실 게시글 단건 조회 API", description = "분실 게시글 단건을 조회하는 API 입니다.")
public ApiResponse<LostResponseDTO.GeneralLostResponseDTO> getPost(@RequestHeader("Authorization") String accessToken,
@PathVariable("postId") Long postId) {

memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(lostService.getLostPost(postId));
Member member = memberService.getMemberByToken(accessToken);
return ApiResponse.onSuccess(lostService.getLostPost(postId,member));
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,14 @@ public ApiResponse<ReviewResponseDTO.ReviewListResponseDTO> getReviewList(@Reque
@RequestParam(defaultValue = "", name="musicalName") String musicalName,
@RequestParam(defaultValue = "",name="location") String location) {

memberService.getMemberByToken(accessToken);
Member member = memberService.getMemberByToken(accessToken);

PostType postType = switch (reviewType){
case REVIEW -> PostType.REVIEW;
case SIGHT -> PostType.SIGHT;
};

return ApiResponse.onSuccess(reviewService.getReviewList(postType, page, size, musicalName,location));
return ApiResponse.onSuccess(reviewService.getReviewList(postType, member, page, size, musicalName,location));
}

@GetMapping("/{postId}")
Expand All @@ -83,9 +83,9 @@ public ApiResponse<ReviewResponseDTO.ReviewListResponseDTO> getReviewList(@Reque
})
public ApiResponse<ReviewResponseDTO.GeneralReviewResponseDTO> getReview(@RequestHeader("Authorization") String accessToken,
@PathVariable("postId") Long postId) {
memberService.getMemberByToken(accessToken);
Member member = memberService.getMemberByToken(accessToken);

return ApiResponse.onSuccess(reviewService.getReview(postId));
return ApiResponse.onSuccess(reviewService.getReview(postId,member));
}

@PatchMapping(value = "/{postId}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
Expand Down
16 changes: 11 additions & 5 deletions src/main/java/muit/backend/converter/CommentConverter.java
Original file line number Diff line number Diff line change
Expand Up @@ -94,31 +94,35 @@ public static Reply toReply(CommentReplyRequestDTO.ReplyRequestDTO requestDTO, C

//Comment -> DTO
//생성 시 답, 조회 시 단건 답
public static CommentReplyResponseDTO.CommentResponseDTO toCommentResponseDTO(Comment comment) {
public static CommentReplyResponseDTO.CommentResponseDTO toCommentResponseDTO(Comment comment, Member member) {

List<CommentReplyResponseDTO.ReplyResponseDTO> replies = comment.getReplyList().stream()
.map(CommentConverter::toReplyResponseDTO).collect(Collectors.toList());
.map(reply->CommentConverter.toReplyResponseDTO(reply,member)).collect(Collectors.toList());

String nickname = switch (comment.getAnonymousIndex()) {
case -2 -> "삭제된 댓글";
case -1 -> comment.getMember().getName();
case 0 -> "글쓴이";
default -> "익명" + comment.getAnonymousIndex();
};

boolean isMyComment = comment.getMember()==member;

return CommentReplyResponseDTO.CommentResponseDTO.builder()
.commentId(comment.getId())
.content(comment.getContent())
.memberId(comment.getMember().getId())
.isMyComment(isMyComment)
.nickname(nickname)
.replies(replies)
.createdAt(comment.getCreatedAt())
.build();
}

//조회 시 리스트 형식 답
public static CommentReplyResponseDTO.CommentListResponseDTO toCommentListResponseDTO(Page<Comment> commentPage) {
public static CommentReplyResponseDTO.CommentListResponseDTO toCommentListResponseDTO(Page<Comment> commentPage, Member member) {
List<CommentReplyResponseDTO.CommentResponseDTO> commentResultListDTO = commentPage.stream()
.map(CommentConverter::toCommentResponseDTO).collect(Collectors.toList());
.map(comment->CommentConverter.toCommentResponseDTO(comment, member)).collect(Collectors.toList());

return CommentReplyResponseDTO.CommentListResponseDTO.builder()
.comments(commentResultListDTO)
Expand All @@ -131,18 +135,20 @@ public static CommentReplyResponseDTO.CommentListResponseDTO toCommentListRespon


//생성 시 단건 답, 댓글 DTO 내부 대댓글 형식
public static CommentReplyResponseDTO.ReplyResponseDTO toReplyResponseDTO(Reply reply) {
public static CommentReplyResponseDTO.ReplyResponseDTO toReplyResponseDTO(Reply reply,Member member) {

String nickname = switch (reply.getAnonymousIndex()) {
case -1 -> reply.getMember().getName();
case 0 -> "글쓴이";
default -> "익명" + reply.getAnonymousIndex();
};

boolean isMyComment = reply.getMember()==member;
return CommentReplyResponseDTO.ReplyResponseDTO.builder()
.commentId(reply.getComment().getId())
.replyId(reply.getId())
.memberId(reply.getMember().getId())
.isMyComment(isMyComment)
.nickname(nickname)
.content(reply.getContent())
.createdAt(reply.getCreatedAt())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import muit.backend.domain.entity.member.Member;
import muit.backend.domain.entity.member.Post;
import muit.backend.domain.enums.PostType;
import muit.backend.domain.enums.Role;
import muit.backend.dto.postDTO.LostRequestDTO;
import muit.backend.dto.postDTO.LostResponseDTO;
import muit.backend.s3.UuidFile;
Expand Down Expand Up @@ -33,11 +34,13 @@ public static Post toPost(Member member, PostType postType, LostRequestDTO reque

// Entity -> ResultDTO
// 게시글 조회 - 단건, 생성, 수정 시
public static LostResponseDTO.GeneralLostResponseDTO toGeneralLostResponseDTO(Post post) {
public static LostResponseDTO.GeneralLostResponseDTO toGeneralLostResponseDTO(Post post, Member member) {
boolean isMyPost = member.getRole().equals(Role.ADMIN) || member.getId().equals(post.getMember().getId());
String name = post.getIsAnonymous() ? "익명" :post.getMember().getName();
return LostResponseDTO.GeneralLostResponseDTO.builder()
.id(post.getId())
.memberId(post.getMember().getId())
.isMyPost(isMyPost)
.nickname(name)
.title(post.getTitle())
.content(post.getContent())
Expand All @@ -54,9 +57,9 @@ public static LostResponseDTO.GeneralLostResponseDTO toGeneralLostResponseDTO(Po

// List<Entity> -> ResultListDTO
//게시판 조회 - 리스트
public static LostResponseDTO.LostResultListDTO toLostResultListDTO(Page<Post> postPage) {
public static LostResponseDTO.LostResultListDTO toLostResultListDTO(Page<Post> postPage,Member member) {
List<LostResponseDTO.GeneralLostResponseDTO> lostResultListDTO = postPage.stream()
.map(LostConverter::toGeneralLostResponseDTO).collect(Collectors.toList());
.map(post->LostConverter.toGeneralLostResponseDTO(post,member)).collect(Collectors.toList());

return LostResponseDTO.LostResultListDTO.builder()
.posts(lostResultListDTO)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import muit.backend.domain.entity.member.Member;
import muit.backend.domain.entity.member.Post;
import muit.backend.domain.enums.PostType;
import muit.backend.domain.enums.Role;
import muit.backend.dto.postDTO.PostRequestDTO;
import muit.backend.dto.postDTO.PostResponseDTO;
import muit.backend.s3.UuidFile;
Expand Down Expand Up @@ -36,13 +37,15 @@ public static Post toPost(Member member, PostType postType, PostRequestDTO reque

// Entity -> ResultDTO
// 게시글 조회 - 단건
public static PostResponseDTO.GeneralPostResponseDTO toGeneralPostResponseDTO(Post post,boolean isLiked) {
public static PostResponseDTO.GeneralPostResponseDTO toGeneralPostResponseDTO(Post post,boolean isLiked,Member member) {

boolean isMyPost = member.getRole().equals(Role.ADMIN) || member.getId().equals(post.getMember().getId());
String name = post.getIsAnonymous() ? "익명" :post.getMember().getName();

return PostResponseDTO.GeneralPostResponseDTO.builder()
.id(post.getId())
.memberId(post.getMember().getId())
.isMyPost(isMyPost)
.nickname(name)
.title(post.getTitle())
.content(post.getContent())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import muit.backend.domain.entity.member.Post;
import muit.backend.domain.entity.musical.Musical;
import muit.backend.domain.enums.PostType;
import muit.backend.domain.enums.Role;
import muit.backend.dto.postDTO.ReviewRequestDTO;
import muit.backend.dto.postDTO.ReviewResponseDTO;
import muit.backend.s3.UuidFile;
Expand Down Expand Up @@ -35,8 +36,9 @@ public static Post toReview(PostType postType, Member member, Musical musical, R
}

//to 단건 DTO
public static ReviewResponseDTO.GeneralReviewResponseDTO toReviewResponseDTO(Post review) {
public static ReviewResponseDTO.GeneralReviewResponseDTO toReviewResponseDTO(Post review, Member member) {

boolean isMyPost = member.getRole().equals(Role.ADMIN) || member.getId().equals(review.getMember().getId());
String name = review.getIsAnonymous() ? "익명" :review.getMember().getName();

return ReviewResponseDTO.GeneralReviewResponseDTO.builder()
Expand All @@ -58,9 +60,9 @@ public static ReviewResponseDTO.GeneralReviewResponseDTO toReviewResponseDTO(Pos
}

//Page to ListDTO
public static ReviewResponseDTO.ReviewListResponseDTO toReviewListDTO(Page<Post> reviewPage) {
public static ReviewResponseDTO.ReviewListResponseDTO toReviewListDTO(Page<Post> reviewPage,Member member) {
List<ReviewResponseDTO.GeneralReviewResponseDTO> reviewListDTO = reviewPage.stream().
map(ReviewConverter::toReviewResponseDTO).collect(Collectors.toList());
map(post->ReviewConverter.toReviewResponseDTO(post,member)).collect(Collectors.toList());

return ReviewResponseDTO.ReviewListResponseDTO.builder()
.posts(reviewListDTO)
Expand Down
11 changes: 9 additions & 2 deletions src/main/java/muit/backend/domain/entity/member/Comment.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import lombok.Getter;
import lombok.NoArgsConstructor;
import muit.backend.domain.common.BaseEntity;
import muit.backend.domain.enums.Role;
import org.hibernate.annotations.DynamicUpdate;

import java.util.ArrayList;
Expand Down Expand Up @@ -44,8 +45,14 @@ public class Comment extends BaseEntity {



public void deleteContent(String newContent) {
this.content = newContent;
public void deleteContent(Role role) {
if(role.equals(Role.USER)){
this.content = "삭제된 댓글입니다.";
this.anonymousIndex =-2;
}else{
this.content = "관리자에 의해 삭제된 댓글입니다.";
this.anonymousIndex = -2;
}
}

public void changeReportCount(Boolean isAdd){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public static class CommentResponseDTO{
private String nickname;
private String content;
private Long memberId;
private Boolean isMyComment;
private LocalDateTime createdAt;
private List<ReplyResponseDTO> replies;
}
Expand All @@ -33,6 +34,7 @@ public static class ReplyResponseDTO{
private Long replyId;
private String content;
private Long memberId;
private Boolean isMyComment;
private LocalDateTime createdAt;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public class LostResponseDTO {
public static class GeneralLostResponseDTO {
private Long id;
private Long memberId;
private Boolean isMyPost;
private String nickname;
private String title;
private String musicalName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public class PostResponseDTO {
public static class GeneralPostResponseDTO {
private Long id;
private Long memberId;
private Boolean isMyPost;
private String nickname;
private String title;
private String content;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public class ReviewResponseDTO
public static class GeneralReviewResponseDTO{
private Long id;
private Long memberId;
private Boolean isMyPost;
private String nickname;
private String title;
private String content;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/muit/backend/service/CommentService.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

@Service
public interface CommentService {
CommentReplyResponseDTO.CommentListResponseDTO getCommentList(Long postId, Integer page, Integer size);
CommentReplyResponseDTO.CommentListResponseDTO getCommentList(Long postId,Member member, Integer page, Integer size);

CommentReplyResponseDTO.CommentResponseDTO writeComment(CommentReplyRequestDTO.CommentRequestDTO requestDTO, Long postId, Member member);

Expand Down
Loading

0 comments on commit cf4ae86

Please sign in to comment.