diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/AdminContentRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/AdminContentRepository.kt index 7bd4e5b..1a0288e 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/AdminContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/AdminContentRepository.kt @@ -69,6 +69,7 @@ class AdminAudioContentQueryRepositoryImpl( audioContent.coverImage, audioContent.member!!.nickname, audioContentTheme.theme, + audioContentTheme.id, audioContent.price, audioContent.isAdult, audioContent.duration, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/AdminContentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/AdminContentService.kt index 0808d08..a421759 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/AdminContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/AdminContentService.kt @@ -1,6 +1,7 @@ package kr.co.vividnext.sodalive.admin.content import kr.co.vividnext.sodalive.admin.content.curation.AdminContentCurationRepository +import kr.co.vividnext.sodalive.admin.content.theme.AdminContentThemeRepository import kr.co.vividnext.sodalive.aws.cloudfront.AudioContentCloudFront import kr.co.vividnext.sodalive.common.SodaException import org.springframework.beans.factory.annotation.Value @@ -12,6 +13,7 @@ import org.springframework.transaction.annotation.Transactional @Service class AdminContentService( private val repository: AdminContentRepository, + private val themeRepository: AdminContentThemeRepository, private val audioContentCloudFront: AudioContentCloudFront, private val curationRepository: AdminContentCurationRepository, @@ -120,5 +122,10 @@ class AdminContentService( val curation = curationRepository.findByIdAndActive(id = request.curationId) audioContent.curation = curation } + + if (request.themeId != null) { + val theme = themeRepository.findByIdAndActive(id = request.themeId) + audioContent.theme = theme + } } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/GetAdminContentListResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/GetAdminContentListResponse.kt index c1ed613..40f974a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/GetAdminContentListResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/GetAdminContentListResponse.kt @@ -16,6 +16,7 @@ data class GetAdminContentListItem @QueryProjection constructor( var coverImageUrl: String, val creatorNickname: String, val theme: String, + val themeId: Long, val price: Int, val isAdult: Boolean, val remainingTime: String, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/UpdateAdminContentRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/UpdateAdminContentRequest.kt index 376485b..9b0a6e7 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/UpdateAdminContentRequest.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/UpdateAdminContentRequest.kt @@ -6,6 +6,7 @@ data class UpdateAdminContentRequest( val title: String?, val detail: String?, val curationId: Long?, + val themeId: Long?, val isAdult: Boolean?, val isActive: Boolean?, val isCommentAvailable: Boolean? diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/theme/AdminContentThemeRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/theme/AdminContentThemeRepository.kt index 77f2af2..465fe7f 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/theme/AdminContentThemeRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/theme/AdminContentThemeRepository.kt @@ -14,6 +14,7 @@ interface AdminContentThemeRepository : JpaRepository, interface AdminContentThemeQueryRepository { fun findIdByTheme(theme: String): Long? + fun findByIdAndActive(id: Long): AudioContentTheme? fun getActiveThemes(): List } @@ -31,6 +32,16 @@ class AdminContentThemeQueryRepositoryImpl( .fetchOne() } + override fun findByIdAndActive(id: Long): AudioContentTheme? { + return queryFactory + .selectFrom(audioContentTheme) + .where( + audioContentTheme.id.eq(id) + .and(audioContentTheme.isActive.isTrue) + ) + .fetchOne() + } + override fun getActiveThemes(): List { return queryFactory .select(