From d454acdcbebd82b3aaeeb038c07bd6b030fd8fb6 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 5 Mar 2025 16:10:11 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A7=88=EC=BC=80=ED=8C=85=20=EB=A7=A4?= =?UTF-8?q?=EC=B2=B4=20=ED=8C=8C=ED=8A=B8=EB=84=88=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20-=20=EC=A0=84=EC=B2=B4=20=EA=B0=9C?= =?UTF-8?q?=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../marketing/AdminAdMediaPartnerService.kt | 10 ++++++++-- .../GetAdminAdMediaPartnerResponse.kt | 7 ++++++- .../marketing/AdMediaPartnerRepository.kt | 19 ++++++++++++++----- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/AdminAdMediaPartnerService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/AdminAdMediaPartnerService.kt index 9dc6f7c..0d25be8 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/AdminAdMediaPartnerService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/AdminAdMediaPartnerService.kt @@ -50,8 +50,9 @@ class AdminAdMediaPartnerService(private val repository: AdMediaPartnerRepositor } } - fun getMediaPartnerList(offset: Long, limit: Long): List { - return repository.getMediaPartnerList(offset, limit) + fun getMediaPartnerList(offset: Long, limit: Long): GetAdminAdMediaPartnerResponse { + val totalCount = repository.getMediaPartnerListTotalCount() + val items = repository.getMediaPartnerList(offset, limit) .map { val deepLinkValue = when (it.type) { AdMediaPartnerType.SERIES -> "series" @@ -77,6 +78,11 @@ class AdminAdMediaPartnerService(private val repository: AdMediaPartnerRepositor it.link = link it } + + return GetAdminAdMediaPartnerResponse( + totalCount = totalCount, + items = items + ) } companion object { diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/GetAdminAdMediaPartnerResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/GetAdminAdMediaPartnerResponse.kt index 14e0b6d..5b0bd18 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/GetAdminAdMediaPartnerResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/GetAdminAdMediaPartnerResponse.kt @@ -3,7 +3,12 @@ package kr.co.vividnext.sodalive.admin.marketing import com.querydsl.core.annotations.QueryProjection import kr.co.vividnext.sodalive.marketing.AdMediaPartnerType -data class GetAdminAdMediaPartnerResponse @QueryProjection constructor( +data class GetAdminAdMediaPartnerResponse( + val totalCount: Int, + val items: List +) + +data class GetAdminAdMediaPartnerResponseItem @QueryProjection constructor( val id: Long, val mediaGroup: String, val pid: String, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/marketing/AdMediaPartnerRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/marketing/AdMediaPartnerRepository.kt index 1970387..2886fbc 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/marketing/AdMediaPartnerRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/marketing/AdMediaPartnerRepository.kt @@ -4,8 +4,8 @@ import com.querydsl.core.types.dsl.DateTimePath import com.querydsl.core.types.dsl.Expressions import com.querydsl.core.types.dsl.StringTemplate import com.querydsl.jpa.impl.JPAQueryFactory -import kr.co.vividnext.sodalive.admin.marketing.GetAdminAdMediaPartnerResponse -import kr.co.vividnext.sodalive.admin.marketing.QGetAdminAdMediaPartnerResponse +import kr.co.vividnext.sodalive.admin.marketing.GetAdminAdMediaPartnerResponseItem +import kr.co.vividnext.sodalive.admin.marketing.QGetAdminAdMediaPartnerResponseItem import kr.co.vividnext.sodalive.marketing.QAdMediaPartner.adMediaPartner import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository @@ -15,7 +15,8 @@ interface AdMediaPartnerRepository : JpaRepository, AdMedi interface AdMediaPartnerQueryRepository { fun findByPid(pid: String): AdMediaPartner? - fun getMediaPartnerList(offset: Long, limit: Long): List + fun getMediaPartnerList(offset: Long, limit: Long): List + fun getMediaPartnerListTotalCount(): Int } @Repository @@ -27,10 +28,10 @@ class AdMediaPartnerQueryRepositoryImpl(private val queryFactory: JPAQueryFactor .fetchFirst() } - override fun getMediaPartnerList(offset: Long, limit: Long): List { + override fun getMediaPartnerList(offset: Long, limit: Long): List { return queryFactory .select( - QGetAdminAdMediaPartnerResponse( + QGetAdminAdMediaPartnerResponseItem( adMediaPartner.id, adMediaPartner.mediaGroup, adMediaPartner.pid, @@ -50,6 +51,14 @@ class AdMediaPartnerQueryRepositoryImpl(private val queryFactory: JPAQueryFactor .fetch() } + override fun getMediaPartnerListTotalCount(): Int { + return queryFactory + .select(adMediaPartner.id) + .from(adMediaPartner) + .fetch() + .size + } + private fun getFormattedDate(dateTimePath: DateTimePath): StringTemplate { return Expressions.stringTemplate( "DATE_FORMAT({0}, {1})",