Merge pull request 'test' (#260) from test into main

Reviewed-on: #260
This commit is contained in:
klaus 2025-02-18 18:13:25 +00:00
commit 9103d67cc1
10 changed files with 28 additions and 81 deletions

View File

@ -11,9 +11,6 @@ import kr.co.vividnext.sodalive.event.EventService
import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.Member
import kr.co.vividnext.sodalive.rank.RankingService import kr.co.vividnext.sodalive.rank.RankingService
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import java.time.DayOfWeek
import java.time.LocalDateTime
import java.time.temporal.TemporalAdjusters
@Service @Service
class AudioContentMainTabAsmrService( class AudioContentMainTabAsmrService(
@ -44,24 +41,6 @@ class AudioContentMainTabAsmrService(
limit = 10 limit = 10
) )
val currentDateTime = LocalDateTime.now()
val startDate = currentDateTime
.withHour(15)
.withMinute(0)
.withSecond(0)
.minusWeeks(1)
.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY))
val endDate = startDate
.plusDays(6)
val rankAsmrContentList = rankingService.getContentRanking(
memberId = memberId,
isAdult = isAdult,
startDate = startDate,
endDate = endDate,
theme = theme
)
val creatorList = repository.findCreatorByThemeContent( val creatorList = repository.findCreatorByThemeContent(
memberId = memberId, memberId = memberId,
theme = theme, theme = theme,
@ -95,7 +74,6 @@ class AudioContentMainTabAsmrService(
return GetContentMainTabAsmrResponse( return GetContentMainTabAsmrResponse(
contentBannerList = contentBannerList, contentBannerList = contentBannerList,
newAsmrContentList = newAsmrContentList, newAsmrContentList = newAsmrContentList,
rankAsmrContentList = rankAsmrContentList,
creatorList = creatorList, creatorList = creatorList,
salesCountRankContentList = salesCountRankContentList, salesCountRankContentList = salesCountRankContentList,
eventBannerList = eventBannerList, eventBannerList = eventBannerList,

View File

@ -11,7 +11,6 @@ data class GetContentMainTabAsmrResponse(
val tab: Long = 5, val tab: Long = 5,
val contentBannerList: List<GetAudioContentBannerResponse>, val contentBannerList: List<GetAudioContentBannerResponse>,
val newAsmrContentList: List<GetAudioContentMainItem>, val newAsmrContentList: List<GetAudioContentMainItem>,
val rankAsmrContentList: List<GetAudioContentRankingItem>,
val creatorList: List<ContentCreatorResponse>, val creatorList: List<ContentCreatorResponse>,
val salesCountRankContentList: List<GetAudioContentRankingItem>, val salesCountRankContentList: List<GetAudioContentRankingItem>,
val eventBannerList: GetEventResponse, val eventBannerList: GetEventResponse,

View File

@ -33,7 +33,7 @@ class AudioContentMainTabContentController(private val service: AudioContentMain
@GetMapping("/ranking") @GetMapping("/ranking")
fun getAudioContentRanking( fun getAudioContentRanking(
@RequestParam("sort-type", required = false) sortType: String? = "매출", @RequestParam("sort-type", required = false) sortType: String?,
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?,
pageable: Pageable pageable: Pageable
) = run { ) = run {

View File

@ -42,6 +42,17 @@ class AudioContentMainTabContentService(
// 새로운 단편 테마 // 새로운 단편 테마
val themeOfContentList = audioContentThemeRepository.getActiveThemeOfContent(isAdult = isAdult) val themeOfContentList = audioContentThemeRepository.getActiveThemeOfContent(isAdult = isAdult)
.filter {
it != "오디오북" &&
it != "모닝콜" &&
it != "알람" &&
it != "슬립콜" &&
it != "다시듣기" &&
it != "ASMR" &&
it != "릴레이" &&
it != "챌린지" &&
it != "자기소개"
}
// 새로운 단편 // 새로운 단편
val newContentList = audioContentRepository.findByTheme( val newContentList = audioContentRepository.findByTheme(
@ -75,7 +86,7 @@ class AudioContentMainTabContentService(
val contentRankCreatorList = rankingService.fetchCreatorBySellContentCountRankTop20( val contentRankCreatorList = rankingService.fetchCreatorBySellContentCountRankTop20(
memberId = member.id!!, memberId = member.id!!,
startDate = dailyRankingStartDate.minusDays(1), startDate = dailyRankingStartDate,
endDate = dailyRankingEndDate endDate = dailyRankingEndDate
) )
@ -130,7 +141,7 @@ class AudioContentMainTabContentService(
fun getAudioContentRanking( fun getAudioContentRanking(
memberId: Long, memberId: Long,
isAdult: Boolean, isAdult: Boolean,
sortType: String = "매출" sortType: String
): List<GetAudioContentRankingItem> { ): List<GetAudioContentRankingItem> {
val currentDateTime = LocalDateTime.now() val currentDateTime = LocalDateTime.now()
val dailyRankingStartDate = currentDateTime val dailyRankingStartDate = currentDateTime
@ -145,7 +156,8 @@ class AudioContentMainTabContentService(
memberId = memberId, memberId = memberId,
isAdult = isAdult, isAdult = isAdult,
startDate = dailyRankingStartDate, startDate = dailyRankingStartDate,
endDate = dailyRankingEndDate endDate = dailyRankingEndDate,
sortType = sortType
) )
} }

View File

@ -72,11 +72,6 @@ class AudioContentMainTabHomeService(
// 이벤트 배너 // 이벤트 배너
val eventBannerList = eventService.getEventList(isAdult = member.auth != null) val eventBannerList = eventService.getEventList(isAdult = member.auth != null)
/* 채널별 인기 콘텐츠
* - 콘텐츠를 4 이상 등록한 채널
* - 주간 콘텐츠 판매 개수 Top 20 채널
* - 해당 채널의 누적 판매 개수 Top 4
*/
val contentRankCreatorList = rankingService.fetchCreatorBySellContentCountRankTop20( val contentRankCreatorList = rankingService.fetchCreatorBySellContentCountRankTop20(
memberId = member.id!!, memberId = member.id!!,
startDate = startDate.minusDays(1), startDate = startDate.minusDays(1),

View File

@ -11,9 +11,6 @@ import kr.co.vividnext.sodalive.event.EventService
import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.Member
import kr.co.vividnext.sodalive.rank.RankingService import kr.co.vividnext.sodalive.rank.RankingService
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import java.time.DayOfWeek
import java.time.LocalDateTime
import java.time.temporal.TemporalAdjusters
@Service @Service
class AudioContentMainTabLiveReplayService( class AudioContentMainTabLiveReplayService(
@ -44,24 +41,6 @@ class AudioContentMainTabLiveReplayService(
limit = 10 limit = 10
) )
val currentDateTime = LocalDateTime.now()
val startDate = currentDateTime
.withHour(15)
.withMinute(0)
.withSecond(0)
.minusWeeks(1)
.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY))
val endDate = startDate
.plusDays(6)
val rankLiveReplayContentList = rankingService.getContentRanking(
memberId = memberId,
isAdult = isAdult,
startDate = startDate,
endDate = endDate,
theme = theme
)
val creatorList = repository.findCreatorByThemeContent( val creatorList = repository.findCreatorByThemeContent(
memberId = memberId, memberId = memberId,
theme = theme, theme = theme,
@ -95,7 +74,6 @@ class AudioContentMainTabLiveReplayService(
return GetContentMainTabLiveReplayResponse( return GetContentMainTabLiveReplayResponse(
contentBannerList = contentBannerList, contentBannerList = contentBannerList,
newLiveReplayContentList = newLiveReplayContentList, newLiveReplayContentList = newLiveReplayContentList,
rankLiveReplayContentList = rankLiveReplayContentList,
creatorList = creatorList, creatorList = creatorList,
salesCountRankContentList = salesCountRankContentList, salesCountRankContentList = salesCountRankContentList,
eventBannerList = eventBannerList, eventBannerList = eventBannerList,

View File

@ -11,7 +11,6 @@ data class GetContentMainTabLiveReplayResponse(
val tabId: Long = 6, val tabId: Long = 6,
val contentBannerList: List<GetAudioContentBannerResponse>, val contentBannerList: List<GetAudioContentBannerResponse>,
val newLiveReplayContentList: List<GetAudioContentMainItem>, val newLiveReplayContentList: List<GetAudioContentMainItem>,
val rankLiveReplayContentList: List<GetAudioContentRankingItem>,
val creatorList: List<ContentCreatorResponse>, val creatorList: List<ContentCreatorResponse>,
val salesCountRankContentList: List<GetAudioContentRankingItem>, val salesCountRankContentList: List<GetAudioContentRankingItem>,
val eventBannerList: GetEventResponse, val eventBannerList: GetEventResponse,

View File

@ -184,9 +184,7 @@ class AudioContentMainTabSeriesService(
val totalCount = rankingService.getCompleteSeriesRankingTotalCount( val totalCount = rankingService.getCompleteSeriesRankingTotalCount(
memberId = memberId, memberId = memberId,
isAdult = isAdult, isAdult = isAdult
startDate = monthlyRankingStartDate,
endDate = monthlyRankingEndDate
) )
val items = rankingService.getCompleteSeriesRanking( val items = rankingService.getCompleteSeriesRanking(

View File

@ -209,12 +209,7 @@ class RankingRepository(
.fetch() .fetch()
} }
fun getCompleteSeriesRankingTotalCount( fun getCompleteSeriesRankingTotalCount(memberId: Long, isAdult: Boolean): Int {
memberId: Long,
isAdult: Boolean,
startDate: LocalDateTime,
endDate: LocalDateTime
): Int {
val blockMemberCondition = blockMember.member.id.eq(member.id) val blockMemberCondition = blockMember.member.id.eq(member.id)
.and(blockMember.isActive.isTrue) .and(blockMember.isActive.isTrue)
.and(blockMember.blockedMember.id.eq(memberId)) .and(blockMember.blockedMember.id.eq(memberId))
@ -228,9 +223,6 @@ class RankingRepository(
.and(audioContent.duration.isNotNull) .and(audioContent.duration.isNotNull)
.and(audioContent.limited.isNull) .and(audioContent.limited.isNull)
.and(blockMember.id.isNull) .and(blockMember.id.isNull)
.and(order.isActive.isTrue)
.and(order.createdAt.goe(startDate))
.and(order.createdAt.lt(endDate))
if (!isAdult) { if (!isAdult) {
where = where.and(series.isAdult.isFalse) where = where.and(series.isAdult.isFalse)
@ -242,11 +234,9 @@ class RankingRepository(
.innerJoin(seriesContent.series, series) .innerJoin(seriesContent.series, series)
.innerJoin(seriesContent.content, audioContent) .innerJoin(seriesContent.content, audioContent)
.innerJoin(series.member, member) .innerJoin(series.member, member)
.leftJoin(order).on(audioContent.id.eq(order.audioContent.id))
.leftJoin(blockMember).on(blockMemberCondition) .leftJoin(blockMember).on(blockMemberCondition)
.where(where) .where(where)
.groupBy(series.id) .groupBy(series.id)
.orderBy(order.can.sum().desc())
.fetch() .fetch()
.size .size
} }
@ -263,6 +253,11 @@ class RankingRepository(
.and(blockMember.isActive.isTrue) .and(blockMember.isActive.isTrue)
.and(blockMember.blockedMember.id.eq(memberId)) .and(blockMember.blockedMember.id.eq(memberId))
val orderCondition = order.isActive.isTrue
.and(audioContent.id.eq(order.audioContent.id))
.and(order.createdAt.goe(startDate))
.and(order.createdAt.lt(endDate))
var where = series.isActive.isTrue var where = series.isActive.isTrue
.and(series.state.eq(SeriesState.COMPLETE)) .and(series.state.eq(SeriesState.COMPLETE))
.and(audioContent.isActive.isTrue) .and(audioContent.isActive.isTrue)
@ -272,9 +267,6 @@ class RankingRepository(
.and(audioContent.duration.isNotNull) .and(audioContent.duration.isNotNull)
.and(audioContent.limited.isNull) .and(audioContent.limited.isNull)
.and(blockMember.id.isNull) .and(blockMember.id.isNull)
.and(order.isActive.isTrue)
.and(order.createdAt.goe(startDate))
.and(order.createdAt.lt(endDate))
if (!isAdult) { if (!isAdult) {
where = where.and(series.isAdult.isFalse) where = where.and(series.isAdult.isFalse)
@ -286,11 +278,11 @@ class RankingRepository(
.innerJoin(seriesContent.series, series) .innerJoin(seriesContent.series, series)
.innerJoin(seriesContent.content, audioContent) .innerJoin(seriesContent.content, audioContent)
.innerJoin(series.member, member) .innerJoin(series.member, member)
.leftJoin(order).on(audioContent.id.eq(order.audioContent.id)) .leftJoin(order).on(orderCondition)
.leftJoin(blockMember).on(blockMemberCondition) .leftJoin(blockMember).on(blockMemberCondition)
.where(where) .where(where)
.groupBy(series.id) .groupBy(series.id)
.orderBy(order.can.sum().desc()) .orderBy(order.id.count().desc(), series.id.desc())
.offset(offset) .offset(offset)
.limit(limit) .limit(limit)
.fetch() .fetch()
@ -348,7 +340,7 @@ class RankingRepository(
val ordersCondition = order.audioContent.id.eq(audioContent.id) val ordersCondition = order.audioContent.id.eq(audioContent.id)
.and(order.isActive.isTrue) .and(order.isActive.isTrue)
.and(order.createdAt.goe(startDate)) .and(order.createdAt.goe(startDate))
.and(order.createdAt.lt(startDate)) .and(order.createdAt.lt(endDate))
val memberCondition = member.isActive.isTrue val memberCondition = member.isActive.isTrue
.and(member.role.eq(MemberRole.CREATOR)) .and(member.role.eq(MemberRole.CREATOR))

View File

@ -84,15 +84,11 @@ class RankingService(
fun getCompleteSeriesRankingTotalCount( fun getCompleteSeriesRankingTotalCount(
memberId: Long, memberId: Long,
isAdult: Boolean, isAdult: Boolean
startDate: LocalDateTime,
endDate: LocalDateTime
): Int { ): Int {
return repository.getCompleteSeriesRankingTotalCount( return repository.getCompleteSeriesRankingTotalCount(
memberId = memberId, memberId = memberId,
isAdult = isAdult, isAdult = isAdult
startDate = startDate,
endDate = endDate
) )
} }