Compare commits
No commits in common. "72ee39612e20d2bd6e647fa7ca31fcfb67a5db04" and "51fd5408dcf63ed83eca25813eab87ce36388623" have entirely different histories.
72ee39612e
...
51fd5408dc
|
@ -1,22 +0,0 @@
|
||||||
package kr.co.vividnext.sodalive.explorer
|
|
||||||
|
|
||||||
import kr.co.vividnext.sodalive.member.Member
|
|
||||||
import javax.persistence.Entity
|
|
||||||
import javax.persistence.FetchType
|
|
||||||
import javax.persistence.GeneratedValue
|
|
||||||
import javax.persistence.GenerationType
|
|
||||||
import javax.persistence.Id
|
|
||||||
import javax.persistence.JoinColumn
|
|
||||||
import javax.persistence.OneToOne
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
data class CreatorRanking(
|
|
||||||
@Id
|
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
||||||
var id: Long? = null,
|
|
||||||
val ranking: Int
|
|
||||||
) {
|
|
||||||
@OneToOne(fetch = FetchType.LAZY)
|
|
||||||
@JoinColumn(name = "creator_id", nullable = false)
|
|
||||||
var member: Member? = null
|
|
||||||
}
|
|
|
@ -10,7 +10,6 @@ import kr.co.vividnext.sodalive.can.use.QUseCanCalculate.useCanCalculate
|
||||||
import kr.co.vividnext.sodalive.can.use.UseCanCalculateStatus
|
import kr.co.vividnext.sodalive.can.use.UseCanCalculateStatus
|
||||||
import kr.co.vividnext.sodalive.common.SodaException
|
import kr.co.vividnext.sodalive.common.SodaException
|
||||||
import kr.co.vividnext.sodalive.content.QAudioContent.audioContent
|
import kr.co.vividnext.sodalive.content.QAudioContent.audioContent
|
||||||
import kr.co.vividnext.sodalive.explorer.QCreatorRanking.creatorRanking
|
|
||||||
import kr.co.vividnext.sodalive.explorer.follower.GetFollowerListDto
|
import kr.co.vividnext.sodalive.explorer.follower.GetFollowerListDto
|
||||||
import kr.co.vividnext.sodalive.explorer.follower.QGetFollowerListDto
|
import kr.co.vividnext.sodalive.explorer.follower.QGetFollowerListDto
|
||||||
import kr.co.vividnext.sodalive.explorer.profile.ChannelNotice
|
import kr.co.vividnext.sodalive.explorer.profile.ChannelNotice
|
||||||
|
@ -159,6 +158,21 @@ class ExplorerQueryRepository(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getSubscriberGrowthRankingCreators(limit: Long): List<Member> {
|
||||||
|
return queryFactory
|
||||||
|
.selectFrom(member)
|
||||||
|
.join(member.follower, creatorFollowing)
|
||||||
|
.where(
|
||||||
|
member.role.eq(MemberRole.CREATOR)
|
||||||
|
.and(creatorFollowing.createdAt.goe(LocalDateTime.now().minusMonths(1)))
|
||||||
|
.and(creatorFollowing.isActive.isTrue)
|
||||||
|
)
|
||||||
|
.groupBy(member.id)
|
||||||
|
.orderBy(member.follower.size().desc())
|
||||||
|
.limit(limit)
|
||||||
|
.fetch()
|
||||||
|
}
|
||||||
|
|
||||||
fun getNewCreators(): List<Member> {
|
fun getNewCreators(): List<Member> {
|
||||||
return queryFactory
|
return queryFactory
|
||||||
.selectFrom(member)
|
.selectFrom(member)
|
||||||
|
@ -622,13 +636,4 @@ class ExplorerQueryRepository(
|
||||||
.where(member.id.eq(creatorId))
|
.where(member.id.eq(creatorId))
|
||||||
.fetchFirst()
|
.fetchFirst()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getCreatorRankings(): List<Member> {
|
|
||||||
return queryFactory
|
|
||||||
.select(member)
|
|
||||||
.from(creatorRanking)
|
|
||||||
.innerJoin(creatorRanking.member, member)
|
|
||||||
.orderBy(creatorRanking.ranking.asc())
|
|
||||||
.fetch()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,8 +24,6 @@ import org.springframework.stereotype.Service
|
||||||
import org.springframework.transaction.annotation.Transactional
|
import org.springframework.transaction.annotation.Transactional
|
||||||
import java.time.DayOfWeek
|
import java.time.DayOfWeek
|
||||||
import java.time.LocalDate
|
import java.time.LocalDate
|
||||||
import java.time.LocalDateTime
|
|
||||||
import java.time.format.DateTimeFormatter
|
|
||||||
import java.time.temporal.TemporalAdjusters
|
import java.time.temporal.TemporalAdjusters
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@ -44,9 +42,9 @@ class ExplorerService(
|
||||||
fun getExplorer(member: Member, growthRankingCreatorsLimit: Long = 20): GetExplorerResponse {
|
fun getExplorer(member: Member, growthRankingCreatorsLimit: Long = 20): GetExplorerResponse {
|
||||||
val sections = mutableListOf<GetExplorerSectionResponse>()
|
val sections = mutableListOf<GetExplorerSectionResponse>()
|
||||||
|
|
||||||
// 인기 크리에이터
|
// 인기 급상승중 (subscriberGrowthRankingCreators)
|
||||||
val creatorRankings = queryRepository
|
val growthRankingCreators = queryRepository
|
||||||
.getCreatorRankings()
|
.getSubscriberGrowthRankingCreators(limit = growthRankingCreatorsLimit)
|
||||||
.asSequence()
|
.asSequence()
|
||||||
.filter { !memberService.isBlocked(blockedMemberId = member.id!!, memberId = it.id!!) }
|
.filter { !memberService.isBlocked(blockedMemberId = member.id!!, memberId = it.id!!) }
|
||||||
.map {
|
.map {
|
||||||
|
@ -67,25 +65,13 @@ class ExplorerService(
|
||||||
}
|
}
|
||||||
.toList()
|
.toList()
|
||||||
|
|
||||||
val currentDateTime = LocalDateTime.now()
|
val growthRankingSection = GetExplorerSectionResponse(
|
||||||
val lastMonday = currentDateTime
|
title = "인기 급상승중",
|
||||||
.minusWeeks(1)
|
|
||||||
.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY))
|
|
||||||
val lastSunday = lastMonday
|
|
||||||
.plusDays(6)
|
|
||||||
|
|
||||||
val formatter = DateTimeFormatter.ofPattern("MM월 dd일")
|
|
||||||
val formattedLastMonday = lastMonday.format(formatter)
|
|
||||||
val formattedLastSunday = lastSunday.format(formatter)
|
|
||||||
|
|
||||||
val creatorRankingSection = GetExplorerSectionResponse(
|
|
||||||
title = "인기 크리에이터",
|
|
||||||
coloredTitle = "인기",
|
coloredTitle = "인기",
|
||||||
color = "FF5C49",
|
color = "FF5C49",
|
||||||
desc = "$formattedLastMonday~$formattedLastSunday\n※ 인기 크리에이터의 순위는 매주 업데이트 됩니다.",
|
creators = growthRankingCreators
|
||||||
creators = creatorRankings
|
|
||||||
)
|
)
|
||||||
sections.add(creatorRankingSection)
|
sections.add(growthRankingSection)
|
||||||
|
|
||||||
// 새로 시작 (newCreators)
|
// 새로 시작 (newCreators)
|
||||||
val newCreators = queryRepository
|
val newCreators = queryRepository
|
||||||
|
|
|
@ -6,7 +6,6 @@ data class GetExplorerSectionResponse(
|
||||||
val title: String,
|
val title: String,
|
||||||
val coloredTitle: String?,
|
val coloredTitle: String?,
|
||||||
val color: String?,
|
val color: String?,
|
||||||
val desc: String? = null,
|
|
||||||
val creators: List<GetExplorerSectionCreatorResponse>
|
val creators: List<GetExplorerSectionCreatorResponse>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue