From 22c302efa0afd5e0dfe27b132820e4f7c378927a Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 27 Dec 2024 01:56:45 +0900 Subject: [PATCH] =?UTF-8?q?=EC=98=A4=EB=94=94=EC=85=98=20=EC=97=94?= =?UTF-8?q?=ED=8B=B0=ED=8B=B0=20-=20status(=EB=AA=A8=EC=A7=91=EC=83=81?= =?UTF-8?q?=ED=83=9C)=20=EC=B6=94=EA=B0=80=20-=20=EB=A6=AC=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20api=20:=20=EC=9D=91=EB=8B=B5=EA=B0=92=EC=97=90=20st?= =?UTF-8?q?atus=20=EC=B6=94=EA=B0=80,=20=ED=99=9C=EC=84=B1=ED=99=94=20?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=EB=A7=8C=20=EC=A1=B0=ED=9A=8C=20-?= =?UTF-8?q?=20=EC=88=98=EC=A0=95=20api=20:=20status=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/audition/AdminAuditionRepository.kt | 3 ++- .../sodalive/admin/audition/AdminAuditionService.kt | 12 ++++++++++++ .../admin/audition/GetAuditionListResponse.kt | 3 ++- .../sodalive/admin/audition/UpdateAuditionRequest.kt | 3 +++ .../kr/co/vividnext/sodalive/audition/Audition.kt | 6 +++++- .../co/vividnext/sodalive/audition/AuditionStatus.kt | 7 +++++++ 6 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/audition/AuditionStatus.kt 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 +}