사용자 좋아요 싫어요 상태 내려주는 로직 추가.
This commit is contained in:
parent
fe7afd1d7f
commit
7b2cab5b95
@ -130,6 +130,10 @@ public interface localbordMapper {
|
||||
|
||||
void deleteGoodOrBadByCommentId(MapDto map);
|
||||
|
||||
MapDto selectMyBoardReaction(MapDto boardDetail);
|
||||
|
||||
MapDto selectMyBoardReactions(MapDto param);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -227,7 +227,8 @@ public class localbordService {
|
||||
PageHelper.startPage(page, size);
|
||||
|
||||
List<MapDto> 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,6 +419,43 @@ public class localbordService {
|
||||
}
|
||||
}
|
||||
|
||||
// 사용자 게시글 좋아요/싫어요 조회
|
||||
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<MapDto> posts) {
|
||||
for (MapDto post : posts) {
|
||||
Object idObject = post.get("id");
|
||||
@ -434,7 +478,7 @@ public class localbordService {
|
||||
}
|
||||
}
|
||||
|
||||
private void enrichCommentsWithAdditionalData(List<MapDto> comments) {
|
||||
private void enrichCommentsWithAdditionalData(MapDto map, List<MapDto> comments) {
|
||||
for (MapDto comment : comments) {
|
||||
Object idObject = comment.get("LOCCMTSEQ");
|
||||
String userId = "";
|
||||
@ -449,17 +493,26 @@ 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 게시판 수정
|
||||
*
|
||||
|
||||
@ -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;
|
||||
</select>
|
||||
|
||||
<!-- 사용자 게시물 좋아요/싫어요 상태 조회 -->
|
||||
<select id="selectMyBoardReaction">
|
||||
SELECT
|
||||
LOCGOBGOD,
|
||||
LOCGOBBAD
|
||||
FROM
|
||||
localgorb
|
||||
WHERE
|
||||
LOCBRDSEQ = #{id}
|
||||
AND LOCCMTSEQ IS NULL
|
||||
AND MEMBERSEQ = #{userId};
|
||||
</select>
|
||||
|
||||
<!-- 사용자 댓글 게시물 좋아요/싫어요 상태 조회 -->
|
||||
<select id="selectMyBoardReactions">
|
||||
SELECT
|
||||
LOCGOBGOD,
|
||||
LOCGOBBAD
|
||||
FROM
|
||||
localgorb
|
||||
WHERE
|
||||
LOCBRDSEQ = #{boardId}
|
||||
AND LOCCMTSEQ = #{commentId}
|
||||
AND MEMBERSEQ = #{userId};
|
||||
</select>
|
||||
|
||||
<!-- 댓글별 좋아요/싫어요 개수 조회 -->
|
||||
|
||||
Loading…
Reference in New Issue
Block a user