From 82013a1a146036718ff24eb5102a2a2f0f201a07 Mon Sep 17 00:00:00 2001 From: JSoi Date: Sat, 30 Jul 2022 15:54:22 +0900 Subject: [PATCH] =?UTF-8?q?#23=20[Update]=20=EC=97=85=EC=9E=A5=20=ED=95=84?= =?UTF-8?q?=ED=84=B0=EB=A7=81=20null=20case=20=EC=B6=94=EA=B0=80=5F2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/repository/StoreQueryRepository.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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 25a1622..243b25a 100644 --- a/src/main/java/com/mpnp/baechelin/store/repository/StoreQueryRepository.java +++ b/src/main/java/com/mpnp/baechelin/store/repository/StoreQueryRepository.java @@ -80,7 +80,6 @@ private OrderSpecifier orderDistance(BigDecimal nowLat, BigDecimal nowLng) { return QStore.store.latitude.subtract(nowLat).abs().add(QStore.store.longitude.subtract(nowLng)).abs().asc(); } - //TODO 별점순 - 쿼리 결과로 산출된 리스트의 평균 구하기, 정렬, 페이징 public Page findStoreOrderByPoint(BigDecimal lat, BigDecimal lng, String category, @@ -88,6 +87,7 @@ public Page findStoreOrderByPoint(BigDecimal lat, Pageable pageable) { BooleanBuilder builder = locTwoPointAndConditions(lat, lng, category, facility); + if (lat == null || lng == null) return findStoreOrderByPointNullCase(builder, pageable); List storeList = queryFactory .selectFrom(store) .where(builder) @@ -100,6 +100,19 @@ public Page findStoreOrderByPoint(BigDecimal lat, return new PageImpl<>(storeList, pageable, fetchCount); } + private Page findStoreOrderByPointNullCase(BooleanBuilder builder, + Pageable pageable) { + List storeList = queryFactory + .selectFrom(store) + .where(builder) + .orderBy(store.pointAvg.desc()) + .limit(pageable.getPageSize()) + .offset(pageable.getOffset()) + .fetch(); + int fetchCount = queryFactory.selectFrom(store).where(builder).fetch().size(); + return new PageImpl<>(storeList, pageable, fetchCount); + } + //TODO 북마크순 public Page findStoreOrderByBookmark(BigDecimal lat, BigDecimal lng,