diff --git a/backend/src/main/java/com/ai/lawyer/domain/poll/service/PollService.java b/backend/src/main/java/com/ai/lawyer/domain/poll/service/PollService.java index 63e7853..0d1ddca 100644 --- a/backend/src/main/java/com/ai/lawyer/domain/poll/service/PollService.java +++ b/backend/src/main/java/com/ai/lawyer/domain/poll/service/PollService.java @@ -37,7 +37,7 @@ public interface PollService { PollDto updatePoll(Long pollId, PollUpdateDto pollUpdateDto, Long memberId); void patchUpdatePoll(Long pollId, PollUpdateDto pollUpdateDto); void closePoll(Long pollId); - void deletePoll(Long pollId, Long memberId); + void deletePoll(Long pollId, Long memberId); // ===== 검증 관련 ===== void validatePollCreate(PollCreateDto dto); diff --git a/backend/src/main/java/com/ai/lawyer/domain/post/controller/PostController.java b/backend/src/main/java/com/ai/lawyer/domain/post/controller/PostController.java index 38e00a6..fd860c2 100644 --- a/backend/src/main/java/com/ai/lawyer/domain/post/controller/PostController.java +++ b/backend/src/main/java/com/ai/lawyer/domain/post/controller/PostController.java @@ -114,6 +114,15 @@ public ResponseEntity> deletePost(@PathVariable Long postId) { return ResponseEntity.ok(new ApiResponse<>(200, "게시글이 삭제되었습니다.", null)); } + @Operation(summary = "게시글 삭제(관리자)") + @DeleteMapping("/admin/{postId}") + public ResponseEntity> deletePostAdmin(@PathVariable Long postId) { + //AuthUtil.validateAdmin(); 관리자 + AuthUtil.getAuthenticatedMemberId(); // 모든 유저 + postService.deletePostAdmin(postId); + return ResponseEntity.ok(new ApiResponse<>(200, "게시글이 삭제되었습니다.", null)); + } + @ExceptionHandler(ResponseStatusException.class) public ResponseEntity> handleResponseStatusException(ResponseStatusException ex) { int code = ex.getStatusCode().value(); diff --git a/backend/src/main/java/com/ai/lawyer/domain/post/service/PostService.java b/backend/src/main/java/com/ai/lawyer/domain/post/service/PostService.java index 65860de..b87dde0 100644 --- a/backend/src/main/java/com/ai/lawyer/domain/post/service/PostService.java +++ b/backend/src/main/java/com/ai/lawyer/domain/post/service/PostService.java @@ -26,6 +26,7 @@ public interface PostService { PostDto updatePost(Long postId, PostUpdateDto postUpdateDto); void patchUpdatePost(Long postId, PostUpdateDto postUpdateDto); void deletePost(Long postId); + void deletePostAdmin(Long postId); PostDetailDto createPostWithPoll(PostWithPollCreateDto dto, Long memberId); // ===== 본인 게시글 관련 ===== diff --git a/backend/src/main/java/com/ai/lawyer/domain/post/service/PostServiceImpl.java b/backend/src/main/java/com/ai/lawyer/domain/post/service/PostServiceImpl.java index 2024b2e..2b007cb 100644 --- a/backend/src/main/java/com/ai/lawyer/domain/post/service/PostServiceImpl.java +++ b/backend/src/main/java/com/ai/lawyer/domain/post/service/PostServiceImpl.java @@ -100,9 +100,9 @@ public PostDetailDto getPostById(Long postId) { public List getPostsByMemberId(Long memberId) { Member member = AuthUtil.getMemberOrThrow(memberId); List posts = postRepository.findByMember(member); - if (posts.isEmpty()) { - throw new ResponseStatusException(HttpStatus.NOT_FOUND, "해당 회원의 게시글이 없습니다."); - } +// if (posts.isEmpty()) { +// throw new ResponseStatusException(HttpStatus.NOT_FOUND, "해당 회원의 게시글이 없습니다."); +// } return posts.stream() .sorted(Comparator.comparing(Post::getUpdatedAt, Comparator.nullsLast(Comparator.naturalOrder())).reversed()) // 최신순 정렬 .map(post -> convertToDto(post, memberId)) @@ -145,6 +145,13 @@ public void deletePost(Long postId) { postRepository.delete(post); } + @Override + public void deletePostAdmin(Long postId) { + Post post = postRepository.findById(postId) + .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "삭제할 게시글을 찾을 수 없습니다.")); + postRepository.delete(post); + } + @Override public List getAllPosts(Long memberId) { return postRepository.findAll().stream()