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 49a8b1e..e84b387 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 @@ -8,11 +8,20 @@ import org.springframework.data.jpa.repository.JpaRepository interface CanCouponRepository : JpaRepository, CanCouponQueryRepository interface CanCouponQueryRepository { + fun getCouponTotalCount(): Int fun getCouponList(offset: Long, limit: Long): List fun getCouponNumberList(couponId: Long, offset: Long, limit: Long): List } class CanCouponQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : CanCouponQueryRepository { + override fun getCouponTotalCount(): Int { + return queryFactory + .select(canCoupon.id) + .from(canCoupon) + .fetch() + .size + } + override fun getCouponList(offset: Long, limit: Long): List { return queryFactory .selectFrom(canCoupon) 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 679b5a7..20cb12f 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 @@ -20,12 +20,14 @@ class CanCouponService( applicationEventPublisher.publishEvent(SqsEvent(type = SqsEventType.GENERATE_COUPON, message = message)) } - fun getCouponList(offset: Long, limit: Long): List { - return repository.getCouponList(offset = offset, limit = limit) + fun getCouponList(offset: Long, limit: Long): GetCouponListResponse { + val totalCount = repository.getCouponTotalCount() + + val items = repository.getCouponList(offset = offset, limit = limit) .asSequence() .map { val useCouponCount = couponNumberRepository.getUseCouponCount(id = it.id!!) - GetCouponListResponse( + GetCouponListItemResponse( id = it.id!!, couponName = it.couponName, can = "${it.can}μΊ”", @@ -37,6 +39,8 @@ class CanCouponService( ) } .toList() + + return GetCouponListResponse(totalCount, items) } fun getCouponNumberList(couponId: Long, offset: Long, limit: Long): List { diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/GetCouponListResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/GetCouponListResponse.kt index 3bec552..72b5aaa 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/GetCouponListResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/coupon/GetCouponListResponse.kt @@ -1,6 +1,11 @@ package kr.co.vividnext.sodalive.can.coupon data class GetCouponListResponse( + val totalCount: Int, + val items: List +) + +data class GetCouponListItemResponse( val id: Long, val couponName: String, val can: String,