| @@ -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, | ||||||
|   | |||||||
| @@ -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, | ||||||
|   | |||||||
| @@ -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 { | ||||||
|   | |||||||
| @@ -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 | ||||||
|         ) |         ) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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), | ||||||
|   | |||||||
| @@ -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, | ||||||
|   | |||||||
| @@ -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, | ||||||
|   | |||||||
| @@ -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( | ||||||
|   | |||||||
| @@ -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)) | ||||||
|   | |||||||
| @@ -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 |  | ||||||
|         ) |         ) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user