From 1f6d2ec5b2f9cbbd7ccd3d4ed914a262d56c7509 Mon Sep 17 00:00:00 2001 From: lehojun Date: Mon, 2 Jun 2025 17:18:15 +0900 Subject: [PATCH] =?UTF-8?q?[FEAT]=20#37=20=EB=8C=93=EA=B8=80=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../be/apiPayload/code/status/ErrorStatus.java | 3 ++- .../example/be/repository/CommentRepository.java | 3 +++ .../com/example/be/service/CommentServiceImpl.java | 13 +++++++++++++ .../be/web/controller/CommentController.java | 8 ++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/be/apiPayload/code/status/ErrorStatus.java b/src/main/java/com/example/be/apiPayload/code/status/ErrorStatus.java index d3da085..12afa17 100644 --- a/src/main/java/com/example/be/apiPayload/code/status/ErrorStatus.java +++ b/src/main/java/com/example/be/apiPayload/code/status/ErrorStatus.java @@ -29,7 +29,8 @@ public enum ErrorStatus implements BaseErrorCode { _NOT_USER_POST(HttpStatus.NOT_FOUND, "POST402", "해당 유저의 게시글이 아닙니다."), //댓글 관련 에러 - _NOT_FOUND_COMMENT(HttpStatus.NOT_FOUND, "COMMENT404", "해당 댓글을 찾을 수 없습니다."); + _NOT_FOUND_COMMENT(HttpStatus.NOT_FOUND, "COMMENT401", "해당 댓글을 찾을 수 없습니다."), + _NOT_USER_COMMENT(HttpStatus.NOT_FOUND, "COMMENT402", "해당 유저의 댓글이 아닙니다."); private final HttpStatus httpStatus; private final String code; diff --git a/src/main/java/com/example/be/repository/CommentRepository.java b/src/main/java/com/example/be/repository/CommentRepository.java index 20e1ad0..2739408 100644 --- a/src/main/java/com/example/be/repository/CommentRepository.java +++ b/src/main/java/com/example/be/repository/CommentRepository.java @@ -4,6 +4,9 @@ import com.example.be.domain.Post; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface CommentRepository extends JpaRepository { + Optional findByIdAndUserId(Long id, Long userId); } diff --git a/src/main/java/com/example/be/service/CommentServiceImpl.java b/src/main/java/com/example/be/service/CommentServiceImpl.java index ec324bf..ac9ca44 100644 --- a/src/main/java/com/example/be/service/CommentServiceImpl.java +++ b/src/main/java/com/example/be/service/CommentServiceImpl.java @@ -70,4 +70,17 @@ public CommonDTO.IsSuccessDTO createComment(CommentDTO.CommentRequestDTO request commentRepository.save(comment); return CommonDTO.IsSuccessDTO.builder().isSuccess(true).build(); } + + public CommonDTO.IsSuccessDTO deleteComment(Long commentId, HttpServletRequest request) { + User user= getUserFromRequest(request); + + Comment comment = commentRepository.findById(commentId).orElseThrow(()-> + new CommentHandler(ErrorStatus._NOT_FOUND_COMMENT)); + + commentRepository.findByIdAndUserId(commentId, user.getId()).orElseThrow(() -> + new CommentHandler(ErrorStatus._NOT_USER_COMMENT)); + + commentRepository.delete(comment); + return CommonDTO.IsSuccessDTO.builder().isSuccess(true).build(); + } } diff --git a/src/main/java/com/example/be/web/controller/CommentController.java b/src/main/java/com/example/be/web/controller/CommentController.java index de4c5d2..8464953 100644 --- a/src/main/java/com/example/be/web/controller/CommentController.java +++ b/src/main/java/com/example/be/web/controller/CommentController.java @@ -35,4 +35,12 @@ public ApiResponse toggleCommentLike( HttpServletRequest request) { return ApiResponse.onSuccess(commentLikeService.toggleCommentLike(commentId, request)); } + + @PostMapping("/{commentId}/delete") + @Operation(summary = "댓글 삭제 API", description = "댓글을 삭제합니다.") + public ApiResponse deleteComment( + @Parameter(description = "댓글 ID") @PathVariable Long commentId, + HttpServletRequest request) { + return ApiResponse.onSuccess(commentService.deleteComment(commentId, request)); + } }