diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt index c8ab4c9..249ec7e 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt @@ -15,6 +15,7 @@ import kr.co.vividnext.sodalive.content.main.banner.AudioContentBanner import kr.co.vividnext.sodalive.content.main.banner.QAudioContentBanner.audioContentBanner import kr.co.vividnext.sodalive.content.main.curation.AudioContentCuration 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 import kr.co.vividnext.sodalive.content.order.QOrder.order import kr.co.vividnext.sodalive.content.pin.QPinContent.pinContent @@ -109,6 +110,12 @@ interface AudioContentQueryRepository { contentType: ContentType ): List + fun findAudioContentByCurationIdV2( + curationId: Long, + memberId: Long, + isAdult: Boolean + ): List + fun getAudioContentRanking( cloudfrontHost: String, isAdult: Boolean, @@ -648,6 +655,50 @@ class AudioContentQueryRepositoryImpl( .fetch() } + override fun findAudioContentByCurationIdV2( + curationId: Long, + memberId: Long, + isAdult: Boolean + ): List { + val blockMemberCondition = blockMember.member.id.eq(member.id) + .and(blockMember.isActive.isTrue) + .and(blockMember.blockedMember.id.eq(memberId)) + + var where = audioContentCuration.isActive.isTrue + .and(audioContentCurationItem.isActive.isTrue) + .and(audioContent.isActive.isTrue) + .and(audioContent.member.isNotNull) + .and(audioContent.duration.isNotNull) + .and(audioContent.member.isActive.isTrue) + .and(audioContentCuration.id.eq(curationId)) + .and(blockMember.id.isNull) + + if (!isAdult) { + where = where.and(audioContent.isAdult.isFalse) + } + + return queryFactory + .select( + QGetAudioContentMainItem( + audioContent.id, + audioContent.coverImage.prepend("/").prepend(imageHost), + audioContent.title, + member.id, + member.profileImage.prepend("/").prepend(imageHost), + member.nickname, + audioContent.price, + audioContent.duration + ) + ) + .from(audioContentCurationItem) + .innerJoin(audioContentCurationItem.content, audioContent) + .innerJoin(audioContentCurationItem.curation, audioContentCuration) + .innerJoin(audioContent.member, member) + .leftJoin(blockMember).on(blockMemberCondition) + .where(where) + .fetch() + } + override fun getAudioContentRanking( cloudfrontHost: String, isAdult: Boolean, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/alarm/AudioContentMainTabAlarmService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/alarm/AudioContentMainTabAlarmService.kt index 81128fe..a2bf598 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/alarm/AudioContentMainTabAlarmService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/alarm/AudioContentMainTabAlarmService.kt @@ -64,10 +64,10 @@ class AudioContentMainTabAlarmService( .map { GetContentCurationResponse( title = it.title, - items = contentRepository.findAudioContentByCurationId( + items = contentRepository.findAudioContentByCurationIdV2( curationId = it.id!!, - isAdult = isAdult, - contentType = ContentType.ALL + memberId = memberId, + isAdult = isAdult ) ) } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/asmr/AudioContentMainTabAsmrService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/asmr/AudioContentMainTabAsmrService.kt index 9748778..a8bcde8 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/asmr/AudioContentMainTabAsmrService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/asmr/AudioContentMainTabAsmrService.kt @@ -65,10 +65,10 @@ class AudioContentMainTabAsmrService( .map { GetContentCurationResponse( title = it.title, - items = contentRepository.findAudioContentByCurationId( + items = contentRepository.findAudioContentByCurationIdV2( curationId = it.id!!, - isAdult = isAdult, - contentType = ContentType.ALL + memberId = memberId, + isAdult = isAdult ) ) } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/free/AudioContentMainTabFreeService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/free/AudioContentMainTabFreeService.kt index 920178e..8debfd6 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/free/AudioContentMainTabFreeService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/free/AudioContentMainTabFreeService.kt @@ -38,10 +38,10 @@ class AudioContentMainTabFreeService( .map { GetContentCurationResponse( title = it.title, - items = contentRepository.findAudioContentByCurationId( + items = contentRepository.findAudioContentByCurationIdV2( curationId = it.id!!, - isAdult = isAdult, - contentType = ContentType.ALL + memberId = memberId, + isAdult = isAdult ) ) } @@ -68,10 +68,10 @@ class AudioContentMainTabFreeService( .map { GetContentCurationResponse( title = it.title, - items = contentRepository.findAudioContentByCurationId( + items = contentRepository.findAudioContentByCurationIdV2( curationId = it.id!!, - isAdult = isAdult, - contentType = ContentType.ALL + memberId = memberId, + isAdult = isAdult ) ) } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/replay/AudioContentMainTabLiveReplayService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/replay/AudioContentMainTabLiveReplayService.kt index 560ca76..767a8c9 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/replay/AudioContentMainTabLiveReplayService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/replay/AudioContentMainTabLiveReplayService.kt @@ -65,10 +65,10 @@ class AudioContentMainTabLiveReplayService( .map { GetContentCurationResponse( title = it.title, - items = contentRepository.findAudioContentByCurationId( + items = contentRepository.findAudioContentByCurationIdV2( curationId = it.id!!, - isAdult = isAdult, - contentType = ContentType.ALL + memberId = memberId, + isAdult = isAdult ) ) }