feat(series-banner): 시리즈 배너를 언어별로 등록하고 노출한다

This commit is contained in:
2026-04-02 16:59:31 +09:00
parent d3b1f4bcd4
commit 3c32559c5d
10 changed files with 371 additions and 8 deletions

View File

@@ -56,7 +56,9 @@ class AdminContentSeriesBannerController(
val banners = bannerService.getActiveBanners(pageable)
val response = SeriesBannerListPageResponse(
totalCount = banners.totalElements,
content = banners.content.map { SeriesBannerResponse.from(it, imageHost) }
content = banners.content.map {
SeriesBannerResponse.from(it, imageHost, appendLanguageToSeriesTitle = true)
}
)
ApiResponse.ok(response)
}
@@ -82,7 +84,7 @@ class AdminContentSeriesBannerController(
val objectMapper = ObjectMapper()
val request = objectMapper.readValue(requestString, SeriesBannerRegisterRequest::class.java)
val banner = bannerService.registerBanner(seriesId = request.seriesId, imagePath = "")
val banner = bannerService.registerBanner(seriesId = request.seriesId, imagePath = "", lang = request.lang)
val imagePath = saveImage(banner.id!!, image)
val updatedBanner = bannerService.updateBanner(banner.id!!, imagePath)
val response = SeriesBannerResponse.from(updatedBanner, imageHost)

View File

@@ -2,10 +2,12 @@ package kr.co.vividnext.sodalive.admin.content.series.banner.dto
import com.fasterxml.jackson.annotation.JsonProperty
import kr.co.vividnext.sodalive.content.series.main.banner.SeriesBanner
import kr.co.vividnext.sodalive.i18n.Lang
// 시리즈 배너 등록 요청 DTO
data class SeriesBannerRegisterRequest(
@JsonProperty("seriesId") val seriesId: Long
@JsonProperty("seriesId") val seriesId: Long,
@JsonProperty("lang") val lang: Lang? = null
)
// 시리즈 배너 수정 요청 DTO
@@ -22,14 +24,30 @@ data class SeriesBannerResponse(
val seriesTitle: String
) {
companion object {
fun from(banner: SeriesBanner, imageHost: String): SeriesBannerResponse {
fun from(
banner: SeriesBanner,
imageHost: String,
appendLanguageToSeriesTitle: Boolean = false
): SeriesBannerResponse {
return SeriesBannerResponse(
id = banner.id!!,
imagePath = "$imageHost/${banner.imagePath}",
seriesId = banner.series.id!!,
seriesTitle = banner.series.title
seriesTitle = if (appendLanguageToSeriesTitle) {
"${banner.series.title} (${getLanguageLabel(banner.lang)})"
} else {
banner.series.title
}
)
}
private fun getLanguageLabel(lang: Lang): String {
return when (lang) {
Lang.KO -> "한국어"
Lang.EN -> "영어"
Lang.JA -> "일본어"
}
}
}
}