diff --git a/src/main/java/com/coolpeace/domain/coupon/controller/CouponSearchController.java b/src/main/java/com/coolpeace/domain/coupon/controller/CouponSearchController.java index 6de5d5ad..317d6eb9 100644 --- a/src/main/java/com/coolpeace/domain/coupon/controller/CouponSearchController.java +++ b/src/main/java/com/coolpeace/domain/coupon/controller/CouponSearchController.java @@ -31,7 +31,8 @@ public ResponseEntity searchCoupons( ) { Page couponResponses = couponService.searchCoupons( Long.valueOf(jwtPrincipal.getMemberId()), accommodationId, searchCouponParams, pageable); - CouponCategoryResponse categoryResponse = couponService.getCouponCategories(); + CouponCategoryResponse categoryResponse = couponService.getCouponCategories( + Long.valueOf(jwtPrincipal.getMemberId()), accommodationId); return ResponseEntity.ok(CouponSearchResponse.from(couponResponses, categoryResponse)); } } diff --git a/src/main/java/com/coolpeace/domain/coupon/repository/CouponRepositoryCustom.java b/src/main/java/com/coolpeace/domain/coupon/repository/CouponRepositoryCustom.java index 7c3f6631..f075679f 100644 --- a/src/main/java/com/coolpeace/domain/coupon/repository/CouponRepositoryCustom.java +++ b/src/main/java/com/coolpeace/domain/coupon/repository/CouponRepositoryCustom.java @@ -17,7 +17,7 @@ public interface CouponRepositoryCustom { Page findAllCoupons(Long memberId, Long accommodationId, SearchCouponParams params, PageRequest pageable); - Map countCouponsByCouponStatus(); + Map countCouponsByCouponStatus(Long memberId, Long accommodationId); List findRecentCouponByMemberId(Long memberId); diff --git a/src/main/java/com/coolpeace/domain/coupon/repository/CouponRepositoryImpl.java b/src/main/java/com/coolpeace/domain/coupon/repository/CouponRepositoryImpl.java index ca59c777..8a1d5c7c 100644 --- a/src/main/java/com/coolpeace/domain/coupon/repository/CouponRepositoryImpl.java +++ b/src/main/java/com/coolpeace/domain/coupon/repository/CouponRepositoryImpl.java @@ -26,8 +26,7 @@ import static com.coolpeace.domain.coupon.entity.QCoupon.coupon; import static com.coolpeace.domain.coupon.entity.QCouponRooms.couponRooms; -import static com.coolpeace.domain.coupon.entity.type.CouponStatusType.EXPOSURE_OFF; -import static com.coolpeace.domain.coupon.entity.type.CouponStatusType.EXPOSURE_ON; +import static com.coolpeace.domain.coupon.entity.type.CouponStatusType.*; import static com.coolpeace.domain.room.entity.QRoom.room; public class CouponRepositoryImpl extends QuerydslRepositorySupport implements CouponRepositoryCustom { @@ -49,13 +48,13 @@ public Page findAllCoupons(Long memberId, Long accommodationId, SearchCo searchCouponPredicate.and(switch (ValuedEnum.of(SearchCouponStatusFilterType.class, params.status())) { case EXPOSURE_ON -> coupon.couponStatus.eq(EXPOSURE_ON); case EXPOSURE_OFF -> coupon.couponStatus.eq(EXPOSURE_OFF) - .or(coupon.couponStatus.eq(CouponStatusType.EXPOSURE_WAIT)); - case EXPIRED -> coupon.couponStatus.eq(CouponStatusType.EXPOSURE_END) - .or(coupon.couponStatus.eq(CouponStatusType.DELETED)); - case All -> coupon.couponStatus.ne(CouponStatusType.DELETED); + .or(coupon.couponStatus.eq(EXPOSURE_WAIT)); + case EXPIRED -> coupon.couponStatus.eq(EXPOSURE_END) + .or(coupon.couponStatus.eq(DELETED)); + case All -> coupon.couponStatus.ne(DELETED); }); } else { - searchCouponPredicate.and(coupon.couponStatus.ne(CouponStatusType.DELETED)); + searchCouponPredicate.and(coupon.couponStatus.ne(DELETED)); } // 쿠폰 이름 @@ -70,6 +69,8 @@ public Page findAllCoupons(Long memberId, Long accommodationId, SearchCo case SIX_MONTHS -> coupon.createdAt.after(LocalDateTime.now().minusMonths(6)); case YEAR -> coupon.createdAt.after(LocalDateTime.now().minusYears(1)); }); + } else { + searchCouponPredicate.and(coupon.createdAt.after(LocalDateTime.now().minusYears(1))); } JPAQuery couponJPAQuery = jpaQueryFactory.selectFrom(coupon) @@ -87,9 +88,12 @@ public Page findAllCoupons(Long memberId, Long accommodationId, SearchCo } @Override - public Map countCouponsByCouponStatus() { + public Map countCouponsByCouponStatus(Long memberId, Long accommodationId) { + List results = jpaQueryFactory .select(coupon.couponStatus, coupon.count()) + .where(coupon.member.id.eq(memberId) + .and(coupon.accommodation.id.eq(accommodationId))) .from(coupon) .groupBy(coupon.couponStatus) .fetch(); @@ -107,7 +111,7 @@ public List findRecentCouponByMemberId(Long memberId) { .leftJoin(coupon.couponRooms, couponRooms).fetchJoin() .leftJoin(couponRooms.room, room).fetchJoin() .where(coupon.member.id.eq(memberId), - coupon.couponStatus.eq(CouponStatusType.EXPOSURE_END)) + coupon.couponStatus.eq(EXPOSURE_END)) .orderBy(coupon.createdAt.desc()) .limit(6) .fetch(); @@ -138,7 +142,7 @@ public Boolean noRegister(Long memberId, Long accommodationId) { return jpaQueryFactory.selectFrom(coupon) .where(coupon.member.id.eq(memberId) .and(coupon.accommodation.id.eq(accommodationId)) - .and(coupon.couponStatus.ne(CouponStatusType.DELETED))) + .and(coupon.couponStatus.ne(DELETED))) .fetch().isEmpty(); } @@ -158,7 +162,7 @@ public List expiration3days(Long memberId, Long accommodationId) { return jpaQueryFactory.selectFrom(coupon) .where(coupon.member.id.eq(memberId) .and(coupon.accommodation.id.eq(accommodationId)) - .and(coupon.couponStatus.ne(CouponStatusType.DELETED)) + .and(coupon.couponStatus.ne(DELETED)) .and(coupon.exposureEndDate.before(LocalDate.now().plusDays(3)))) .fetch(); } diff --git a/src/main/java/com/coolpeace/domain/coupon/service/CouponService.java b/src/main/java/com/coolpeace/domain/coupon/service/CouponService.java index 0154abc2..2c89c1bc 100644 --- a/src/main/java/com/coolpeace/domain/coupon/service/CouponService.java +++ b/src/main/java/com/coolpeace/domain/coupon/service/CouponService.java @@ -57,8 +57,8 @@ public Page searchCoupons(Long memberId, Long accommodationId, S } @Transactional(readOnly = true) - public CouponCategoryResponse getCouponCategories() { - Map counts = couponRepository.countCouponsByCouponStatus(); + public CouponCategoryResponse getCouponCategories(Long memberId, Long accommodationId) { + Map counts = couponRepository.countCouponsByCouponStatus(memberId, accommodationId); long all = counts.values().stream().mapToLong(Long::longValue).sum(); long exposureOn = counts.getOrDefault(CouponStatusType.EXPOSURE_ON, 0L);