From ddcd6f43355a1e7fabab2ac3c62508387915bb49 Mon Sep 17 00:00:00 2001 From: ByungCheol Date: Sun, 28 Jun 2026 18:16:56 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=8B=A0=EA=B3=A0=20=EB=B8=94=EB=9D=BC?= =?UTF-8?q?=EC=9D=B8=EB=93=9C=20=EA=B4=80=EB=A6=AC=EC=9E=90=20=ED=95=B4?= =?UTF-8?q?=EC=A0=9C=20+=20=ED=95=B4=EC=A0=9C=20=EC=8B=9C=20=EC=8B=A0?= =?UTF-8?q?=EA=B3=A0=EA=B8=B0=EB=A1=9D=20=EC=B4=88=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - POST /board/comments/{id}/unblock (관리자) — 댓글 블라인드 해제 - 글/댓글 블라인드 해제 시 신고 기록 삭제(재블라인드 방지) Co-Authored-By: Claude Opus 4.8 --- .../sb/web/board/controller/BoardController.java | 9 +++++++++ .../com/sb/web/board/service/BoardService.java | 16 ++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/main/java/com/sb/web/board/controller/BoardController.java b/src/main/java/com/sb/web/board/controller/BoardController.java index cbc38f0..80d1cdf 100644 --- a/src/main/java/com/sb/web/board/controller/BoardController.java +++ b/src/main/java/com/sb/web/board/controller/BoardController.java @@ -196,4 +196,13 @@ public class BoardController { boardService.reportComment(commentId, current); return ResponseEntity.noContent().build(); } + + /** 댓글 블라인드 해제 (관리자) */ + @PostMapping("/comments/{commentId}/unblock") + public ResponseEntity unblockComment( + @PathVariable Long commentId, + @RequestAttribute(AuthInterceptor.CURRENT_MEMBER) SessionUser current) { + boardService.unblockComment(commentId, current); + return ResponseEntity.noContent().build(); + } } diff --git a/src/main/java/com/sb/web/board/service/BoardService.java b/src/main/java/com/sb/web/board/service/BoardService.java index cfbf9c8..5813db6 100644 --- a/src/main/java/com/sb/web/board/service/BoardService.java +++ b/src/main/java/com/sb/web/board/service/BoardService.java @@ -125,6 +125,22 @@ public class BoardService { assertAdmin(user); mustFindPost(id); postMapper.updateBlocked(id, blocked, blocked ? reason : null); + // 해제 시 신고 기록 초기화 → 다음 신고 1건에 곧바로 재블라인드되지 않게 + if (!blocked) { + reportMapper.deleteByTarget(T_POST, id); + } + } + + /** 댓글 블라인드 해제 (관리자 전용) — 신고 기록 초기화 */ + @Transactional + public void unblockComment(Long commentId, SessionUser user) { + assertAdmin(user); + Comment comment = commentMapper.findById(commentId); + if (comment == null) { + throw new ApiException(HttpStatus.NOT_FOUND, "댓글을 찾을 수 없습니다."); + } + commentMapper.updateBlocked(commentId, false); + reportMapper.deleteByTarget(T_COMMENT, commentId); } /** 게시글 공지 설정/해제 (관리자 전용) — 목록 최상단 고정 */