From 7b2cab5b95663027c33118c7f6969b40319bcd7a Mon Sep 17 00:00:00 2001 From: nevermoregb Date: Fri, 28 Mar 2025 13:10:14 +0900 Subject: [PATCH] =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=20=EC=A2=8B?= =?UTF-8?q?=EC=95=84=EC=9A=94=20=EC=8B=AB=EC=96=B4=EC=9A=94=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=EB=82=B4=EB=A0=A4=EC=A3=BC=EB=8A=94=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=B6=94=EA=B0=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../localhost/mapper/localbordMapper.java | 4 ++ .../localhost/service/localbordService.java | 61 +++++++++++++++++-- src/main/resources/mapper/localbordMapper.xml | 27 +++++++- 3 files changed, 87 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/company/localhost/mapper/localbordMapper.java b/src/main/java/io/company/localhost/mapper/localbordMapper.java index 62774ea..7397844 100644 --- a/src/main/java/io/company/localhost/mapper/localbordMapper.java +++ b/src/main/java/io/company/localhost/mapper/localbordMapper.java @@ -130,6 +130,10 @@ public interface localbordMapper { void deleteGoodOrBadByCommentId(MapDto map); + MapDto selectMyBoardReaction(MapDto boardDetail); + + MapDto selectMyBoardReactions(MapDto param); + } diff --git a/src/main/java/io/company/localhost/service/localbordService.java b/src/main/java/io/company/localhost/service/localbordService.java index 9a51a01..cfdc8f6 100644 --- a/src/main/java/io/company/localhost/service/localbordService.java +++ b/src/main/java/io/company/localhost/service/localbordService.java @@ -227,7 +227,8 @@ public class localbordService { PageHelper.startPage(page, size); List result = boardMapper.selectComments(map); - enrichCommentsWithAdditionalData(result); // 댓글 데이터 보강 + enrichCommentsWithAdditionalData(map, result); // 댓글 데이터 보강 + return PageUtil.redefineNavigation(new PageInfo<>(result, size)); } @@ -397,12 +398,18 @@ public class localbordService { private void enrichBoardDetail(MapDto boardDetail) { if(boardDetail == null) return; + long userId = AuthUtil.getUser().getId(); long boardId = ((Number) boardDetail.get("id")).longValue(); + boardDetail.put("userId", userId); boardDetail.put("hasAttachment", selectIsAttachments(boardId)); boardDetail.put("commentCount", selectCountComments(boardId)); + MapDto reactions = selectCountBoardReactions(boardId); + long myReaction = this.selectMyBoardReaction(boardDetail); + boardDetail.put("likeCount", reactions.getOrDefault("likeCount", 0)); boardDetail.put("dislikeCount", reactions.getOrDefault("dislikeCount", 0)); + boardDetail.put("myReaction", myReaction); // Blob 데이터를 문자열로 변환 Object content = boardDetail.get("content"); @@ -412,7 +419,44 @@ public class localbordService { } } - private void enrichPostsWithAdditionalData(List posts) { + // 사용자 게시글 좋아요/싫어요 조회 + private long selectMyBoardReaction(MapDto boardDetail) { + MapDto map = boardMapper.selectMyBoardReaction(boardDetail); + long result = 3; + + if(map == null) { + result = 3; + } else if("T".equals(map.getString("LOCGOBGOD")) && "F".equals(map.getString("LOCGOBBAD"))) { + result = 1; + } else if("F".equals(map.getString("LOCGOBGOD")) && "T".equals(map.getString("LOCGOBBAD"))) { + result = 2; + } else { + result = 3; + } + + return result; + } + + // 사용자 댓글 좋아요/싫어요 조회 + private long selectMyBoardReactions(MapDto param) { + MapDto map = boardMapper.selectMyBoardReactions(param); + long result = 3; + + if(map == null) { + result = 3; + } else if("T".equals(map.getString("LOCGOBGOD")) && "F".equals(map.getString("LOCGOBBAD"))) { + result = 1; + } else if("F".equals(map.getString("LOCGOBGOD")) && "T".equals(map.getString("LOCGOBBAD"))) { + result = 2; + } else { + result = 3; + } + + return result; + } + + + private void enrichPostsWithAdditionalData(List posts) { for (MapDto post : posts) { Object idObject = post.get("id"); if (idObject instanceof Number) { @@ -434,7 +478,7 @@ public class localbordService { } } - private void enrichCommentsWithAdditionalData(List comments) { + private void enrichCommentsWithAdditionalData(MapDto map, List comments) { for (MapDto comment : comments) { Object idObject = comment.get("LOCCMTSEQ"); String userId = ""; @@ -449,10 +493,16 @@ public class localbordService { if (idObject instanceof Number) { long commentId = ((Number) idObject).longValue(); + long id = AuthUtil.getUser().getId(); //사용자 아이디 MapDto reactions = boardMapper.selectCountCommentReactions(commentId); comment.put("likeCount", reactions != null ? reactions.getOrDefault("likeCount", 0) : 0); comment.put("dislikeCount", reactions != null ? reactions.getOrDefault("dislikeCount", 0) : 0); + + map.put("userId", id); + map.put("boardId", map.get("LOCBRDSEQ")); + map.put("commentId", commentId); + comment.put("myReaction", this.selectMyBoardReactions(map)); Object content = comment.get("content"); comment.put("content", content); @@ -460,7 +510,10 @@ public class localbordService { } } - /** + + + + /** * 게시판 수정 * * @param map diff --git a/src/main/resources/mapper/localbordMapper.xml b/src/main/resources/mapper/localbordMapper.xml index 081ceaa..0d23da2 100644 --- a/src/main/resources/mapper/localbordMapper.xml +++ b/src/main/resources/mapper/localbordMapper.xml @@ -378,7 +378,32 @@ COALESCE(SUM(CASE WHEN LOCGOBBAD = 'T' THEN 1 ELSE 0 END), 0) AS dislikeCount FROM localgorb WHERE LOCBRDSEQ = #{boardId} AND LOCCMTSEQ IS NULL; - + + + + + + +