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

- 전체 개수 추가
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> {
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 {

View File

@ -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<GetAdminAdMediaPartnerResponseItem>
)
data class GetAdminAdMediaPartnerResponseItem @QueryProjection constructor(
val id: Long,
val mediaGroup: 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.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<AdMediaPartner, Long>, AdMedi
interface AdMediaPartnerQueryRepository {
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
@ -27,10 +28,10 @@ class AdMediaPartnerQueryRepositoryImpl(private val queryFactory: JPAQueryFactor
.fetchFirst()
}
override fun getMediaPartnerList(offset: Long, limit: Long): List<GetAdminAdMediaPartnerResponse> {
override fun getMediaPartnerList(offset: Long, limit: Long): List<GetAdminAdMediaPartnerResponseItem> {
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<LocalDateTime>): StringTemplate {
return Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})",