콘텐츠 메인 콘텐츠 탭 - 채널별 추천 단편

- 좋아요 개수를 기준으로 내림차순 정렬하도록 수정
This commit is contained in:
Klaus 2025-02-25 23:42:23 +09:00
parent 2e05b25c41
commit 4b1c2e36ed
4 changed files with 49 additions and 4 deletions

View File

@ -89,8 +89,8 @@ class AudioContentMainTabContentService(
endDate = dailyRankingEndDate endDate = dailyRankingEndDate
) )
val salesCountRankContentList = if (contentRankCreatorList.isNotEmpty()) { val likeCountRankContentList = if (contentRankCreatorList.isNotEmpty()) {
rankingService.fetchCreatorContentBySalesCountTop4( rankingService.fetchCreatorContentByLikeCountTop4(
creatorId = contentRankCreatorList[0].creatorId, creatorId = contentRankCreatorList[0].creatorId,
isAdult = member.auth != null isAdult = member.auth != null
) )
@ -129,7 +129,8 @@ class AudioContentMainTabContentService(
rankSortTypeList = listOf("매출", "댓글", "좋아요"), rankSortTypeList = listOf("매출", "댓글", "좋아요"),
rankContentList = rankContentList, rankContentList = rankContentList,
contentRankCreatorList = contentRankCreatorList, contentRankCreatorList = contentRankCreatorList,
salesCountRankContentList = salesCountRankContentList, likeCountRankContentList = likeCountRankContentList,
salesCountRankContentList = likeCountRankContentList,
eventBannerList = eventBannerList, eventBannerList = eventBannerList,
tagList = tagList, tagList = tagList,
tagCurationContentList = tagCurationContentList, tagCurationContentList = tagCurationContentList,
@ -195,7 +196,7 @@ class AudioContentMainTabContentService(
} }
fun getPopularContentByCreator(creatorId: Long, isAdult: Boolean): List<GetAudioContentRankingItem> { fun getPopularContentByCreator(creatorId: Long, isAdult: Boolean): List<GetAudioContentRankingItem> {
return rankingService.fetchCreatorContentBySalesCountTop4( return rankingService.fetchCreatorContentByLikeCountTop4(
creatorId = creatorId, creatorId = creatorId,
isAdult = isAdult isAdult = isAdult
) )

View File

@ -15,6 +15,7 @@ data class GetContentMainTabContentResponse(
val rankSortTypeList: List<String>, val rankSortTypeList: List<String>,
val rankContentList: List<GetAudioContentRankingItem>, val rankContentList: List<GetAudioContentRankingItem>,
val contentRankCreatorList: List<ContentCreatorResponse>, val contentRankCreatorList: List<ContentCreatorResponse>,
val likeCountRankContentList: List<GetAudioContentRankingItem>,
val salesCountRankContentList: List<GetAudioContentRankingItem>, val salesCountRankContentList: List<GetAudioContentRankingItem>,
val eventBannerList: GetEventResponse, val eventBannerList: GetEventResponse,
val tagList: List<String>, val tagList: List<String>,

View File

@ -537,4 +537,43 @@ class RankingRepository(
.limit(4) .limit(4)
.fetch() .fetch()
} }
fun fetchCreatorContentByLikeCountTop4(creatorId: Long, isAdult: Boolean): List<GetAudioContentRankingItem> {
var where = member.isActive.isTrue
.and(member.id.eq(creatorId))
.and(member.role.eq(MemberRole.CREATOR))
.and(audioContent.isActive.isTrue)
.and(audioContent.duration.isNotNull)
.and(audioContent.limited.isNull)
.and(audioContentLike.isActive.isTrue)
if (!isAdult) {
where = where.and(audioContent.isAdult.isFalse)
}
return queryFactory
.select(
QGetAudioContentRankingItem(
audioContent.id,
audioContent.title,
audioContent.coverImage.prepend("/").prepend(imageHost),
audioContentTheme.theme,
audioContent.price,
audioContent.duration,
member.id,
member.nickname,
member.profileImage.prepend("/").prepend(imageHost)
)
)
.from(audioContentLike)
.innerJoin(audioContentLike.audioContent, audioContent)
.innerJoin(audioContent.theme, audioContentTheme)
.innerJoin(audioContent.member, member)
.where(where)
.groupBy(audioContent.id)
.orderBy(audioContentLike.id.count().desc())
.offset(0)
.limit(4)
.fetch()
}
} }

View File

@ -193,6 +193,10 @@ class RankingService(
return repository.fetchCreatorContentBySalesCountTop4(creatorId, isAdult, theme) return repository.fetchCreatorContentBySalesCountTop4(creatorId, isAdult, theme)
} }
fun fetchCreatorContentByLikeCountTop4(creatorId: Long, isAdult: Boolean): List<GetAudioContentRankingItem> {
return repository.fetchCreatorContentByLikeCountTop4(creatorId, isAdult)
}
fun fetchCreatorBySeriesRevenueRankTop20( fun fetchCreatorBySeriesRevenueRankTop20(
memberId: Long, memberId: Long,
startDate: LocalDateTime, startDate: LocalDateTime,