From 9ef938548bc65b178f10d4fd27bc111cd120170f Mon Sep 17 00:00:00 2001 From: GiJungPark Date: Sat, 16 May 2026 16:47:29 +0900 Subject: [PATCH 1/5] =?UTF-8?q?[REFACTOR]=20=ED=94=BC=EB=93=9C=EC=9D=98=20?= =?UTF-8?q?=EA=B3=B5=EA=B0=9C,=20=EC=88=A8=EA=B9=80=20=EC=97=AC=EB=B6=80?= =?UTF-8?q?=EB=A5=BC=20=EC=95=A0=ED=94=8C=EB=A6=AC=EC=BC=80=EC=9D=B4?= =?UTF-8?q?=EC=85=98=20=EB=8B=A8=EC=97=90=EC=84=9C=20=ED=8C=8C=EC=8B=B1?= =?UTF-8?q?=ED=95=98=EC=A7=80=20=EC=95=8A=EA=B3=A0,=20=EC=BF=BC=EB=A6=AC?= =?UTF-8?q?=20=EC=A1=B0=EA=B1=B4=EC=97=90=EC=84=9C=20=EA=B1=B8=EB=9F=AC?= =?UTF-8?q?=EC=A7=80=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PopularFeedCustomRepository.java | 2 ++ .../PopularFeedCustomRepositoryImpl.java | 22 ++++++++++++++++++- .../repository/PopularFeedRepository.java | 1 - 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedCustomRepository.java b/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedCustomRepository.java index 646476b3..8ea3d2ec 100644 --- a/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedCustomRepository.java +++ b/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedCustomRepository.java @@ -6,4 +6,6 @@ public interface PopularFeedCustomRepository { List findTodayPopularFeeds(Long userId); + + List findTop9ByOrderByPopularFeedIdDesc(); } diff --git a/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedCustomRepositoryImpl.java b/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedCustomRepositoryImpl.java index 07857ea4..94f27532 100644 --- a/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedCustomRepositoryImpl.java +++ b/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedCustomRepositoryImpl.java @@ -1,12 +1,16 @@ package org.websoso.WSSServer.feed.repository; +import static org.websoso.WSSServer.feed.domain.QFeed.feed; import static org.websoso.WSSServer.feed.domain.QPopularFeed.popularFeed; import static org.websoso.WSSServer.user.domain.QBlock.block; +import static org.websoso.WSSServer.user.domain.QUser.user; import com.querydsl.jpa.impl.JPAQueryFactory; + import java.util.List; import java.util.stream.Stream; + import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import org.websoso.WSSServer.feed.domain.PopularFeed; @@ -37,7 +41,23 @@ public List findTodayPopularFeeds(Long userId) { return jpaQueryFactory .selectFrom(popularFeed) - .where(popularFeed.feed.user.userId.notIn(blockIds)) + .join(popularFeed.feed, feed) + .join(feed.user, user) + .where(user.userId.notIn(blockIds), + popularFeed.feed.isPublic.isTrue(), + popularFeed.feed.isHidden.isFalse()) + .orderBy(popularFeed.popularFeedId.desc()) + .limit(9) + .fetch(); + } + + @Override + public List findTop9ByOrderByPopularFeedIdDesc() { + return jpaQueryFactory + .selectFrom(popularFeed) + .join(popularFeed.feed, feed) + .where(feed.isPublic.isTrue(), + feed.isHidden.isFalse()) .orderBy(popularFeed.popularFeedId.desc()) .limit(9) .fetch(); diff --git a/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedRepository.java b/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedRepository.java index e2fd2e9c..b8caaebc 100644 --- a/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedRepository.java +++ b/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedRepository.java @@ -11,5 +11,4 @@ public interface PopularFeedRepository extends JpaRepository, Boolean existsByFeed(Feed feed); - List findTop9ByOrderByPopularFeedIdDesc(); } From 2ceac51b52b0c867c194c07a12d5b50d83384347 Mon Sep 17 00:00:00 2001 From: GiJungPark Date: Sat, 16 May 2026 16:54:18 +0900 Subject: [PATCH 2/5] =?UTF-8?q?[FEAT]=20=EC=86=8C=EC=84=A4=20ID=EB=A5=BC?= =?UTF-8?q?=20=EA=B8=B0=EC=A4=80=EC=9C=BC=EB=A1=9C=20=EC=9E=A5=EB=A5=B4?= =?UTF-8?q?=EA=B9=8C=EC=A7=80=20=EC=A1=B0=ED=9A=8C=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EC=BF=BC=EB=A6=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../novel/repository/NovelCustomRepository.java | 2 ++ .../repository/NovelCustomRepositoryImpl.java | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/websoso/WSSServer/novel/repository/NovelCustomRepository.java b/src/main/java/org/websoso/WSSServer/novel/repository/NovelCustomRepository.java index c69c58aa..a5a65963 100644 --- a/src/main/java/org/websoso/WSSServer/novel/repository/NovelCustomRepository.java +++ b/src/main/java/org/websoso/WSSServer/novel/repository/NovelCustomRepository.java @@ -14,4 +14,6 @@ public interface NovelCustomRepository { Page findFilteredNovels(Pageable pageable, List genres, Boolean isCompleted, Float novelRatingStart, Float novelRatingEnd, List keywords); List findAutocompleteNovels(String searchQuery, int limitSize); + + List findAllByNovelIdInWithGenres(List novelIds); } diff --git a/src/main/java/org/websoso/WSSServer/novel/repository/NovelCustomRepositoryImpl.java b/src/main/java/org/websoso/WSSServer/novel/repository/NovelCustomRepositoryImpl.java index 64de1814..a745d0b6 100644 --- a/src/main/java/org/websoso/WSSServer/novel/repository/NovelCustomRepositoryImpl.java +++ b/src/main/java/org/websoso/WSSServer/novel/repository/NovelCustomRepositoryImpl.java @@ -1,5 +1,6 @@ package org.websoso.WSSServer.novel.repository; +import static org.websoso.WSSServer.domain.QGenre.genre; import static org.websoso.WSSServer.domain.common.ReadStatus.WATCHED; import static org.websoso.WSSServer.domain.common.ReadStatus.WATCHING; import static org.websoso.WSSServer.library.domain.QUserNovel.userNovel; @@ -103,8 +104,6 @@ public Page findFilteredNovels(Pageable pageable, List genres, Boo @Override public List findAutocompleteNovels(String searchQuery, int limitSize) { - - return jpaQueryFactory .selectFrom(novel) .leftJoin(novel.userNovels, userNovel) @@ -115,6 +114,17 @@ public List findAutocompleteNovels(String searchQuery, int limitSize) { .fetch(); } + @Override + public List findAllByNovelIdInWithGenres(List novelIds) { + return jpaQueryFactory + .selectDistinct(novel) + .from(novel) + .leftJoin(novel.novelGenres, novelGenre).fetchJoin() + .leftJoin(novelGenre.genre, genre).fetchJoin() + .where(novel.novelId.in(novelIds)) + .fetch(); + } + private BooleanExpression titleContainsQuery(String searchQuery) { return getCleanedString(novel.title).containsIgnoreCase(searchQuery); } From a6fe378af053927a6e324ae4795e6d8b79753cdf Mon Sep 17 00:00:00 2001 From: GiJungPark Date: Sat, 16 May 2026 17:02:04 +0900 Subject: [PATCH 3/5] =?UTF-8?q?[FEAT]=20NovelIds=EB=A1=9C=20=EC=9E=A5?= =?UTF-8?q?=EB=A5=B4=EB=A5=BC=20=ED=8F=AC=ED=95=A8=ED=95=9C=20Novel=20?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=EB=A5=BC=20=EC=A1=B0=ED=9A=8C?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EC=84=9C=EB=B9=84=EC=8A=A4=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WSSServer/novel/service/NovelServiceImpl.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/websoso/WSSServer/novel/service/NovelServiceImpl.java b/src/main/java/org/websoso/WSSServer/novel/service/NovelServiceImpl.java index f5ef11ea..92cea1f7 100644 --- a/src/main/java/org/websoso/WSSServer/novel/service/NovelServiceImpl.java +++ b/src/main/java/org/websoso/WSSServer/novel/service/NovelServiceImpl.java @@ -2,8 +2,6 @@ import static org.websoso.WSSServer.exception.error.CustomNovelError.NOVEL_NOT_FOUND; -import java.util.ArrayList; -import java.util.Collections; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; @@ -11,7 +9,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.websoso.WSSServer.domain.Genre; -import org.websoso.WSSServer.novel.domain.PopularNovel; import org.websoso.WSSServer.dto.platform.PlatformGetResponse; import org.websoso.WSSServer.exception.exception.CustomNovelException; import org.websoso.WSSServer.library.domain.Keyword; @@ -20,7 +17,6 @@ import org.websoso.WSSServer.novel.repository.NovelGenreRepository; import org.websoso.WSSServer.novel.repository.NovelPlatformRepository; import org.websoso.WSSServer.novel.repository.NovelRepository; -import org.websoso.WSSServer.novel.repository.PopularNovelRepository; @Service @RequiredArgsConstructor @@ -37,6 +33,15 @@ public Novel getNovelOrException(Long novelId) { "novel with the given id is not found")); } + @Transactional(readOnly = true) + public List getNovelsWithGenresByIds(List novelIds) { + if (novelIds == null || novelIds.isEmpty()) { + return List.of(); + } + + return novelRepository.findAllByNovelIdInWithGenres(novelIds); + } + public Page searchNovels(PageRequest pageRequest, String searchQuery) { return novelRepository.findSearchedNovels(pageRequest, searchQuery); } From a605be9b8620efe5e749ebdc7318b09d0742a97b Mon Sep 17 00:00:00 2001 From: GiJungPark Date: Sat, 16 May 2026 17:06:40 +0900 Subject: [PATCH 4/5] =?UTF-8?q?[REFACTOR]=20=EC=A7=80=EA=B8=88=20=EB=9C=A8?= =?UTF-8?q?=EB=8A=94=20=EA=B8=80=20API=EC=97=90=20=EC=8D=B8=EB=84=A4?= =?UTF-8?q?=EC=9D=BC=20=EB=B0=8F=20=EA=B9=83=EB=B0=9C=20=EB=B0=98=ED=99=98?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/FeedFindApplication.java | 44 +++++++++++------ .../popularFeed/PopularFeedGetResponse.java | 10 ++-- .../feed/service/PopularFeedService.java | 47 ------------------- 3 files changed, 37 insertions(+), 64 deletions(-) delete mode 100644 src/main/java/org/websoso/WSSServer/feed/service/PopularFeedService.java diff --git a/src/main/java/org/websoso/WSSServer/application/FeedFindApplication.java b/src/main/java/org/websoso/WSSServer/application/FeedFindApplication.java index 47bcd3e1..9715d756 100644 --- a/src/main/java/org/websoso/WSSServer/application/FeedFindApplication.java +++ b/src/main/java/org/websoso/WSSServer/application/FeedFindApplication.java @@ -2,13 +2,9 @@ import static org.websoso.WSSServer.exception.error.CustomAvatarError.AVATAR_NOT_FOUND; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; + import lombok.RequiredArgsConstructor; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Slice; @@ -136,15 +132,21 @@ private FeedInfo createFeedInfo(Feed feed, User user) { @Transactional(readOnly = true) public PopularFeedsGetResponse getPopularFeeds(User user) { - Long currentUserId = Optional.ofNullable(user).map(User::getUserId).orElse(null); - List popularFeeds = Optional.ofNullable(user).map(u -> findPopularFeedsWithUser(u.getUserId())) .orElseGet(this::findPopularFeedsWithoutUser); - List popularFeedGetResponses = mapToPopularFeedGetResponseList(popularFeeds, - currentUserId); + List novelIds = popularFeeds.stream() + .map(f -> f.getFeed().getNovelId()) + .filter(Objects::nonNull) + .distinct() + .toList(); + + Map novelMap = novelServiceImpl.getNovelsWithGenresByIds(novelIds).stream() + .collect(Collectors.toMap(Novel::getNovelId, novel -> novel)); + + List popularFeedGetResponses = mapToPopularFeedGetResponseList(popularFeeds, novelMap); - return new PopularFeedsGetResponse(popularFeedGetResponses); + return PopularFeedsGetResponse.of(popularFeedGetResponses); } private List findPopularFeedsWithUser(Long userId) { @@ -156,9 +158,23 @@ private List findPopularFeedsWithoutUser() { } private static List mapToPopularFeedGetResponseList(List popularFeeds, - Long currentUserId) { - return popularFeeds.stream().filter(pf -> pf.getFeed().isVisibleTo(currentUserId)) - .map(PopularFeedGetResponse::of).toList(); + Map novelMap) { + return popularFeeds.stream() + .map(popularFeed -> { + Novel novel = novelMap.get(popularFeed.getFeed().getNovelId()); + String novelImage = Optional.ofNullable(novel).map(Novel::getNovelImage).orElse(null); + String novelGenreImage = Optional.ofNullable(novel) + .flatMap(FeedFindApplication::getFirstNovelGenreImage) + .orElse(null); + + return PopularFeedGetResponse.of(popularFeed, novelImage, novelGenreImage); + }).toList(); + } + + private static Optional getFirstNovelGenreImage(Novel novel) { + return novel.getNovelGenres().stream() + .findFirst() + .map(novelGenre -> novelGenre.getGenre().getGenreImage()); } @Transactional(readOnly = true) diff --git a/src/main/java/org/websoso/WSSServer/dto/popularFeed/PopularFeedGetResponse.java b/src/main/java/org/websoso/WSSServer/dto/popularFeed/PopularFeedGetResponse.java index 600f0864..e6ab00fb 100644 --- a/src/main/java/org/websoso/WSSServer/dto/popularFeed/PopularFeedGetResponse.java +++ b/src/main/java/org/websoso/WSSServer/dto/popularFeed/PopularFeedGetResponse.java @@ -8,17 +8,21 @@ public record PopularFeedGetResponse( Integer likeCount, Integer commentCount, Boolean isSpoiler, - Boolean isPublic + Boolean isPublic, + String novelImage, + String novelGenreImage ) { - public static PopularFeedGetResponse of(PopularFeed popularFeed) { + public static PopularFeedGetResponse of(PopularFeed popularFeed, String novelImage, String novelGenreImage) { return new PopularFeedGetResponse( popularFeed.getFeed().getFeedId(), popularFeed.getFeed().getFeedContent(), popularFeed.getFeed().getLikes().size(), popularFeed.getFeed().getComments().size(), popularFeed.getFeed().getIsSpoiler(), - popularFeed.getFeed().getIsPublic() + popularFeed.getFeed().getIsPublic(), + novelImage, + novelGenreImage ); } } diff --git a/src/main/java/org/websoso/WSSServer/feed/service/PopularFeedService.java b/src/main/java/org/websoso/WSSServer/feed/service/PopularFeedService.java deleted file mode 100644 index abf3a54e..00000000 --- a/src/main/java/org/websoso/WSSServer/feed/service/PopularFeedService.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.websoso.WSSServer.feed.service; - -import java.util.List; -import java.util.Optional; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.websoso.WSSServer.user.domain.User; -import org.websoso.WSSServer.dto.popularFeed.PopularFeedGetResponse; -import org.websoso.WSSServer.dto.popularFeed.PopularFeedsGetResponse; -import org.websoso.WSSServer.feed.domain.PopularFeed; -import org.websoso.WSSServer.feed.repository.PopularFeedRepository; - -@Service -@RequiredArgsConstructor -@Transactional -public class PopularFeedService { - - private final PopularFeedRepository popularFeedRepository; - - @Transactional(readOnly = true) - public PopularFeedsGetResponse getPopularFeeds(User user) { - Long currentUserId = Optional.ofNullable(user).map(User::getUserId).orElse(null); - - List popularFeeds = Optional.ofNullable(user).map(u -> findPopularFeedsWithUser(u.getUserId())) - .orElseGet(this::findPopularFeedsWithoutUser); - - List popularFeedGetResponses = mapToPopularFeedGetResponseList(popularFeeds, - currentUserId); - - return new PopularFeedsGetResponse(popularFeedGetResponses); - } - - private List findPopularFeedsWithUser(Long userId) { - return popularFeedRepository.findTodayPopularFeeds(userId); - } - - private List findPopularFeedsWithoutUser() { - return popularFeedRepository.findTop9ByOrderByPopularFeedIdDesc(); - } - - private static List mapToPopularFeedGetResponseList(List popularFeeds, - Long currentUserId) { - return popularFeeds.stream().filter(pf -> pf.getFeed().isVisibleTo(currentUserId)) - .map(PopularFeedGetResponse::of).toList(); - } -} From 4e2f29b596b2e6f5c94057b7061d1975c7787ca1 Mon Sep 17 00:00:00 2001 From: GiJungPark Date: Tue, 19 May 2026 10:56:16 +0900 Subject: [PATCH 5/5] =?UTF-8?q?[FEAT]=20=EC=9D=B8=EA=B8=B0=20=EC=9E=88?= =?UTF-8?q?=EB=8A=94=20=ED=94=BC=EB=93=9C=20=EC=A1=B0=ED=9A=8C=20=EA=B0=9C?= =?UTF-8?q?=EC=88=98=EC=9D=98=20=EC=B1=85=EC=9E=84=EC=9D=84=20=EC=99=B8?= =?UTF-8?q?=EB=B6=80=20API=20=ED=98=B8=EC=B6=9C=EC=9E=90=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/FeedFindApplication.java | 15 ++++++++------- .../WSSServer/feed/controller/FeedController.java | 5 +++-- .../repository/PopularFeedCustomRepository.java | 4 ++-- .../PopularFeedCustomRepositoryImpl.java | 8 ++++---- .../WSSServer/feed/service/FeedServiceImpl.java | 9 ++++----- 5 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/websoso/WSSServer/application/FeedFindApplication.java b/src/main/java/org/websoso/WSSServer/application/FeedFindApplication.java index 9715d756..a951e640 100644 --- a/src/main/java/org/websoso/WSSServer/application/FeedFindApplication.java +++ b/src/main/java/org/websoso/WSSServer/application/FeedFindApplication.java @@ -131,9 +131,10 @@ private FeedInfo createFeedInfo(Feed feed, User user) { } @Transactional(readOnly = true) - public PopularFeedsGetResponse getPopularFeeds(User user) { - List popularFeeds = Optional.ofNullable(user).map(u -> findPopularFeedsWithUser(u.getUserId())) - .orElseGet(this::findPopularFeedsWithoutUser); + public PopularFeedsGetResponse getPopularFeeds(User user, int size) { + List popularFeeds = Optional.ofNullable(user) + .map(u -> findPopularFeedsWithUser(u.getUserId(), size)) + .orElseGet(() -> findPopularFeedsWithoutUser(size)); List novelIds = popularFeeds.stream() .map(f -> f.getFeed().getNovelId()) @@ -149,12 +150,12 @@ public PopularFeedsGetResponse getPopularFeeds(User user) { return PopularFeedsGetResponse.of(popularFeedGetResponses); } - private List findPopularFeedsWithUser(Long userId) { - return feedServiceImpl.findPopularFeedsWithUser(userId); + private List findPopularFeedsWithUser(Long userId, int size) { + return feedServiceImpl.findPopularFeedsWithUser(userId, size); } - private List findPopularFeedsWithoutUser() { - return feedServiceImpl.findPopularFeedsWithoutUser(); + private List findPopularFeedsWithoutUser(int size) { + return feedServiceImpl.findPopularFeedsWithoutUser(size); } private static List mapToPopularFeedGetResponseList(List popularFeeds, diff --git a/src/main/java/org/websoso/WSSServer/feed/controller/FeedController.java b/src/main/java/org/websoso/WSSServer/feed/controller/FeedController.java index fcce0644..e724125f 100644 --- a/src/main/java/org/websoso/WSSServer/feed/controller/FeedController.java +++ b/src/main/java/org/websoso/WSSServer/feed/controller/FeedController.java @@ -112,10 +112,11 @@ public ResponseEntity unLikeFeed(@AuthenticationPrincipal User user, } @GetMapping("/popular") - public ResponseEntity getPopularFeeds(@AuthenticationPrincipal User user) { + public ResponseEntity getPopularFeeds(@AuthenticationPrincipal User user, + @RequestParam(name = "size", defaultValue = "9") int size) { return ResponseEntity .status(OK) - .body(feedFindApplication.getPopularFeeds(user)); + .body(feedFindApplication.getPopularFeeds(user, size)); } @GetMapping("/interest") diff --git a/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedCustomRepository.java b/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedCustomRepository.java index 8ea3d2ec..72aad00f 100644 --- a/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedCustomRepository.java +++ b/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedCustomRepository.java @@ -5,7 +5,7 @@ public interface PopularFeedCustomRepository { - List findTodayPopularFeeds(Long userId); + List findTodayPopularFeeds(Long userId, int size); - List findTop9ByOrderByPopularFeedIdDesc(); + List findOrderByPopularFeedIdDesc(int size); } diff --git a/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedCustomRepositoryImpl.java b/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedCustomRepositoryImpl.java index 94f27532..a4f1388f 100644 --- a/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedCustomRepositoryImpl.java +++ b/src/main/java/org/websoso/WSSServer/feed/repository/PopularFeedCustomRepositoryImpl.java @@ -22,7 +22,7 @@ public class PopularFeedCustomRepositoryImpl implements PopularFeedCustomReposit private final JPAQueryFactory jpaQueryFactory; @Override - public List findTodayPopularFeeds(Long userId) { + public List findTodayPopularFeeds(Long userId, int size) { List blockingIds = jpaQueryFactory .select(block.blockedId) .from(block) @@ -47,19 +47,19 @@ public List findTodayPopularFeeds(Long userId) { popularFeed.feed.isPublic.isTrue(), popularFeed.feed.isHidden.isFalse()) .orderBy(popularFeed.popularFeedId.desc()) - .limit(9) + .limit(size) .fetch(); } @Override - public List findTop9ByOrderByPopularFeedIdDesc() { + public List findOrderByPopularFeedIdDesc(int size) { return jpaQueryFactory .selectFrom(popularFeed) .join(popularFeed.feed, feed) .where(feed.isPublic.isTrue(), feed.isHidden.isFalse()) .orderBy(popularFeed.popularFeedId.desc()) - .limit(9) + .limit(size) .fetch(); } } diff --git a/src/main/java/org/websoso/WSSServer/feed/service/FeedServiceImpl.java b/src/main/java/org/websoso/WSSServer/feed/service/FeedServiceImpl.java index 5d95b42d..56db0be1 100644 --- a/src/main/java/org/websoso/WSSServer/feed/service/FeedServiceImpl.java +++ b/src/main/java/org/websoso/WSSServer/feed/service/FeedServiceImpl.java @@ -6,7 +6,6 @@ import java.util.Comparator; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; import java.util.stream.Stream; import lombok.RequiredArgsConstructor; @@ -90,13 +89,13 @@ public Optional findThumbnailFeedImageByFeedId(Long feedId) { } @Transactional(readOnly = true) - public List findPopularFeedsWithUser(Long userId) { - return popularFeedRepository.findTodayPopularFeeds(userId); + public List findPopularFeedsWithUser(Long userId, int size) { + return popularFeedRepository.findTodayPopularFeeds(userId, size); } @Transactional(readOnly = true) - public List findPopularFeedsWithoutUser() { - return popularFeedRepository.findTop9ByOrderByPopularFeedIdDesc(); + public List findPopularFeedsWithoutUser(int size) { + return popularFeedRepository.findOrderByPopularFeedIdDesc(size); } @Transactional(readOnly = true)