From 128abed9b03e6c94b9860fa2e57c3d4d24672662 Mon Sep 17 00:00:00 2001 From: SeokGeunHo Date: Mon, 13 Oct 2025 12:24:48 +0900 Subject: [PATCH] =?UTF-8?q?[fix]=20=EC=82=AD=EC=A0=9C=EB=90=9C=20=EA=B2=8C?= =?UTF-8?q?=EC=8B=9C=EA=B8=80=20=EC=A1=B0=ED=9A=8C=20=EB=B2=84=EA=B7=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../post/post/repository/PostRepository.java | 32 +++++++++++-------- .../domain/post/post/service/PostService.java | 32 +++++++++---------- 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/back/domain/post/post/repository/PostRepository.java b/src/main/java/com/back/domain/post/post/repository/PostRepository.java index a45fed3..fef86c7 100644 --- a/src/main/java/com/back/domain/post/post/repository/PostRepository.java +++ b/src/main/java/com/back/domain/post/post/repository/PostRepository.java @@ -1,6 +1,7 @@ package com.back.domain.post.post.repository; import com.back.domain.post.post.entity.Post; +import com.back.domain.post.post.enums.PostStatus; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -9,28 +10,31 @@ public interface PostRepository extends JpaRepository { // 최신순 (카테고리 없음) - List findTop10ByOrderByIdDesc(); - List findTop10ByIdLessThanOrderByIdDesc(Long lastId); + List findTop10ByStatusNotOrderByIdDesc(PostStatus status); + List findTop10ByStatusNotAndIdLessThanOrderByIdDesc(PostStatus status, Long lastId); // 추천순 (카테고리 없음) - List findTop10ByOrderByLikeCountDescIdDesc(); - List findTop10ByLikeCountLessThanOrLikeCountEqualsAndIdLessThanOrderByLikeCountDescIdDesc( - Integer likeCount, Integer likeCount2, Long id); + List findTop10ByStatusNotOrderByLikeCountDescIdDesc(PostStatus status); + List findTop10ByStatusNotAndLikeCountLessThanOrLikeCountEqualsAndIdLessThanOrderByLikeCountDescIdDesc( + PostStatus status, Integer likeCount, Integer likeCount2, Long id); // 댓글순 (카테고리 없음) - List findTop10ByOrderByCommentCountDescIdDesc(); - List findTop10ByCommentCountLessThanOrCommentCountEqualsAndIdLessThanOrderByCommentCountDescIdDesc( - Integer commentCount, Integer commentCount2, Long id); + List findTop10ByStatusNotOrderByCommentCountDescIdDesc(PostStatus status); + List findTop10ByStatusNotAndCommentCountLessThanOrCommentCountEqualsAndIdLessThanOrderByCommentCountDescIdDesc( + PostStatus status, Integer commentCount, Integer commentCount2, Long id); // 최신순 (카테고리) - List findTop10ByCategoryIdOrderByIdDesc(Long categoryId); - List findTop10ByCategoryIdAndIdLessThanOrderByIdDesc(Long categoryId, Long id); + List findTop10ByCategoryIdAndStatusNotOrderByIdDesc(Long categoryId, PostStatus status); + List findTop10ByCategoryIdAndStatusNotAndIdLessThanOrderByIdDesc(Long categoryId, PostStatus status, Long id); // 추천순 (카테고리) - List findTop10ByCategoryIdOrderByLikeCountDescIdDesc(Long categoryId); - List findTop10ByCategoryIdAndLikeCountLessThanOrLikeCountEqualsAndIdLessThanOrderByLikeCountDescIdDesc(Long categoryId, Integer likeCount, Integer likeCountEquals, Long id); + List findTop10ByCategoryIdAndStatusNotOrderByLikeCountDescIdDesc(Long categoryId, PostStatus status); + List findTop10ByCategoryIdAndStatusNotAndLikeCountLessThanOrLikeCountEqualsAndIdLessThanOrderByLikeCountDescIdDesc( + Long categoryId, PostStatus status, Integer likeCount, Integer likeCountEquals, Long id); // 댓글순 (카테고리) - List findTop10ByCategoryIdOrderByCommentCountDescIdDesc(Long categoryId); - List findTop10ByCategoryIdAndCommentCountLessThanOrCommentCountEqualsAndIdLessThanOrderByCommentCountDescIdDesc(Long categoryId, Integer commentCount, Integer commentCountEquals, Long id); + List findTop10ByCategoryIdAndStatusNotOrderByCommentCountDescIdDesc(Long categoryId, PostStatus status); + List findTop10ByCategoryIdAndStatusNotAndCommentCountLessThanOrCommentCountEqualsAndIdLessThanOrderByCommentCountDescIdDesc( + Long categoryId, PostStatus status, Integer commentCount, Integer commentCountEquals, Long id); } + diff --git a/src/main/java/com/back/domain/post/post/service/PostService.java b/src/main/java/com/back/domain/post/post/service/PostService.java index 0b7a7a4..6ae3218 100644 --- a/src/main/java/com/back/domain/post/post/service/PostService.java +++ b/src/main/java/com/back/domain/post/post/service/PostService.java @@ -292,23 +292,23 @@ private List findAllPosts(PostSortScrollRequestDto reqBody) { return switch (reqBody.postSortStatus()) { case POPULAR -> { if (reqBody.lastId() == null || reqBody.lastLikeCount() == null) { - yield postRepository.findTop10ByOrderByLikeCountDescIdDesc(); + yield postRepository.findTop10ByStatusNotOrderByLikeCountDescIdDesc(PostStatus.DELETED); } else { - yield postRepository.findTop10ByLikeCountLessThanOrLikeCountEqualsAndIdLessThanOrderByLikeCountDescIdDesc(reqBody.lastLikeCount(), reqBody.lastLikeCount(), reqBody.lastId()); + yield postRepository.findTop10ByStatusNotAndLikeCountLessThanOrLikeCountEqualsAndIdLessThanOrderByLikeCountDescIdDesc(PostStatus.DELETED, reqBody.lastLikeCount(), reqBody.lastLikeCount(), reqBody.lastId()); } } case COMMENTS -> { if (reqBody.lastId() == null || reqBody.lastCommentCount() == null) { - yield postRepository.findTop10ByOrderByCommentCountDescIdDesc(); + yield postRepository.findTop10ByStatusNotOrderByCommentCountDescIdDesc(PostStatus.DELETED); } else { - yield postRepository.findTop10ByCommentCountLessThanOrCommentCountEqualsAndIdLessThanOrderByCommentCountDescIdDesc(reqBody.lastCommentCount(), reqBody.lastCommentCount(), reqBody.lastId()); + yield postRepository.findTop10ByStatusNotAndCommentCountLessThanOrCommentCountEqualsAndIdLessThanOrderByCommentCountDescIdDesc(PostStatus.DELETED, reqBody.lastCommentCount(), reqBody.lastCommentCount(), reqBody.lastId()); } } case LATEST -> { if (reqBody.lastId() == null) { - yield postRepository.findTop10ByOrderByIdDesc(); + yield postRepository.findTop10ByStatusNotOrderByIdDesc(PostStatus.DELETED); } else { - yield postRepository.findTop10ByIdLessThanOrderByIdDesc(reqBody.lastId()); + yield postRepository.findTop10ByStatusNotAndIdLessThanOrderByIdDesc(PostStatus.DELETED, reqBody.lastId()); } } default -> throw new IllegalArgumentException("지원하지 않는 정렬 기준: " + reqBody.postSortStatus()); @@ -320,29 +320,29 @@ private List findPostsByCategory(PostSortScrollRequestDto reqBody) { return switch (reqBody.postSortStatus()) { case POPULAR -> { if (reqBody.lastId() == null || reqBody.lastLikeCount() == null) { - yield postRepository.findTop10ByCategoryIdOrderByLikeCountDescIdDesc( - reqBody.categoryId()); + yield postRepository.findTop10ByCategoryIdAndStatusNotOrderByLikeCountDescIdDesc( + reqBody.categoryId(), PostStatus.DELETED); } else { - yield postRepository.findTop10ByCategoryIdAndLikeCountLessThanOrLikeCountEqualsAndIdLessThanOrderByLikeCountDescIdDesc( - reqBody.categoryId(), reqBody.lastLikeCount(), reqBody.lastLikeCount(), + yield postRepository.findTop10ByCategoryIdAndStatusNotAndLikeCountLessThanOrLikeCountEqualsAndIdLessThanOrderByLikeCountDescIdDesc( + reqBody.categoryId(), PostStatus.DELETED, reqBody.lastLikeCount(), reqBody.lastLikeCount(), reqBody.lastId()); } } case COMMENTS -> { if (reqBody.lastId() == null || reqBody.lastCommentCount() == null) { - yield postRepository.findTop10ByCategoryIdOrderByCommentCountDescIdDesc( - reqBody.categoryId()); + yield postRepository.findTop10ByCategoryIdAndStatusNotOrderByCommentCountDescIdDesc( + reqBody.categoryId(), PostStatus.DELETED); } else { - yield postRepository.findTop10ByCategoryIdAndCommentCountLessThanOrCommentCountEqualsAndIdLessThanOrderByCommentCountDescIdDesc( - reqBody.categoryId(), reqBody.lastCommentCount(), reqBody.lastCommentCount(), + yield postRepository.findTop10ByCategoryIdAndStatusNotAndCommentCountLessThanOrCommentCountEqualsAndIdLessThanOrderByCommentCountDescIdDesc( + reqBody.categoryId(), PostStatus.DELETED, reqBody.lastCommentCount(), reqBody.lastCommentCount(), reqBody.lastId()); } } case LATEST -> { if (reqBody.lastId() == null) { - yield postRepository.findTop10ByCategoryIdOrderByIdDesc(reqBody.categoryId()); + yield postRepository.findTop10ByCategoryIdAndStatusNotOrderByIdDesc(reqBody.categoryId(), PostStatus.DELETED); } else { - yield postRepository.findTop10ByCategoryIdAndIdLessThanOrderByIdDesc(reqBody.categoryId(), + yield postRepository.findTop10ByCategoryIdAndStatusNotAndIdLessThanOrderByIdDesc(reqBody.categoryId(), PostStatus.DELETED, reqBody.lastId()); } }