diff --git a/src/main/java/com/mpnp/baechelin/store/controller/StoreController.java b/src/main/java/com/mpnp/baechelin/store/controller/StoreController.java index 98e0a8a..6908ad1 100644 --- a/src/main/java/com/mpnp/baechelin/store/controller/StoreController.java +++ b/src/main/java/com/mpnp/baechelin/store/controller/StoreController.java @@ -54,13 +54,13 @@ public StorePagedResponseDto getStoreInRangeHighPoint(@RequestParam(required = f } @GetMapping("/bookmark") - public List getStoreInRangeHighBookmark(@RequestParam(required = false) BigDecimal lat, + public StorePagedResponseDto getStoreInRangeHighBookmark(@RequestParam(required = false) BigDecimal lat, @RequestParam(required = false) BigDecimal lng, @RequestParam(required = false) String category, @RequestParam(required = false) List facility, - @RequestParam int limit, + @PageableDefault Pageable pageable, @AuthenticationPrincipal User user) { - return storeService.getStoreInRangeHighBookmark(lat, lng, category, facility, limit, user == null ? null : user.getUsername()); + return storeService.getStoreInRangeHighBookmark(lat, lng, category, facility, pageable, user == null ? null : user.getUsername()); } @ApiOperation(value = "업장 상세정보를 조회하는 메소드") diff --git a/src/main/java/com/mpnp/baechelin/store/repository/StoreQueryRepository.java b/src/main/java/com/mpnp/baechelin/store/repository/StoreQueryRepository.java index baf55c0..a83ea88 100644 --- a/src/main/java/com/mpnp/baechelin/store/repository/StoreQueryRepository.java +++ b/src/main/java/com/mpnp/baechelin/store/repository/StoreQueryRepository.java @@ -90,19 +90,22 @@ public Page findStoreOrderByPoint(BigDecimal lat, } //TODO 북마크순 - public List findStoreOrderByBookmark(BigDecimal lat, + public Page findStoreOrderByBookmark(BigDecimal lat, BigDecimal lng, String category, List facility, - int limit) { + Pageable pageable) { BooleanBuilder builder = locTwoPointAndConditions(lat, lng, category, facility); - return queryFactory.selectFrom(store) + List storeList = queryFactory.selectFrom(store) .where(builder) .orderBy(store.bookMarkCount.desc()) - .limit(limit) + .limit(pageable.getPageSize()) + .offset(pageable.getOffset()) .fetch(); + int fetchCount = queryFactory.selectFrom(store).where(builder).fetch().size(); + return new PageImpl<>(storeList, pageable, fetchCount); } } diff --git a/src/main/java/com/mpnp/baechelin/store/service/StoreService.java b/src/main/java/com/mpnp/baechelin/store/service/StoreService.java index 86e7909..493098c 100644 --- a/src/main/java/com/mpnp/baechelin/store/service/StoreService.java +++ b/src/main/java/com/mpnp/baechelin/store/service/StoreService.java @@ -91,8 +91,8 @@ public StorePagedResponseDto getStoreInRangeMap(BigDecimal lat, BigDecimal lng, public StorePagedResponseDto getStoreInRangeHighPoint(BigDecimal lat, BigDecimal lng, String category, List facility, Pageable pageable, String socialId) { User targetUser = socialId == null ? null : userRepository.findBySocialId(socialId); - Page resultList = storeQueryRepository.findStoreOrderByPoint(lat, lng, category, facility, pageable); - return getStoreCardPagedResponseDto(targetUser, resultList); + Page pagedResultList = storeQueryRepository.findStoreOrderByPoint(lat, lng, category, facility, pageable); + return getStoreCardPagedResponseDto(targetUser, pagedResultList); } /** @@ -100,15 +100,14 @@ public StorePagedResponseDto getStoreInRangeHighPoint(BigDecimal lat, BigDecimal * @param lng 경도 * @param category 업장 카테고리 * @param facility 배리어 프리 태그 - * @param limit 표시할 업장의 개수 * @param socialId 유저 소셜 아이디 * @return 위도, 경도, 카테고리, 배리어 프리 태그에 해당하는 북마크가 높은 업장 리스트를 설정한 숫자만큼 리턴 */ - public List getStoreInRangeHighBookmark(BigDecimal lat, BigDecimal lng, String - category, List facility, int limit, String socialId) { + public StorePagedResponseDto getStoreInRangeHighBookmark(BigDecimal lat, BigDecimal lng, String + category, List facility, Pageable pageable, String socialId) { User targetUser = socialId == null ? null : userRepository.findBySocialId(socialId); - List highBookmarkResultList = storeQueryRepository.findStoreOrderByBookmark(lat, lng, category, facility, limit); - return getStoreCardResponseDtos(targetUser, highBookmarkResultList); + Page highBookmarkResultList = storeQueryRepository.findStoreOrderByBookmark(lat, lng, category, facility, pageable); + return getStoreCardPagedResponseDto(targetUser, highBookmarkResultList); } /**