콘텐츠 메인 홈, 모닝콜, asmr, 단편, 무료, 다시듣기, 시리즈

- 19금 콘텐츠 (안)보기 설정
- 남성향, 여성향 콘텐츠만 보기 설정 적용
This commit is contained in:
2025-03-18 14:42:04 +09:00
parent 537ec88d05
commit b3b3d46696
26 changed files with 777 additions and 185 deletions

View File

@@ -35,10 +35,17 @@ interface ContentSeriesQueryRepository {
fun getKeywordList(seriesId: Long): List<String>
fun getSeriesContentMinMaxPrice(seriesId: Long): GetSeriesContentMinMaxPriceResponse
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 getOriginalAudioDramaTotalCount(memberId: Long, isAdult: Boolean): Int
fun getGenreList(isAdult: Boolean, memberId: Long): List<GetSeriesGenreListResponse>
fun findByCurationId(curationId: Long, memberId: Long, isAdult: Boolean): List<Series>
fun getOriginalAudioDramaList(
memberId: Long,
isAdult: Boolean,
contentType: ContentType,
offset: Long = 0,
limit: Long = 20
): List<Series>
fun getOriginalAudioDramaTotalCount(memberId: Long, isAdult: Boolean, contentType: ContentType): Int
fun getGenreList(isAdult: Boolean, memberId: Long, contentType: ContentType): List<GetSeriesGenreListResponse>
fun findByCurationId(curationId: Long, memberId: Long, isAdult: Boolean, contentType: ContentType): List<Series>
}
class ContentSeriesQueryRepositoryImpl(
@@ -144,7 +151,13 @@ class ContentSeriesQueryRepositoryImpl(
.fetch()
}
override fun getOriginalAudioDramaList(memberId: Long, isAdult: Boolean, offset: Long, limit: Long): List<Series> {
override fun getOriginalAudioDramaList(
memberId: Long,
isAdult: Boolean,
contentType: ContentType,
offset: Long,
limit: Long
): List<Series> {
val blockMemberCondition = blockMember.member.id.eq(member.id)
.and(blockMember.isActive.isTrue)
.and(blockMember.blockedMember.id.eq(memberId))
@@ -155,6 +168,18 @@ class ContentSeriesQueryRepositoryImpl(
if (!isAdult) {
where = where.and(series.isAdult.isFalse)
} else {
if (contentType != ContentType.ALL) {
where = where.and(
series.member.auth.gender.eq(
if (contentType == ContentType.MALE) {
0
} else {
1
}
)
)
}
}
return queryFactory
@@ -168,7 +193,7 @@ class ContentSeriesQueryRepositoryImpl(
.fetch()
}
override fun getOriginalAudioDramaTotalCount(memberId: Long, isAdult: Boolean): Int {
override fun getOriginalAudioDramaTotalCount(memberId: Long, isAdult: Boolean, contentType: ContentType): Int {
val blockMemberCondition = blockMember.member.id.eq(member.id)
.and(blockMember.isActive.isTrue)
.and(blockMember.blockedMember.id.eq(memberId))
@@ -179,6 +204,18 @@ class ContentSeriesQueryRepositoryImpl(
if (!isAdult) {
where = where.and(series.isAdult.isFalse)
} else {
if (contentType != ContentType.ALL) {
where = where.and(
series.member.auth.gender.eq(
if (contentType == ContentType.MALE) {
0
} else {
1
}
)
)
}
}
return queryFactory
@@ -191,7 +228,11 @@ class ContentSeriesQueryRepositoryImpl(
.size
}
override fun getGenreList(isAdult: Boolean, memberId: Long): List<GetSeriesGenreListResponse> {
override fun getGenreList(
isAdult: Boolean,
memberId: Long,
contentType: ContentType
): List<GetSeriesGenreListResponse> {
val blockMemberCondition = blockMember.member.id.eq(member.id)
.and(blockMember.isActive.isTrue)
.and(blockMember.blockedMember.id.eq(memberId))
@@ -209,6 +250,18 @@ class ContentSeriesQueryRepositoryImpl(
if (!isAdult) {
where = where.and(seriesGenre.isAdult.isFalse)
.and(series.isAdult.isFalse)
} else {
if (contentType != ContentType.ALL) {
where = where.and(
series.member.auth.gender.eq(
if (contentType == ContentType.MALE) {
0
} else {
1
}
)
)
}
}
return queryFactory
@@ -225,7 +278,12 @@ class ContentSeriesQueryRepositoryImpl(
.fetch()
}
override fun findByCurationId(curationId: Long, memberId: Long, isAdult: Boolean): List<Series> {
override fun findByCurationId(
curationId: Long,
memberId: Long,
isAdult: Boolean,
contentType: ContentType
): List<Series> {
val blockMemberCondition = blockMember.member.id.eq(member.id)
.and(blockMember.isActive.isTrue)
.and(blockMember.blockedMember.id.eq(memberId))
@@ -239,6 +297,12 @@ class ContentSeriesQueryRepositoryImpl(
if (!isAdult) {
where = where.and(series.isAdult.isFalse)
} else {
if (contentType != ContentType.ALL) {
where = where.and(
series.member.auth.gender.eq(if (contentType == ContentType.MALE) 0 else 1)
)
}
}
return queryFactory

View File

@@ -30,22 +30,23 @@ class ContentSeriesService(
@Value("\${cloud.aws.cloud-front.host}")
private val coverImageHost: String
) {
fun getOriginalAudioDramaTotalCount(memberId: Long, isAdult: Boolean): Int {
return repository.getOriginalAudioDramaTotalCount(memberId, isAdult)
fun getOriginalAudioDramaTotalCount(memberId: Long, isAdult: Boolean, contentType: ContentType): Int {
return repository.getOriginalAudioDramaTotalCount(memberId, isAdult, contentType)
}
fun getOriginalAudioDramaList(
memberId: Long,
isAdult: Boolean,
contentType: ContentType,
offset: Long = 0,
limit: Long = 20
): List<GetSeriesListResponse.SeriesListItem> {
val originalAudioDramaList = repository.getOriginalAudioDramaList(memberId, isAdult, offset, limit)
val originalAudioDramaList = repository.getOriginalAudioDramaList(memberId, isAdult, contentType, offset, limit)
return seriesToSeriesListItem(originalAudioDramaList, isAdult)
}
fun getGenreList(memberId: Long, isAdult: Boolean): List<GetSeriesGenreListResponse> {
return repository.getGenreList(memberId = memberId, isAdult = isAdult)
fun getGenreList(memberId: Long, isAdult: Boolean, contentType: ContentType): List<GetSeriesGenreListResponse> {
return repository.getGenreList(memberId = memberId, isAdult = isAdult, contentType = contentType)
}
fun getSeriesList(
@@ -191,9 +192,15 @@ class ContentSeriesService(
fun fetchSeriesByCurationId(
curationId: Long,
memberId: Long,
isAdult: Boolean
isAdult: Boolean,
contentType: ContentType
): List<GetSeriesListResponse.SeriesListItem> {
val seriesList = repository.findByCurationId(curationId = curationId, memberId = memberId, isAdult = isAdult)
val seriesList = repository.findByCurationId(
curationId = curationId,
memberId = memberId,
isAdult = isAdult,
contentType = contentType
)
return seriesToSeriesListItem(seriesList, isAdult)
}