마케팅 매체 파트너 코드 조회

- 전체 개수 추가
This commit is contained in:
Klaus 2025-03-05 16:10:11 +09:00
parent 2ce13afc0a
commit d454acdcbe
3 changed files with 28 additions and 8 deletions

View File

@ -50,8 +50,9 @@ class AdminAdMediaPartnerService(private val repository: AdMediaPartnerRepositor
} }
} }
fun getMediaPartnerList(offset: Long, limit: Long): List<GetAdminAdMediaPartnerResponse> { fun getMediaPartnerList(offset: Long, limit: Long): GetAdminAdMediaPartnerResponse {
return repository.getMediaPartnerList(offset, limit) val totalCount = repository.getMediaPartnerListTotalCount()
val items = repository.getMediaPartnerList(offset, limit)
.map { .map {
val deepLinkValue = when (it.type) { val deepLinkValue = when (it.type) {
AdMediaPartnerType.SERIES -> "series" AdMediaPartnerType.SERIES -> "series"
@ -77,6 +78,11 @@ class AdminAdMediaPartnerService(private val repository: AdMediaPartnerRepositor
it.link = link it.link = link
it it
} }
return GetAdminAdMediaPartnerResponse(
totalCount = totalCount,
items = items
)
} }
companion object { companion object {

View File

@ -3,7 +3,12 @@ package kr.co.vividnext.sodalive.admin.marketing
import com.querydsl.core.annotations.QueryProjection import com.querydsl.core.annotations.QueryProjection
import kr.co.vividnext.sodalive.marketing.AdMediaPartnerType import kr.co.vividnext.sodalive.marketing.AdMediaPartnerType
data class GetAdminAdMediaPartnerResponse @QueryProjection constructor( data class GetAdminAdMediaPartnerResponse(
val totalCount: Int,
val items: List<GetAdminAdMediaPartnerResponseItem>
)
data class GetAdminAdMediaPartnerResponseItem @QueryProjection constructor(
val id: Long, val id: Long,
val mediaGroup: String, val mediaGroup: String,
val pid: String, val pid: String,

View File

@ -4,8 +4,8 @@ import com.querydsl.core.types.dsl.DateTimePath
import com.querydsl.core.types.dsl.Expressions import com.querydsl.core.types.dsl.Expressions
import com.querydsl.core.types.dsl.StringTemplate import com.querydsl.core.types.dsl.StringTemplate
import com.querydsl.jpa.impl.JPAQueryFactory import com.querydsl.jpa.impl.JPAQueryFactory
import kr.co.vividnext.sodalive.admin.marketing.GetAdminAdMediaPartnerResponse import kr.co.vividnext.sodalive.admin.marketing.GetAdminAdMediaPartnerResponseItem
import kr.co.vividnext.sodalive.admin.marketing.QGetAdminAdMediaPartnerResponse import kr.co.vividnext.sodalive.admin.marketing.QGetAdminAdMediaPartnerResponseItem
import kr.co.vividnext.sodalive.marketing.QAdMediaPartner.adMediaPartner import kr.co.vividnext.sodalive.marketing.QAdMediaPartner.adMediaPartner
import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.stereotype.Repository import org.springframework.stereotype.Repository
@ -15,7 +15,8 @@ interface AdMediaPartnerRepository : JpaRepository<AdMediaPartner, Long>, AdMedi
interface AdMediaPartnerQueryRepository { interface AdMediaPartnerQueryRepository {
fun findByPid(pid: String): AdMediaPartner? fun findByPid(pid: String): AdMediaPartner?
fun getMediaPartnerList(offset: Long, limit: Long): List<GetAdminAdMediaPartnerResponse> fun getMediaPartnerList(offset: Long, limit: Long): List<GetAdminAdMediaPartnerResponseItem>
fun getMediaPartnerListTotalCount(): Int
} }
@Repository @Repository
@ -27,10 +28,10 @@ class AdMediaPartnerQueryRepositoryImpl(private val queryFactory: JPAQueryFactor
.fetchFirst() .fetchFirst()
} }
override fun getMediaPartnerList(offset: Long, limit: Long): List<GetAdminAdMediaPartnerResponse> { override fun getMediaPartnerList(offset: Long, limit: Long): List<GetAdminAdMediaPartnerResponseItem> {
return queryFactory return queryFactory
.select( .select(
QGetAdminAdMediaPartnerResponse( QGetAdminAdMediaPartnerResponseItem(
adMediaPartner.id, adMediaPartner.id,
adMediaPartner.mediaGroup, adMediaPartner.mediaGroup,
adMediaPartner.pid, adMediaPartner.pid,
@ -50,6 +51,14 @@ class AdMediaPartnerQueryRepositoryImpl(private val queryFactory: JPAQueryFactor
.fetch() .fetch()
} }
override fun getMediaPartnerListTotalCount(): Int {
return queryFactory
.select(adMediaPartner.id)
.from(adMediaPartner)
.fetch()
.size
}
private fun getFormattedDate(dateTimePath: DateTimePath<LocalDateTime>): StringTemplate { private fun getFormattedDate(dateTimePath: DateTimePath<LocalDateTime>): StringTemplate {
return Expressions.stringTemplate( return Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})", "DATE_FORMAT({0}, {1})",