Compare commits

..

4 Commits

Author SHA1 Message Date
Klaus 39eb3d48a8 콘텐츠 메인 시리즈 탭 - 새로운 시리즈
- 크리에이터 프로필 이미지 추가
2025-02-13 01:20:18 +09:00
Klaus a6e949bdd6 콘텐츠 메인 시리즈 탭 - 장르별 추천 시리즈 정렬 수정
- 판매 캔 -> 판매 개수
2025-02-12 23:48:41 +09:00
Klaus 63f952d390 콘텐츠 메인 시리즈 탭
- 차단 당한 유저는 오리지널 오디오 드라마가 조회되지 않도록 수정
2025-02-12 19:54:11 +09:00
Klaus 7e9cb556d0 시리즈 리스트
- 콘텐츠가 1개 이상 등록된 시리즈만 조회
2025-02-12 19:27:52 +09:00
6 changed files with 29 additions and 13 deletions

View File

@ -7,5 +7,6 @@ data class GetRecommendSeriesListResponse @QueryProjection constructor(
val title: String,
val imageUrl: String,
val creatorId: Long,
val creatorNickname: String
val creatorNickname: String,
val creatorProfileImageUrl: String
)

View File

@ -30,7 +30,8 @@ class RecommendSeriesRepository(
series.title,
recommendSeries.imagePath.prepend("/").prepend(imageHost),
member.id,
member.nickname
member.nickname,
member.profileImage.prepend("/").prepend(imageHost)
)
)
.from(recommendSeries)
@ -57,7 +58,8 @@ class RecommendSeriesRepository(
series.title,
recommendSeries.imagePath.prepend("/").prepend(imageHost),
member.id,
member.nickname
member.nickname,
member.profileImage.prepend("/").prepend(imageHost)
)
)
.from(recommendSeries)

View File

@ -23,15 +23,17 @@ class AudioContentMainTabSeriesService(
) {
fun fetchData(member: Member): GetContentMainTabSeriesResponse {
val isAdult = member.auth != null
val memberId = member.id!!
// 메인 배너 (시리즈)
val contentBannerList = bannerService.getBannerList(
tabId = 2,
memberId = member.id!!,
memberId = memberId,
isAdult = isAdult
)
val originalAudioDrama = seriesService.getOriginalAudioDramaList(
memberId = memberId,
isAdult = isAdult,
offset = 0,
limit = 20
@ -48,7 +50,7 @@ class AudioContentMainTabSeriesService(
.plusDays(1)
val rankSeriesList = rankingService.getSeriesRanking(
memberId = member.id!!,
memberId = memberId,
isAdult = isAdult,
startDate = dailyRankingStartDate,
endDate = dailyRankingEndDate
@ -60,7 +62,7 @@ class AudioContentMainTabSeriesService(
// 장르별 추천 시리즈
val recommendSeriesList = if (genreList.isNotEmpty()) {
rankingService.getSeriesAllRankingByGenre(
memberId = member.id!!,
memberId = memberId,
isAdult = isAdult,
genreId = genreList[0].id
)
@ -82,7 +84,7 @@ class AudioContentMainTabSeriesService(
.plusMonths(1)
val rankCompleteSeriesList = rankingService.getCompleteSeriesRanking(
memberId = member.id!!,
memberId = memberId,
isAdult = isAdult,
startDate = monthlyRankingStartDate,
endDate = monthlyRankingEndDate
@ -98,7 +100,7 @@ class AudioContentMainTabSeriesService(
.plusDays(6)
val seriesRankCreatorList = rankingService.fetchCreatorBySeriesRevenueRankTop20(
memberId = member.id!!,
memberId = memberId,
startDate = startDate.minusDays(1),
endDate = endDate
)
@ -122,7 +124,7 @@ class AudioContentMainTabSeriesService(
title = it.title,
items = seriesService.fetchSeriesByCurationId(
curationId = it.id!!,
memberId = member.id!!,
memberId = memberId,
isAdult = isAdult
)
)

View File

@ -35,7 +35,7 @@ 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(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 getGenreList(isAdult: Boolean): List<GetSeriesGenreListResponse>
fun findByCurationId(curationId: Long, memberId: Long, isAdult: Boolean): List<Series>
}
@ -143,9 +143,14 @@ class ContentSeriesQueryRepositoryImpl(
.fetch()
}
override fun getOriginalAudioDramaList(isAdult: Boolean, offset: Long, limit: Long): List<Series> {
override fun getOriginalAudioDramaList(memberId: Long, isAdult: Boolean, offset: Long, limit: Long): List<Series> {
val blockMemberCondition = blockMember.member.id.eq(member.id)
.and(blockMember.isActive.isTrue)
.and(blockMember.blockedMember.id.eq(memberId))
var where = series.isOriginal.isTrue
.and(series.isActive.isTrue)
.and(blockMember.id.isNull)
if (!isAdult) {
where = where.and(series.isAdult.isFalse)
@ -153,6 +158,8 @@ class ContentSeriesQueryRepositoryImpl(
return queryFactory
.selectFrom(series)
.innerJoin(series.member, member)
.leftJoin(blockMember).on(blockMemberCondition)
.where(where)
.orderBy(Expressions.numberTemplate(Double::class.java, "function('rand')").asc())
.offset(offset)

View File

@ -31,11 +31,12 @@ class ContentSeriesService(
private val coverImageHost: String
) {
fun getOriginalAudioDramaList(
memberId: Long,
isAdult: Boolean,
offset: Long = 0,
limit: Long = 20
): List<GetSeriesListResponse.SeriesListItem> {
val originalAudioDramaList = repository.getOriginalAudioDramaList(isAdult, offset, limit)
val originalAudioDramaList = repository.getOriginalAudioDramaList(memberId, isAdult, offset, limit)
return seriesToSeriesListItem(originalAudioDramaList, isAdult)
}
@ -219,6 +220,9 @@ class ContentSeriesService(
it
}
.filter {
it.numberOfContent > 0
}
.map {
val nowDateTime = LocalDateTime.now()

View File

@ -289,7 +289,7 @@ class RankingRepository(
.where(where)
.groupBy(series.id)
.orderBy(
order.can.sum().desc(),
order.id.countDistinct().desc(),
Expressions.numberTemplate(Double::class.java, "function('rand')").asc()
)
.offset(0)