콘텐츠 메인 시리즈 탭 - 장르별 시리즈

- 콘텐츠가 있는 장르만 표시하도록 수정
This commit is contained in:
Klaus 2025-02-19 21:46:02 +09:00
parent 3388bb4283
commit 433a9a29c5
3 changed files with 25 additions and 6 deletions

View File

@ -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()) { val recommendSeriesList = if (genreList.isNotEmpty()) {

View File

@ -37,7 +37,7 @@ interface ContentSeriesQueryRepository {
fun getRecommendSeriesList(isAuth: Boolean, contentType: ContentType, limit: Long): List<Series> fun getRecommendSeriesList(isAuth: Boolean, contentType: ContentType, limit: Long): List<Series>
fun getOriginalAudioDramaList(memberId: Long, isAdult: Boolean, offset: Long = 0, limit: Long = 20): List<Series> fun getOriginalAudioDramaList(memberId: Long, isAdult: Boolean, offset: Long = 0, limit: Long = 20): List<Series>
fun getOriginalAudioDramaTotalCount(memberId: Long, isAdult: Boolean): Int fun getOriginalAudioDramaTotalCount(memberId: Long, isAdult: Boolean): Int
fun getGenreList(isAdult: Boolean): List<GetSeriesGenreListResponse> fun getGenreList(isAdult: Boolean, memberId: Long): List<GetSeriesGenreListResponse>
fun findByCurationId(curationId: Long, memberId: Long, isAdult: Boolean): List<Series> fun findByCurationId(curationId: Long, memberId: Long, isAdult: Boolean): List<Series>
} }
@ -191,17 +191,36 @@ class ContentSeriesQueryRepositoryImpl(
.size .size
} }
override fun getGenreList(isAdult: Boolean): List<GetSeriesGenreListResponse> { override fun getGenreList(isAdult: Boolean, memberId: Long): List<GetSeriesGenreListResponse> {
val blockMemberCondition = blockMember.member.id.eq(member.id)
.and(blockMember.isActive.isTrue)
.and(blockMember.blockedMember.id.eq(memberId))
var where = seriesGenre.isActive.isTrue 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) { if (!isAdult) {
where = where.and(seriesGenre.isAdult.isFalse) where = where.and(seriesGenre.isAdult.isFalse)
.and(series.isAdult.isFalse)
} }
return queryFactory return queryFactory
.select(QGetSeriesGenreListResponse(seriesGenre.id, seriesGenre.genre)) .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) .where(where)
.groupBy(seriesGenre.id)
.orderBy(seriesGenre.orders.asc()) .orderBy(seriesGenre.orders.asc())
.fetch() .fetch()
} }

View File

@ -44,8 +44,8 @@ class ContentSeriesService(
return seriesToSeriesListItem(originalAudioDramaList, isAdult) return seriesToSeriesListItem(originalAudioDramaList, isAdult)
} }
fun getGenreList(isAdult: Boolean): List<GetSeriesGenreListResponse> { fun getGenreList(memberId: Long, isAdult: Boolean): List<GetSeriesGenreListResponse> {
return repository.getGenreList(isAdult = isAdult) return repository.getGenreList(memberId = memberId, isAdult = isAdult)
} }
fun getSeriesList( fun getSeriesList(