diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationController.kt index e065e62..3bbe3ed 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationController.kt @@ -56,7 +56,7 @@ class AdminContentCurationController(private val service: AdminContentCurationSe @RequestBody request: AddItemToCurationRequest ) = ApiResponse.ok(service.addItemToCuration(request), "큐레이션 아이템을 등록했습니다.") - @PostMapping("/remove/item") + @PutMapping("/remove/item") fun removeItemInCuration( @RequestBody request: RemoveItemInCurationRequest ) = ApiResponse.ok(service.removeItemInCuration(request), "큐레이션 아이템을 제거했습니다.") 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 ) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/notification/MemberNotificationService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/notification/MemberNotificationService.kt index db023e8..44dc8f3 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/notification/MemberNotificationService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/notification/MemberNotificationService.kt @@ -15,10 +15,10 @@ class MemberNotificationService(private val repository: MemberNotificationReposi var notification = repository.getMemberNotification(memberId = member.id!!) if (notification == null) { notification = MemberNotification( - uploadContent = uploadContent, - live = live, - message = message, - audition = audition + uploadContent = uploadContent ?: false, + live = live ?: false, + message = message ?: false, + audition = audition ?: false ) notification.member = member repository.save(notification)