diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/series/AudioContentMainTabSeriesService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/series/AudioContentMainTabSeriesService.kt index cda1dc0..479c015 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/series/AudioContentMainTabSeriesService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/series/AudioContentMainTabSeriesService.kt @@ -58,7 +58,7 @@ class AudioContentMainTabSeriesService( ) // 시리즈 장르 - val genreList = seriesService.getGenreList(isAdult = isAdult) + val genreList = seriesService.getGenreList(memberId = memberId, isAdult = isAdult) // 장르별 추천 시리즈 val recommendSeriesList = if (genreList.isNotEmpty()) { diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt index 147d503..97631d0 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt @@ -37,7 +37,7 @@ interface ContentSeriesQueryRepository { fun getRecommendSeriesList(isAuth: Boolean, contentType: ContentType, limit: Long): List fun getOriginalAudioDramaList(memberId: Long, isAdult: Boolean, offset: Long = 0, limit: Long = 20): List fun getOriginalAudioDramaTotalCount(memberId: Long, isAdult: Boolean): Int - fun getGenreList(isAdult: Boolean): List + fun getGenreList(isAdult: Boolean, memberId: Long): List fun findByCurationId(curationId: Long, memberId: Long, isAdult: Boolean): List } @@ -191,17 +191,36 @@ class ContentSeriesQueryRepositoryImpl( .size } - override fun getGenreList(isAdult: Boolean): List { + override fun getGenreList(isAdult: Boolean, memberId: Long): List { + val blockMemberCondition = blockMember.member.id.eq(member.id) + .and(blockMember.isActive.isTrue) + .and(blockMember.blockedMember.id.eq(memberId)) + var where = seriesGenre.isActive.isTrue + .and(series.isActive.isTrue) + .and(audioContent.isActive.isTrue) + .and(member.isActive.isTrue) + .and(member.isNotNull) + .and(member.role.eq(MemberRole.CREATOR)) + .and(audioContent.duration.isNotNull) + .and(audioContent.limited.isNull) + .and(blockMember.id.isNull) if (!isAdult) { where = where.and(seriesGenre.isAdult.isFalse) + .and(series.isAdult.isFalse) } return queryFactory .select(QGetSeriesGenreListResponse(seriesGenre.id, seriesGenre.genre)) - .from(seriesGenre) + .from(seriesContent) + .innerJoin(seriesContent.series, series) + .innerJoin(series.genre, seriesGenre) + .innerJoin(seriesContent.content, audioContent) + .innerJoin(series.member, member) + .leftJoin(blockMember).on(blockMemberCondition) .where(where) + .groupBy(seriesGenre.id) .orderBy(seriesGenre.orders.asc()) .fetch() } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesService.kt index cac46b9..c0409d8 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesService.kt @@ -44,8 +44,8 @@ class ContentSeriesService( return seriesToSeriesListItem(originalAudioDramaList, isAdult) } - fun getGenreList(isAdult: Boolean): List { - return repository.getGenreList(isAdult = isAdult) + fun getGenreList(memberId: Long, isAdult: Boolean): List { + return repository.getGenreList(memberId = memberId, isAdult = isAdult) } fun getSeriesList(