오디션 메시지 다국어 처리

This commit is contained in:
2025-12-22 18:54:10 +09:00
parent ff1b8aa413
commit 8785741855
4 changed files with 65 additions and 10 deletions

View File

@@ -7,6 +7,8 @@ import kr.co.vividnext.sodalive.aws.s3.S3Uploader
import kr.co.vividnext.sodalive.common.SodaException
import kr.co.vividnext.sodalive.fcm.FcmEvent
import kr.co.vividnext.sodalive.fcm.FcmEventType
import kr.co.vividnext.sodalive.i18n.LangContext
import kr.co.vividnext.sodalive.i18n.SodaMessageSource
import kr.co.vividnext.sodalive.utils.generateFileName
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.ApplicationEventPublisher
@@ -22,6 +24,8 @@ class AdminAuditionService(
private val repository: AdminAuditionRepository,
private val roleRepository: AdminAuditionRoleRepository,
private val applicationEventPublisher: ApplicationEventPublisher,
private val langContext: LangContext,
private val messageSource: SodaMessageSource,
@Value("\${cloud.aws.s3.bucket}")
private val bucket: String
@@ -44,7 +48,7 @@ class AdminAuditionService(
fun updateAudition(image: MultipartFile?, requestString: String) {
val request = objectMapper.readValue(requestString, UpdateAuditionRequest::class.java)
val audition = repository.findByIdOrNull(id = request.id)
?: throw SodaException("잘못된 요청입니다.\n다시 시도해 주세요.")
?: throw SodaException(messageKey = "admin.audition.invalid_request_retry")
if (request.title != null) {
audition.title = request.title
@@ -63,7 +67,7 @@ class AdminAuditionService(
(audition.status == AuditionStatus.COMPLETED || audition.status == AuditionStatus.IN_PROGRESS) &&
request.status == AuditionStatus.NOT_STARTED
) {
throw SodaException("모집전 상태로 변경할 수 없습니다.")
throw SodaException(messageKey = "admin.audition.status_cannot_revert")
}
audition.status = request.status
@@ -88,11 +92,14 @@ class AdminAuditionService(
}
if (request.status != null && request.status == AuditionStatus.IN_PROGRESS && audition.isActive) {
val title = messageSource.getMessage("admin.audition.fcm.title.new", langContext.lang).orEmpty()
val messageTemplate = messageSource.getMessage("admin.audition.fcm.message.new", langContext.lang).orEmpty()
val message = String.format(messageTemplate, audition.title)
applicationEventPublisher.publishEvent(
FcmEvent(
type = FcmEventType.IN_PROGRESS_AUDITION,
title = "새로운 오디션 등록!",
message = "'${audition.title}'이 등록되었습니다. 지금 바로 오리지널 오디오 드라마 오디션에 지원해보세요!",
title = title,
message = message,
isAuth = audition.isAdult,
auditionId = audition.id ?: -1
)

View File

@@ -11,11 +11,11 @@ data class CreateAuditionRequest(
) {
init {
if (title.isBlank()) {
throw SodaException("오디션 제목을 입력하세요")
throw SodaException(messageKey = "admin.audition.title_required")
}
if (information.isBlank() || information.length < 10) {
throw SodaException("오디션 정보는 최소 10글자 입니다")
throw SodaException(messageKey = "admin.audition.information_min_length")
}
}

View File

@@ -10,7 +10,7 @@ class AdminAuditionApplicantService(private val repository: AdminAuditionApplica
@Transactional
fun deleteAuditionApplicant(id: Long) {
val applicant = repository.findByIdOrNull(id)
?: throw SodaException("잘못된 요청입니다.")
?: throw SodaException(messageKey = "common.error.invalid_request")
applicant.isActive = false
}