diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/audition/AdminAuditionRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/audition/AdminAuditionRepository.kt index 29b3a95..dc2e8e1 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/audition/AdminAuditionRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/audition/AdminAuditionRepository.kt @@ -41,12 +41,13 @@ class AdminAuditionQueryRepositoryImpl( .otherwise(""), audition.imagePath.prepend("/").prepend(coverImageHost), audition.isAdult, - audition.isActive, audition.information, + audition.status, audition.originalWorkUrl.coalesce("") ) ) .from(audition) + .where(audition.isActive.isTrue) .offset(offset) .limit(limit) .orderBy(audition.isActive.desc(), audition.id.desc()) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/audition/AdminAuditionService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/audition/AdminAuditionService.kt index 5127a00..6358a23 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/audition/AdminAuditionService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/audition/AdminAuditionService.kt @@ -1,6 +1,7 @@ package kr.co.vividnext.sodalive.admin.audition import com.fasterxml.jackson.databind.ObjectMapper +import kr.co.vividnext.sodalive.audition.AuditionStatus import kr.co.vividnext.sodalive.aws.s3.S3Uploader import kr.co.vividnext.sodalive.common.SodaException import kr.co.vividnext.sodalive.utils.generateFileName @@ -54,6 +55,17 @@ class AdminAuditionService( audition.isAdult = request.isAdult } + if (request.status != null) { + if ( + (audition.status == AuditionStatus.COMPLETED || audition.status == AuditionStatus.IN_PROGRESS) && + request.status == AuditionStatus.NOT_STARTED + ) { + throw SodaException("모집전 상태로 변경할 수 없습니다.") + } + + audition.status = request.status + } + if (request.endDateString != null) { val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") val endDate = LocalDateTime.parse(request.endDateString, dateTimeFormatter) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/audition/GetAuditionListResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/audition/GetAuditionListResponse.kt index 10f2db4..4858790 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/audition/GetAuditionListResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/audition/GetAuditionListResponse.kt @@ -1,6 +1,7 @@ package kr.co.vividnext.sodalive.admin.audition import com.querydsl.core.annotations.QueryProjection +import kr.co.vividnext.sodalive.audition.AuditionStatus data class GetAuditionListResponse( val totalCount: Int, @@ -13,7 +14,7 @@ data class GetAuditionListItem @QueryProjection constructor( val endDate: String, val imageUrl: String, val isAdult: Boolean, - val isActive: Boolean, val information: String, + val status: AuditionStatus, val originalWorkUrl: String ) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/audition/UpdateAuditionRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/audition/UpdateAuditionRequest.kt index 5b1f16f..540e446 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/audition/UpdateAuditionRequest.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/audition/UpdateAuditionRequest.kt @@ -1,11 +1,14 @@ package kr.co.vividnext.sodalive.admin.audition +import kr.co.vividnext.sodalive.audition.AuditionStatus + data class UpdateAuditionRequest( val id: Long, val title: String? = null, val information: String? = null, val isAdult: Boolean? = null, val endDateString: String? = null, + val status: AuditionStatus? = null, val originalWorkUrl: String? = null, val isActive: Boolean? = null ) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/audition/Audition.kt b/src/main/kotlin/kr/co/vividnext/sodalive/audition/Audition.kt index 9de0835..24e2727 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/audition/Audition.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/audition/Audition.kt @@ -4,6 +4,8 @@ import kr.co.vividnext.sodalive.common.BaseEntity import java.time.LocalDateTime import javax.persistence.Column import javax.persistence.Entity +import javax.persistence.EnumType +import javax.persistence.Enumerated @Entity data class Audition( @@ -13,7 +15,9 @@ data class Audition( var isAdult: Boolean = false, var endDate: LocalDateTime? = null, // 원작 URL - var originalWorkUrl: String? = null + var originalWorkUrl: String? = null, + @Enumerated(value = EnumType.STRING) + var status: AuditionStatus = AuditionStatus.NOT_STARTED ) : BaseEntity() { var isActive: Boolean = true var imagePath: String? = null diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/audition/AuditionStatus.kt b/src/main/kotlin/kr/co/vividnext/sodalive/audition/AuditionStatus.kt new file mode 100644 index 0000000..58a5c03 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/audition/AuditionStatus.kt @@ -0,0 +1,7 @@ +package kr.co.vividnext.sodalive.audition + +enum class AuditionStatus { + NOT_STARTED, + IN_PROGRESS, + COMPLETED +}