From d20f51ceacba8735e093ef2408e9ed4af33d061b Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 2 Jan 2024 03:13:04 +0900 Subject: [PATCH] =?UTF-8?q?=EC=BF=A0=ED=8F=B0=20=EB=B2=88=ED=98=B8=20?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=20API=20=EC=88=98=EC=A0=95=20-=20to?= =?UTF-8?q?talCount=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../can/coupon/CanCouponRepository.kt | 19 ++++++++++++++++--- .../sodalive/can/coupon/CanCouponService.kt | 6 ++++-- .../can/coupon/GetCouponNumberListResponse.kt | 7 ++++++- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponRepository.kt index e84b387..2c28256 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponRepository.kt @@ -10,7 +10,8 @@ interface CanCouponRepository : JpaRepository, CanCouponQueryRe interface CanCouponQueryRepository { fun getCouponTotalCount(): Int fun getCouponList(offset: Long, limit: Long): List - fun getCouponNumberList(couponId: Long, offset: Long, limit: Long): List + fun getCouponNumberTotalCount(couponId: Long): Int + fun getCouponNumberList(couponId: Long, offset: Long, limit: Long): List } class CanCouponQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : CanCouponQueryRepository { @@ -31,10 +32,19 @@ class CanCouponQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : .fetch() } - override fun getCouponNumberList(couponId: Long, offset: Long, limit: Long): List { + override fun getCouponNumberTotalCount(couponId: Long): Int { + return queryFactory + .select(canCouponNumber.id) + .from(canCouponNumber) + .where(canCouponNumber.canCoupon.id.eq(couponId)) + .fetch() + .size + } + + override fun getCouponNumberList(couponId: Long, offset: Long, limit: Long): List { return queryFactory .select( - QGetCouponNumberListResponse( + QGetCouponNumberListItemResponse( canCouponNumber.id, canCouponNumber.couponNumber, canCouponNumber.member.isNotNull @@ -42,6 +52,9 @@ class CanCouponQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : ) .from(canCouponNumber) .where(canCouponNumber.canCoupon.id.eq(couponId)) + .orderBy(canCouponNumber.id.asc()) + .offset(offset) + .limit(limit) .fetch() } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponService.kt index 8172521..5e219b7 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/CanCouponService.kt @@ -43,7 +43,9 @@ class CanCouponService( return GetCouponListResponse(totalCount, items) } - fun getCouponNumberList(couponId: Long, offset: Long, limit: Long): List { - return repository.getCouponNumberList(couponId = couponId, offset = offset, limit = limit) + fun getCouponNumberList(couponId: Long, offset: Long, limit: Long): GetCouponNumberListResponse { + val totalCount = repository.getCouponNumberTotalCount(couponId = couponId) + val items = repository.getCouponNumberList(couponId = couponId, offset = offset, limit = limit) + return GetCouponNumberListResponse(totalCount, items) } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/GetCouponNumberListResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/GetCouponNumberListResponse.kt index a67d697..a79c083 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/GetCouponNumberListResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/GetCouponNumberListResponse.kt @@ -2,7 +2,12 @@ package kr.co.vividnext.sodalive.can.coupon import com.querydsl.core.annotations.QueryProjection -data class GetCouponNumberListResponse @QueryProjection constructor( +data class GetCouponNumberListResponse( + val totalCount: Int, + val items: List +) + +data class GetCouponNumberListItemResponse @QueryProjection constructor( val couponNumberId: Long, val couponNumber: String, val isUsed: Boolean