From dd138bff8675574cfde7a95a0c689069663c5453 Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 14 Mar 2025 01:43:43 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20-=20=EC=9D=B4?= =?UTF-8?q?=EB=B2=A4=ED=8A=B8=20=EB=B0=B0=EB=84=88=20=EC=84=9C=EB=B9=84?= =?UTF-8?q?=EC=8A=A4=20-=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20host=EB=A5=BC=20Q?= =?UTF-8?q?uerydsl=20=EC=BD=94=EB=93=9C=EC=97=90=EC=84=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20-=20=EC=8B=9C=EC=9E=91=20=EC=A0=84=EC=9D=B8=20?= =?UTF-8?q?=EC=9D=B4=EB=B2=A4=ED=8A=B8=EB=8F=84=20=EB=B3=B4=EC=9D=B4?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../banner/AdminEventBannerRepository.kt | 21 ++++++++++++++----- .../event/banner/AdminEventBannerService.kt | 21 +------------------ .../event/banner/GetAdminEventResponse.kt | 10 ++++----- 3 files changed, 22 insertions(+), 30 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/event/banner/AdminEventBannerRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/event/banner/AdminEventBannerRepository.kt index 547715b..8bd786b 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/event/banner/AdminEventBannerRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/event/banner/AdminEventBannerRepository.kt @@ -2,10 +2,13 @@ package kr.co.vividnext.sodalive.admin.event.banner import com.querydsl.core.types.dsl.DateTimePath import com.querydsl.core.types.dsl.Expressions +import com.querydsl.core.types.dsl.StringExpression +import com.querydsl.core.types.dsl.StringPath import com.querydsl.core.types.dsl.StringTemplate import com.querydsl.jpa.impl.JPAQueryFactory import kr.co.vividnext.sodalive.event.Event import kr.co.vividnext.sodalive.event.QEvent.event +import org.springframework.beans.factory.annotation.Value import org.springframework.data.jpa.repository.JpaRepository import java.time.LocalDateTime @@ -16,22 +19,23 @@ interface AdminEventBannerQueryRepository { } class AdminEventBannerQueryRepositoryImpl( - private val queryFactory: JPAQueryFactory + private val queryFactory: JPAQueryFactory, + @Value("\${cloud.aws.cloud-front.host}") + private val cloudFrontHost: String ) : AdminEventBannerQueryRepository { override fun getEventList(): List { val now = LocalDateTime.now() val where = event.isActive.isTrue .and(event.startDate.loe(now)) - .and(event.endDate.goe(now)) return queryFactory .select( QGetAdminEventResponse( event.id, event.title, - event.thumbnailImage, - event.detailImage, - event.popupImage, + getProcessedUrlExpression(event.thumbnailImage), + getProcessedUrlExpression(event.detailImage), + getProcessedUrlExpression(event.popupImage), getFormattedDate(event.startDate), getFormattedDate(event.endDate), event.link, @@ -58,4 +62,11 @@ class AdminEventBannerQueryRepositoryImpl( "%Y-%m-%d" ) } + + private fun getProcessedUrlExpression(path: StringPath): StringExpression { + return Expressions.stringTemplate( + "CASE WHEN {0} LIKE '$cloudFrontHost%' THEN {0} ELSE CONCAT('$cloudFrontHost', {0}) END", + path + ) + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/event/banner/AdminEventBannerService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/event/banner/AdminEventBannerService.kt index 158dc5e..c3b0910 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/event/banner/AdminEventBannerService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/event/banner/AdminEventBannerService.kt @@ -20,9 +20,7 @@ class AdminEventBannerService( private val s3Uploader: S3Uploader, @Value("\${cloud.aws.s3.bucket}") - private val bucket: String, - @Value("\${cloud.aws.cloud-front.host}") - private val cloudFrontHost: String + private val bucket: String ) { @Transactional fun save( @@ -201,22 +199,5 @@ class AdminEventBannerService( fun getEventList(): List { return repository.getEventList() - .asSequence() - .map { - if (!it.thumbnailImageUrl.startsWith("https://")) { - it.thumbnailImageUrl = "$cloudFrontHost/${it.thumbnailImageUrl}" - } - - if (it.detailImageUrl != null && !it.detailImageUrl!!.startsWith("https://")) { - it.detailImageUrl = "$cloudFrontHost/${it.detailImageUrl}" - } - - if (it.popupImageUrl != null && !it.popupImageUrl!!.startsWith("https://")) { - it.popupImageUrl = "$cloudFrontHost/${it.popupImageUrl}" - } - - it - } - .toList() } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/event/banner/GetAdminEventResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/event/banner/GetAdminEventResponse.kt index 82e9e26..23b10b6 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/event/banner/GetAdminEventResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/event/banner/GetAdminEventResponse.kt @@ -5,11 +5,11 @@ import com.querydsl.core.annotations.QueryProjection data class GetAdminEventResponse @QueryProjection constructor( val id: Long, val title: String? = null, - var thumbnailImageUrl: String, - var detailImageUrl: String? = null, - var popupImageUrl: String? = null, - var startDate: String, - var endDate: String, + val thumbnailImageUrl: String, + val detailImageUrl: String? = null, + val popupImageUrl: String? = null, + val startDate: String, + val endDate: String, val link: String? = null, val isAdult: Boolean? = null, val isPopup: Boolean