diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationItemRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationItemRepository.kt index bcfe675..28bcc4d 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationItemRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationItemRepository.kt @@ -6,6 +6,7 @@ import kr.co.vividnext.sodalive.content.main.curation.AudioContentCurationItem import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCuration.audioContentCuration import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCurationItem.audioContentCurationItem import kr.co.vividnext.sodalive.creator.admin.content.series.QSeries.series +import org.springframework.beans.factory.annotation.Value import org.springframework.data.jpa.repository.JpaRepository interface AdminContentCurationItemRepository : @@ -15,10 +16,16 @@ interface AdminContentCurationItemRepository : interface AdminContentCurationItemQueryRepository { fun findByCurationIdAndSeriesId(curationId: Long, seriesId: Long?): AudioContentCurationItem? fun findByCurationIdAndContentId(curationId: Long, contentId: Long?): AudioContentCurationItem? + fun findByCurationIdAndItemId(curationId: Long, itemId: Long): AudioContentCurationItem? + fun getAudioContentCurationItemList(curationId: Long): List + fun getAudioContentCurationSeriesItemList(curationId: Long): List } class AdminContentCurationItemQueryRepositoryImpl( - val queryFactory: JPAQueryFactory + val queryFactory: JPAQueryFactory, + + @Value("\${cloud.aws.cloud-front.host}") + private val imageHost: String ) : AdminContentCurationItemQueryRepository { override fun findByCurationIdAndSeriesId(curationId: Long, seriesId: Long?): AudioContentCurationItem? { return queryFactory @@ -43,4 +50,55 @@ class AdminContentCurationItemQueryRepositoryImpl( ) .fetchFirst() } + + override fun findByCurationIdAndItemId(curationId: Long, itemId: Long): AudioContentCurationItem? { + return queryFactory.selectFrom(audioContentCurationItem) + .innerJoin(audioContentCurationItem.curation, audioContentCuration) + .where(audioContentCuration.id.eq(curationId), audioContentCurationItem.id.eq(itemId)) + .fetchFirst() + } + + override fun getAudioContentCurationItemList(curationId: Long): List { + return queryFactory + .select( + QGetCurationItemResponse( + audioContentCurationItem.id, + audioContent.title, + audioContent.detail, + audioContent.coverImage.prepend("/").prepend(imageHost), + audioContent.member.nickname.coalesce(""), + audioContent.isAdult + ) + ) + .from(audioContentCurationItem) + .innerJoin(audioContentCurationItem.curation, audioContentCuration) + .innerJoin(audioContentCurationItem.content, audioContent) + .where( + audioContentCuration.id.eq(curationId), + audioContentCurationItem.isActive.isTrue + ) + .fetch() + } + + override fun getAudioContentCurationSeriesItemList(curationId: Long): List { + return queryFactory + .select( + QGetCurationItemResponse( + audioContentCurationItem.id, + series.title, + series.introduction, + series.coverImage.prepend("/").prepend(imageHost), + series.member.nickname.coalesce(""), + series.isAdult + ) + ) + .from(audioContentCurationItem) + .innerJoin(audioContentCurationItem.curation, audioContentCuration) + .innerJoin(audioContentCurationItem.series, series) + .where( + audioContentCuration.id.eq(curationId), + audioContentCurationItem.isActive.isTrue + ) + .fetch() + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationRepository.kt index d0277eb..c010b03 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationRepository.kt @@ -3,7 +3,6 @@ package kr.co.vividnext.sodalive.admin.content.curation import com.querydsl.jpa.impl.JPAQueryFactory import kr.co.vividnext.sodalive.content.QAudioContent.audioContent import kr.co.vividnext.sodalive.content.main.curation.AudioContentCuration -import kr.co.vividnext.sodalive.content.main.curation.AudioContentCurationItem import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCuration.audioContentCuration import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCurationItem.audioContentCurationItem import kr.co.vividnext.sodalive.content.main.tab.QAudioContentMainTab.audioContentMainTab @@ -20,8 +19,6 @@ interface AdminContentCurationRepository : interface AdminContentCurationQueryRepository { fun getAudioContentCurationList(tabId: Long): List fun findByIdAndActive(id: Long): AudioContentCuration? - fun findByCurationIdAndItemId(curationId: Long, itemId: Long): AudioContentCurationItem? - fun getAudioContentCurationItemList(curationId: Long): List fun searchCurationContentItem(curationId: Long, searchWord: String): List fun searchCurationSeriesItem(curationId: Long, searchWord: String): List } @@ -65,36 +62,6 @@ class AdminContentCurationQueryRepositoryImpl( .fetchFirst() } - override fun findByCurationIdAndItemId(curationId: Long, itemId: Long): AudioContentCurationItem? { - return queryFactory.selectFrom(audioContentCurationItem) - .innerJoin(audioContentCurationItem.curation, audioContentCuration) - .where(audioContentCuration.id.eq(curationId), audioContentCurationItem.id.eq(itemId)) - .fetchFirst() - } - - override fun getAudioContentCurationItemList(curationId: Long): List { - return queryFactory - .select( - QGetCurationItemResponse( - audioContentCurationItem.id, - audioContent.title.coalesce(series.title), - audioContent.detail.coalesce(series.introduction), - audioContent.coverImage.coalesce(series.coverImage).prepend("/").prepend(imageHost), - audioContent.member.nickname.coalesce(series.member.nickname).coalesce(""), - audioContent.isAdult.coalesce(series.isAdult) - ) - ) - .from(audioContentCurationItem) - .innerJoin(audioContentCurationItem.curation, audioContentCuration) - .leftJoin(audioContentCurationItem.series, series) - .leftJoin(audioContentCurationItem.content, audioContent) - .where( - audioContentCuration.id.eq(curationId), - audioContentCurationItem.isActive.isTrue - ) - .fetch() - } - override fun searchCurationContentItem( curationId: Long, searchWord: String diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationService.kt index 7135e27..2d3427a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationService.kt @@ -84,7 +84,14 @@ class AdminContentCurationService( } fun getCurationItem(curationId: Long): List { - return repository.getAudioContentCurationItemList(curationId) + val curation = repository.findByIdOrNull(curationId) + ?: throw SodaException("잘못된 요청입니다.") + + return if (curation.isSeries) { + contentCurationItemRepository.getAudioContentCurationSeriesItemList(curationId) + } else { + contentCurationItemRepository.getAudioContentCurationItemList(curationId) + } } fun searchCurationContentItem(curationId: Long, searchWord: String): List { @@ -136,7 +143,7 @@ class AdminContentCurationService( @Transactional fun removeItemInCuration(request: RemoveItemInCurationRequest) { - val audioContentCurationItem = repository.findByCurationIdAndItemId( + val audioContentCurationItem = contentCurationItemRepository.findByCurationIdAndItemId( curationId = request.curationId, itemId = request.itemId )