From baeea79e66db22f8e47dbe8e897be79f2ac9b3fa Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 30 Oct 2024 23:55:07 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B4=EB=B2=A4=ED=8A=B8=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20-=20=EC=8B=9C=EC=9E=91=EB=82=A0=EC=A7=9C,=20?= =?UTF-8?q?=EC=A2=85=EB=A3=8C=EB=82=A0=EC=A7=9C=20format=20'yyyy-MM-dd'?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/main/AudioContentMainService.kt | 17 +++++++++++-- .../sodalive/event/EventRepository.kt | 25 ++++++++++++++++--- .../sodalive/event/GetEventResponse.kt | 5 ++-- 3 files changed, 38 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt index 1ef9df8..598b8b2 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt @@ -14,6 +14,8 @@ import org.springframework.cache.annotation.Cacheable import org.springframework.data.domain.Pageable import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional +import java.time.ZoneId +import java.time.format.DateTimeFormatter @Service class AudioContentMainService( @@ -107,6 +109,17 @@ class AudioContentMainService( type = it.type, thumbnailImageUrl = "$imageHost/${it.thumbnailImage}", eventItem = if (it.type == AudioContentBannerType.EVENT && it.event != null) { + val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd") + val startDate = it.event!!.startDate + .atZone(ZoneId.of("UTC")) + .withZoneSameInstant(ZoneId.of("Asia/Seoul")) + .format(dateTimeFormatter) + + val endDate = it.event!!.endDate + .atZone(ZoneId.of("UTC")) + .withZoneSameInstant(ZoneId.of("Asia/Seoul")) + .format(dateTimeFormatter) + EventItem( id = it.event!!.id!!, thumbnailImageUrl = if (!it.event!!.thumbnailImage.startsWith("https://")) { @@ -123,8 +136,8 @@ class AudioContentMainService( it.event!!.detailImage }, popupImageUrl = null, - startDate = it.event!!.startDate, - endDate = it.event!!.endDate, + startDate = startDate, + endDate = endDate, link = it.event!!.link, title = it.event!!.title, isPopup = false diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/event/EventRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/event/EventRepository.kt index 544a8cc..8f40b49 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/event/EventRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/event/EventRepository.kt @@ -1,5 +1,8 @@ package kr.co.vividnext.sodalive.event +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.event.QEvent.event import org.springframework.data.jpa.repository.JpaRepository @@ -44,8 +47,8 @@ class EventQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : Even event.thumbnailImage, event.detailImage, event.popupImage, - event.startDate, - event.endDate, + getFormattedDate(event.startDate), + getFormattedDate(event.endDate), event.link, event.isAdult, event.isPopup @@ -85,8 +88,8 @@ class EventQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : Even event.thumbnailImage, event.detailImage, event.popupImage, - event.startDate, - event.endDate, + getFormattedDate(event.startDate), + getFormattedDate(event.endDate), event.link, event.isAdult, event.isPopup @@ -97,4 +100,18 @@ class EventQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : Even .orderBy(event.id.desc()) .fetchFirst() } + + private fun getFormattedDate(dateTimePath: DateTimePath): StringTemplate { + return Expressions.stringTemplate( + "DATE_FORMAT({0}, {1})", + Expressions.dateTimeTemplate( + LocalDateTime::class.java, + "CONVERT_TZ({0},{1},{2})", + dateTimePath, + "UTC", + "Asia/Seoul" + ), + "%Y-%m-%d" + ) + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/event/GetEventResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/event/GetEventResponse.kt index cf29019..80c4ef8 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/event/GetEventResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/event/GetEventResponse.kt @@ -3,7 +3,6 @@ package kr.co.vividnext.sodalive.event import com.fasterxml.jackson.annotation.JsonIgnoreProperties import com.fasterxml.jackson.annotation.JsonProperty import com.querydsl.core.annotations.QueryProjection -import java.time.LocalDateTime data class GetEventResponse( @JsonProperty("totalCount") val totalCount: Int, @@ -17,8 +16,8 @@ data class EventItem @QueryProjection constructor( @JsonProperty("thumbnailImageUrl") var thumbnailImageUrl: String, @JsonProperty("detailImageUrl") var detailImageUrl: String? = null, @JsonProperty("popupImageUrl") var popupImageUrl: String? = null, - @JsonProperty("startDate") var startDate: LocalDateTime, - @JsonProperty("endDate") var endDate: LocalDateTime, + @JsonProperty("startDate") var startDate: String, + @JsonProperty("endDate") var endDate: String, @JsonProperty("link") val link: String? = null, @JsonProperty("isAdult") val isAdult: Boolean? = null, @JsonProperty("isPopup") val isPopup: Boolean