diff --git a/src/main/java/com/ftm/server/application/service/post/LoadProductsByHashTagService.java b/src/main/java/com/ftm/server/application/service/post/LoadProductsByHashTagService.java index bfeda55..71d89da 100644 --- a/src/main/java/com/ftm/server/application/service/post/LoadProductsByHashTagService.java +++ b/src/main/java/com/ftm/server/application/service/post/LoadProductsByHashTagService.java @@ -44,7 +44,7 @@ public LoadProductsByHashTagVoWrapper execute( productIdAndScoreList.stream().filter(a -> a.getScore() < score).toList(); } - if (productIdAndScoreList.size() == 0) { + if (productIdAndScoreList.isEmpty()) { return LoadProductsByHashTagVoWrapper.of(List.of(), false, 0.0); } @@ -58,6 +58,10 @@ public LoadProductsByHashTagVoWrapper execute( new FindByProductHashTagsQuery(hashtagList)); } + if (postProducts.isEmpty()) { + return LoadProductsByHashTagVoWrapper.of(List.of(), false, 0.0); + } + Map postProductMap = postProducts.stream() .collect( @@ -70,6 +74,8 @@ public LoadProductsByHashTagVoWrapper execute( int beforeSize = productIdAndScoreList.size(); Set tempProductIds = postProducts.stream().map(PostProduct::getId).collect(Collectors.toSet()); + + // 캐시에 존재하는 상품 중(인기순으로 정렬되어 있음), 해시태그와 관련 있는 상품만 조회 + limit 만큼 자르기 List productIdAndScoreVoList = productIdAndScoreList.stream() .filter(vo -> tempProductIds.contains(vo.getProductId())) // DB에 존재하는 상품만 @@ -96,7 +102,8 @@ public LoadProductsByHashTagVoWrapper execute( loadProductAndUserLikeVos.stream() .collect( Collectors.toMap( - LoadProductAndUserLikeVo::getProductId, // key: productId + LoadProductAndUserLikeVo::getProductId, // key: + // productId Function.identity() // value: 해당 PostProduct 객체 자체 ));