관리자 콘텐츠 배너 등록/수정 API

- 시리즈 등록/수정 기능 추가
This commit is contained in:
Klaus 2025-01-17 03:15:31 +09:00
parent df3f045209
commit e0c9a2cea7
3 changed files with 53 additions and 20 deletions

View File

@ -1,6 +1,7 @@
package kr.co.vividnext.sodalive.admin.content.banner
import com.fasterxml.jackson.databind.ObjectMapper
import kr.co.vividnext.sodalive.admin.content.series.AdminContentSeriesRepository
import kr.co.vividnext.sodalive.aws.s3.S3Uploader
import kr.co.vividnext.sodalive.common.SodaException
import kr.co.vividnext.sodalive.content.main.banner.AudioContentBanner
@ -19,6 +20,7 @@ class AdminContentBannerService(
private val s3Uploader: S3Uploader,
private val repository: AdminContentBannerRepository,
private val memberRepository: MemberRepository,
private val seriesRepository: AdminContentSeriesRepository,
private val eventRepository: EventRepository,
private val objectMapper: ObjectMapper,
@ -32,6 +34,10 @@ class AdminContentBannerService(
throw SodaException("크리에이터를 선택하세요.")
}
if (request.type == AudioContentBannerType.SERIES && request.seriesId == null) {
throw SodaException("시리즈를 선택하세요.")
}
if (request.type == AudioContentBannerType.LINK && request.link == null) {
throw SodaException("링크 url을 입력하세요.")
}
@ -52,11 +58,18 @@ class AdminContentBannerService(
null
}
val series = if (request.seriesId != null && request.seriesId > 0) {
seriesRepository.findByIdOrNull(request.seriesId)
} else {
null
}
val audioContentBanner = AudioContentBanner(type = request.type)
audioContentBanner.link = request.link
audioContentBanner.isAdult = request.isAdult
audioContentBanner.event = event
audioContentBanner.creator = creator
audioContentBanner.series = series
repository.save(audioContentBanner)
val fileName = generateFileName()
@ -96,8 +109,21 @@ class AdminContentBannerService(
audioContentBanner.creator = null
audioContentBanner.event = null
audioContentBanner.link = null
audioContentBanner.series = null
if (request.type == AudioContentBannerType.CREATOR) {
when (request.type) {
AudioContentBannerType.EVENT -> {
if (request.eventId != null) {
val event = eventRepository.findByIdOrNull(request.eventId)
?: throw SodaException("이벤트를 선택하세요.")
audioContentBanner.event = event
} else {
throw SodaException("이벤트를 선택하세요.")
}
}
AudioContentBannerType.CREATOR -> {
if (request.creatorId != null) {
val creator = memberRepository.findByIdOrNull(request.creatorId)
?: throw SodaException("크리에이터를 선택하세요.")
@ -106,20 +132,25 @@ class AdminContentBannerService(
} else {
throw SodaException("크리에이터를 선택하세요.")
}
} else if (request.type == AudioContentBannerType.LINK) {
}
AudioContentBannerType.LINK -> {
if (request.link != null) {
audioContentBanner.link = request.link
} else {
throw SodaException("링크 url을 입력하세요.")
}
} else if (request.type == AudioContentBannerType.EVENT) {
if (request.eventId != null) {
val event = eventRepository.findByIdOrNull(request.eventId)
?: throw SodaException("이벤트를 선택하세요.")
}
audioContentBanner.event = event
AudioContentBannerType.SERIES -> {
if (request.seriesId != null) {
val series = seriesRepository.findByIdOrNull(request.seriesId)
?: throw SodaException("시리즈를 선택하세요.")
audioContentBanner.series = series
} else {
throw SodaException("이벤트를 선택하세요.")
throw SodaException("시리즈를 선택하세요.")
}
}
}

View File

@ -6,6 +6,7 @@ data class CreateContentBannerRequest(
val type: AudioContentBannerType,
val eventId: Long?,
val creatorId: Long?,
val seriesId: Long?,
val link: String?,
val isAdult: Boolean
)

View File

@ -7,6 +7,7 @@ data class UpdateContentBannerRequest(
val type: AudioContentBannerType?,
val eventId: Long?,
val creatorId: Long?,
val seriesId: Long?,
val link: String?,
val isAdult: Boolean?,
val isActive: Boolean?