Compare commits
No commits in common. "f00ea03fad7b7ed54c782d67b2a68ec44112df03" and "f22e7b9ad12a366c0d5d49e6b11e644d2fd1c0b7" have entirely different histories.
f00ea03fad
...
f22e7b9ad1
|
@ -18,11 +18,13 @@ class AuditionController(private val service: AuditionService) {
|
||||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?,
|
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?,
|
||||||
pageable: Pageable
|
pageable: Pageable
|
||||||
) = run {
|
) = run {
|
||||||
|
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||||
|
|
||||||
ApiResponse.ok(
|
ApiResponse.ok(
|
||||||
service.getAuditionList(
|
service.getAuditionList(
|
||||||
offset = pageable.offset,
|
offset = pageable.offset,
|
||||||
limit = pageable.pageSize.toLong(),
|
limit = pageable.pageSize.toLong(),
|
||||||
isAdult = member?.auth != null
|
isAdult = member.auth != null
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,6 @@ import kr.co.vividnext.sodalive.jwt.JwtFilter
|
||||||
import kr.co.vividnext.sodalive.jwt.TokenProvider
|
import kr.co.vividnext.sodalive.jwt.TokenProvider
|
||||||
import org.springframework.context.annotation.Bean
|
import org.springframework.context.annotation.Bean
|
||||||
import org.springframework.context.annotation.Configuration
|
import org.springframework.context.annotation.Configuration
|
||||||
import org.springframework.http.HttpMethod
|
|
||||||
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity
|
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity
|
||||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity
|
||||||
import org.springframework.security.config.annotation.web.builders.WebSecurity
|
import org.springframework.security.config.annotation.web.builders.WebSecurity
|
||||||
|
@ -75,16 +74,6 @@ class SecurityConfig(
|
||||||
.antMatchers("/stplat/terms_of_service").permitAll()
|
.antMatchers("/stplat/terms_of_service").permitAll()
|
||||||
.antMatchers("/stplat/privacy_policy").permitAll()
|
.antMatchers("/stplat/privacy_policy").permitAll()
|
||||||
.antMatchers("/charge/ads").permitAll()
|
.antMatchers("/charge/ads").permitAll()
|
||||||
.antMatchers("/v2/audio-content/main/home").permitAll()
|
|
||||||
.antMatchers("/v2/audio-content/main/home/popular-content-by-creator").permitAll()
|
|
||||||
.antMatchers("/v2/audio-content/main/home/content/ranking").permitAll()
|
|
||||||
.antMatchers(HttpMethod.GET, "/faq").permitAll()
|
|
||||||
.antMatchers(HttpMethod.GET, "/faq/category").permitAll()
|
|
||||||
.antMatchers("/audition").permitAll()
|
|
||||||
.antMatchers("/live/recommend/channel").permitAll()
|
|
||||||
.antMatchers(HttpMethod.GET, "/live/room").permitAll()
|
|
||||||
.antMatchers(HttpMethod.GET, "/event").permitAll()
|
|
||||||
.antMatchers(HttpMethod.GET, "/live/recommend").permitAll()
|
|
||||||
.anyRequest().authenticated()
|
.anyRequest().authenticated()
|
||||||
.and()
|
.and()
|
||||||
.build()
|
.build()
|
||||||
|
|
|
@ -184,6 +184,8 @@ class AudioContentController(private val service: AudioContentService) {
|
||||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?,
|
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?,
|
||||||
pageable: Pageable
|
pageable: Pageable
|
||||||
) = run {
|
) = run {
|
||||||
|
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||||
|
|
||||||
val currentDateTime = LocalDateTime.now()
|
val currentDateTime = LocalDateTime.now()
|
||||||
val startDate = currentDateTime
|
val startDate = currentDateTime
|
||||||
.withHour(15)
|
.withHour(15)
|
||||||
|
@ -196,7 +198,7 @@ class AudioContentController(private val service: AudioContentService) {
|
||||||
|
|
||||||
ApiResponse.ok(
|
ApiResponse.ok(
|
||||||
service.getAudioContentRanking(
|
service.getAudioContentRanking(
|
||||||
isAdult = member?.auth != null && (isAdultContentVisible ?: true),
|
isAdult = member.auth != null && (isAdultContentVisible ?: true),
|
||||||
contentType = contentType ?: ContentType.ALL,
|
contentType = contentType ?: ContentType.ALL,
|
||||||
startDate = startDate,
|
startDate = startDate,
|
||||||
endDate = endDate,
|
endDate = endDate,
|
||||||
|
|
|
@ -13,12 +13,12 @@ class AudioContentBannerService(
|
||||||
@Value("\${cloud.aws.cloud-front.host}")
|
@Value("\${cloud.aws.cloud-front.host}")
|
||||||
private val imageHost: String
|
private val imageHost: String
|
||||||
) {
|
) {
|
||||||
fun getBannerList(tabId: Long, memberId: Long?, isAdult: Boolean): List<GetAudioContentBannerResponse> {
|
fun getBannerList(tabId: Long, memberId: Long, isAdult: Boolean): List<GetAudioContentBannerResponse> {
|
||||||
return repository.getAudioContentMainBannerList(tabId, isAdult)
|
return repository.getAudioContentMainBannerList(tabId, isAdult)
|
||||||
.filter {
|
.filter {
|
||||||
if (it.type == AudioContentBannerType.CREATOR && it.creator != null && memberId != null) {
|
if (it.type == AudioContentBannerType.CREATOR && it.creator != null) {
|
||||||
!blockMemberRepository.isBlocked(blockedMemberId = memberId, memberId = it.creator!!.id!!)
|
!blockMemberRepository.isBlocked(blockedMemberId = memberId, memberId = it.creator!!.id!!)
|
||||||
} else if (it.type == AudioContentBannerType.SERIES && it.series != null && memberId != null) {
|
} else if (it.type == AudioContentBannerType.SERIES && it.series != null) {
|
||||||
!blockMemberRepository.isBlocked(blockedMemberId = memberId, memberId = it.series!!.member!!.id!!)
|
!blockMemberRepository.isBlocked(blockedMemberId = memberId, memberId = it.series!!.member!!.id!!)
|
||||||
} else {
|
} else {
|
||||||
true
|
true
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package kr.co.vividnext.sodalive.content.main.tab.home
|
package kr.co.vividnext.sodalive.content.main.tab.home
|
||||||
|
|
||||||
import kr.co.vividnext.sodalive.common.ApiResponse
|
import kr.co.vividnext.sodalive.common.ApiResponse
|
||||||
|
import kr.co.vividnext.sodalive.common.SodaException
|
||||||
import kr.co.vividnext.sodalive.content.ContentType
|
import kr.co.vividnext.sodalive.content.ContentType
|
||||||
import kr.co.vividnext.sodalive.member.Member
|
import kr.co.vividnext.sodalive.member.Member
|
||||||
import org.springframework.security.core.annotation.AuthenticationPrincipal
|
import org.springframework.security.core.annotation.AuthenticationPrincipal
|
||||||
|
@ -18,6 +19,8 @@ class AudioContentMainTabHomeController(private val service: AudioContentMainTab
|
||||||
@RequestParam("contentType", required = false) contentType: ContentType? = null,
|
@RequestParam("contentType", required = false) contentType: ContentType? = null,
|
||||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
||||||
) = run {
|
) = run {
|
||||||
|
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||||
|
|
||||||
ApiResponse.ok(
|
ApiResponse.ok(
|
||||||
service.fetchData(
|
service.fetchData(
|
||||||
isAdultContentVisible = isAdultContentVisible ?: true,
|
isAdultContentVisible = isAdultContentVisible ?: true,
|
||||||
|
@ -34,29 +37,14 @@ class AudioContentMainTabHomeController(private val service: AudioContentMainTab
|
||||||
@RequestParam("contentType", required = false) contentType: ContentType? = null,
|
@RequestParam("contentType", required = false) contentType: ContentType? = null,
|
||||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
||||||
) = run {
|
) = run {
|
||||||
|
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||||
|
|
||||||
ApiResponse.ok(
|
ApiResponse.ok(
|
||||||
service.getPopularContentByCreator(
|
service.getPopularContentByCreator(
|
||||||
creatorId = creatorId,
|
creatorId = creatorId,
|
||||||
isAdult = member?.auth != null && (isAdultContentVisible ?: true),
|
isAdult = member.auth != null && (isAdultContentVisible ?: true),
|
||||||
contentType = contentType ?: ContentType.ALL
|
contentType = contentType ?: ContentType.ALL
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/content/ranking")
|
|
||||||
fun getContentRanking(
|
|
||||||
@RequestParam("sort-type", required = false) sortType: String? = "매출",
|
|
||||||
@RequestParam("isAdultContentVisible", required = false) isAdultContentVisible: Boolean? = null,
|
|
||||||
@RequestParam("contentType", required = false) contentType: ContentType? = null,
|
|
||||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
|
||||||
) = run {
|
|
||||||
ApiResponse.ok(
|
|
||||||
service.getContentRanking(
|
|
||||||
sortType = sortType ?: "매출",
|
|
||||||
isAdultContentVisible = isAdultContentVisible ?: true,
|
|
||||||
contentType = contentType ?: ContentType.ALL,
|
|
||||||
member
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ class AudioContentMainTabHomeService(
|
||||||
fun fetchData(
|
fun fetchData(
|
||||||
isAdultContentVisible: Boolean,
|
isAdultContentVisible: Boolean,
|
||||||
contentType: ContentType,
|
contentType: ContentType,
|
||||||
member: Member?
|
member: Member
|
||||||
): GetContentMainTabHomeResponse {
|
): GetContentMainTabHomeResponse {
|
||||||
// 주간 랭킹 기간
|
// 주간 랭킹 기간
|
||||||
val currentDateTime = LocalDateTime.now()
|
val currentDateTime = LocalDateTime.now()
|
||||||
|
@ -42,7 +42,7 @@ class AudioContentMainTabHomeService(
|
||||||
val formattedLastMonday = startDate.format(startDateFormatter)
|
val formattedLastMonday = startDate.format(startDateFormatter)
|
||||||
val formattedLastSunday = endDate.format(endDateFormatter)
|
val formattedLastSunday = endDate.format(endDateFormatter)
|
||||||
|
|
||||||
val isAdult = member?.auth != null && isAdultContentVisible
|
val isAdult = member.auth != null && isAdultContentVisible
|
||||||
|
|
||||||
// 최근 공지사항
|
// 최근 공지사항
|
||||||
val latestNotice = noticeService.getLatestNotice()
|
val latestNotice = noticeService.getLatestNotice()
|
||||||
|
@ -50,19 +50,19 @@ class AudioContentMainTabHomeService(
|
||||||
// 메인 배너 (홈)
|
// 메인 배너 (홈)
|
||||||
val contentBannerList = bannerService.getBannerList(
|
val contentBannerList = bannerService.getBannerList(
|
||||||
tabId = 1,
|
tabId = 1,
|
||||||
memberId = member?.id,
|
memberId = member.id!!,
|
||||||
isAdult = isAdult
|
isAdult = isAdult
|
||||||
)
|
)
|
||||||
|
|
||||||
// 인기 크리에이터
|
// 인기 크리에이터
|
||||||
val rankCreatorList = rankingService.getCreatorRanking(
|
val rankCreatorList = rankingService.getCreatorRanking(
|
||||||
memberId = member?.id,
|
memberId = member.id!!,
|
||||||
rankingDate = "$formattedLastMonday ~ $formattedLastSunday"
|
rankingDate = "$formattedLastMonday ~ $formattedLastSunday"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 인기 시리즈
|
// 인기 시리즈
|
||||||
val rankSeriesList = rankingService.getSeriesRanking(
|
val rankSeriesList = rankingService.getSeriesRanking(
|
||||||
memberId = member?.id,
|
memberId = member.id!!,
|
||||||
isAdult = isAdult,
|
isAdult = isAdult,
|
||||||
contentType = contentType,
|
contentType = contentType,
|
||||||
startDate = startDate.minusDays(1),
|
startDate = startDate.minusDays(1),
|
||||||
|
@ -71,7 +71,7 @@ class AudioContentMainTabHomeService(
|
||||||
|
|
||||||
// 인기 콘텐츠
|
// 인기 콘텐츠
|
||||||
val rankContentList = rankingService.getContentRanking(
|
val rankContentList = rankingService.getContentRanking(
|
||||||
memberId = member?.id,
|
memberId = member.id!!,
|
||||||
isAdult = isAdult,
|
isAdult = isAdult,
|
||||||
contentType = contentType,
|
contentType = contentType,
|
||||||
startDate = startDate.minusDays(1),
|
startDate = startDate.minusDays(1),
|
||||||
|
@ -82,7 +82,7 @@ class AudioContentMainTabHomeService(
|
||||||
val eventBannerList = eventService.getEventList(isAdult = isAdult)
|
val eventBannerList = eventService.getEventList(isAdult = isAdult)
|
||||||
|
|
||||||
val contentRankCreatorList = rankingService.fetchCreatorBySellContentCountRankTop20(
|
val contentRankCreatorList = rankingService.fetchCreatorBySellContentCountRankTop20(
|
||||||
memberId = member?.id,
|
memberId = member.id!!,
|
||||||
isAdult = isAdult,
|
isAdult = isAdult,
|
||||||
contentType = contentType,
|
contentType = contentType,
|
||||||
startDate = startDate.minusDays(1),
|
startDate = startDate.minusDays(1),
|
||||||
|
@ -123,32 +123,4 @@ class AudioContentMainTabHomeService(
|
||||||
contentType = contentType
|
contentType = contentType
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getContentRanking(
|
|
||||||
sortType: String,
|
|
||||||
isAdultContentVisible: Boolean,
|
|
||||||
contentType: ContentType,
|
|
||||||
member: Member?
|
|
||||||
): List<GetAudioContentRankingItem> {
|
|
||||||
val isAdult = member?.auth != null && isAdultContentVisible
|
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
return rankingService.getContentRanking(
|
|
||||||
memberId = member?.id,
|
|
||||||
isAdult = isAdult,
|
|
||||||
contentType = contentType,
|
|
||||||
startDate = startDate.minusDays(1),
|
|
||||||
endDate = endDate,
|
|
||||||
sortType = sortType
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ class FaqController(private val service: FaqService) {
|
||||||
|
|
||||||
@DeleteMapping("/{id}")
|
@DeleteMapping("/{id}")
|
||||||
@PreAuthorize("hasRole('ADMIN')")
|
@PreAuthorize("hasRole('ADMIN')")
|
||||||
fun deleteFaq(@PathVariable id: Long) = ApiResponse.ok(service.delete(id), "삭제되었습니다.")
|
fun deleteCan(@PathVariable id: Long) = ApiResponse.ok(service.delete(id), "삭제되었습니다.")
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
fun getFaqList(@RequestParam("category") category: String) = ApiResponse.ok(service.getFaqList(category))
|
fun getFaqList(@RequestParam("category") category: String) = ApiResponse.ok(service.getFaqList(category))
|
||||||
|
|
|
@ -16,6 +16,8 @@ class LiveRecommendController(private val service: LiveRecommendService) {
|
||||||
fun getRecommendLive(
|
fun getRecommendLive(
|
||||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
||||||
) = run {
|
) = run {
|
||||||
|
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||||
|
|
||||||
ApiResponse.ok(service.getRecommendLive(member))
|
ApiResponse.ok(service.getRecommendLive(member))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,6 +25,8 @@ class LiveRecommendController(private val service: LiveRecommendService) {
|
||||||
fun getRecommendChannelList(
|
fun getRecommendChannelList(
|
||||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
||||||
) = run {
|
) = run {
|
||||||
|
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||||
|
|
||||||
ApiResponse.ok(service.getRecommendChannelList(member))
|
ApiResponse.ok(service.getRecommendChannelList(member))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ class LiveRecommendRepository(
|
||||||
private val cloudFrontHost: String
|
private val cloudFrontHost: String
|
||||||
) {
|
) {
|
||||||
fun getRecommendLive(
|
fun getRecommendLive(
|
||||||
|
memberId: Long,
|
||||||
isBlocked: (Long) -> Boolean,
|
isBlocked: (Long) -> Boolean,
|
||||||
isAdult: Boolean
|
isAdult: Boolean
|
||||||
): List<GetRecommendLiveResponse> {
|
): List<GetRecommendLiveResponse> {
|
||||||
|
@ -50,6 +51,7 @@ class LiveRecommendRepository(
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getOnAirRecommendChannelList(
|
fun getOnAirRecommendChannelList(
|
||||||
|
memberId: Long,
|
||||||
isBlocked: (Long) -> Boolean,
|
isBlocked: (Long) -> Boolean,
|
||||||
isCreator: Boolean,
|
isCreator: Boolean,
|
||||||
isAdult: Boolean
|
isAdult: Boolean
|
||||||
|
@ -93,6 +95,7 @@ class LiveRecommendRepository(
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getRecommendChannelList(
|
fun getRecommendChannelList(
|
||||||
|
memberId: Long,
|
||||||
withOutCreatorList: List<Long>,
|
withOutCreatorList: List<Long>,
|
||||||
limit: Long,
|
limit: Long,
|
||||||
isBlocked: (Long) -> Boolean
|
isBlocked: (Long) -> Boolean
|
||||||
|
|
|
@ -12,30 +12,20 @@ class LiveRecommendService(
|
||||||
private val blockMemberRepository: BlockMemberRepository
|
private val blockMemberRepository: BlockMemberRepository
|
||||||
) {
|
) {
|
||||||
|
|
||||||
fun getRecommendLive(member: Member?): List<GetRecommendLiveResponse> {
|
fun getRecommendLive(member: Member): List<GetRecommendLiveResponse> {
|
||||||
return repository.getRecommendLive(
|
return repository.getRecommendLive(
|
||||||
isBlocked = {
|
memberId = member.id!!,
|
||||||
if (member != null) {
|
isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) },
|
||||||
blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it)
|
isAdult = member.auth != null
|
||||||
} else {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
isAdult = member?.auth != null
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getRecommendChannelList(member: Member?): List<GetRecommendChannelResponse> {
|
fun getRecommendChannelList(member: Member): List<GetRecommendChannelResponse> {
|
||||||
val onAirChannelList = repository.getOnAirRecommendChannelList(
|
val onAirChannelList = repository.getOnAirRecommendChannelList(
|
||||||
isBlocked = {
|
member.id!!,
|
||||||
if (member != null) {
|
isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) },
|
||||||
blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it)
|
isCreator = member.role == MemberRole.CREATOR,
|
||||||
} else {
|
isAdult = member.auth != null
|
||||||
false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
isCreator = member?.role == MemberRole.CREATOR,
|
|
||||||
isAdult = member?.auth != null
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if (onAirChannelList.size >= 20) {
|
if (onAirChannelList.size >= 20) {
|
||||||
|
@ -45,15 +35,10 @@ class LiveRecommendService(
|
||||||
val onAirCreatorIdList = onAirChannelList.map { it.creatorId }
|
val onAirCreatorIdList = onAirChannelList.map { it.creatorId }
|
||||||
|
|
||||||
val notOnAirCreatorList = repository.getRecommendChannelList(
|
val notOnAirCreatorList = repository.getRecommendChannelList(
|
||||||
|
member.id!!,
|
||||||
withOutCreatorList = onAirCreatorIdList,
|
withOutCreatorList = onAirCreatorIdList,
|
||||||
limit = (20 - onAirChannelList.size).toLong(),
|
limit = (20 - onAirChannelList.size).toLong(),
|
||||||
isBlocked = {
|
isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) }
|
||||||
if (member != null) {
|
|
||||||
blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it)
|
|
||||||
} else {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
return onAirChannelList + notOnAirCreatorList
|
return onAirChannelList + notOnAirCreatorList
|
||||||
|
|
|
@ -38,6 +38,8 @@ class LiveRoomController(
|
||||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?,
|
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?,
|
||||||
pageable: Pageable
|
pageable: Pageable
|
||||||
) = run {
|
) = run {
|
||||||
|
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||||
|
|
||||||
ApiResponse.ok(
|
ApiResponse.ok(
|
||||||
service.getRoomList(
|
service.getRoomList(
|
||||||
dateString,
|
dateString,
|
||||||
|
|
|
@ -29,7 +29,7 @@ interface LiveRoomQueryRepository {
|
||||||
offset: Long,
|
offset: Long,
|
||||||
limit: Long,
|
limit: Long,
|
||||||
timezone: String,
|
timezone: String,
|
||||||
memberId: Long?,
|
memberId: Long,
|
||||||
isCreator: Boolean,
|
isCreator: Boolean,
|
||||||
isAdult: Boolean
|
isAdult: Boolean
|
||||||
): List<LiveRoom>
|
): List<LiveRoom>
|
||||||
|
@ -38,14 +38,14 @@ interface LiveRoomQueryRepository {
|
||||||
date: LocalDateTime,
|
date: LocalDateTime,
|
||||||
offset: Long,
|
offset: Long,
|
||||||
limit: Long,
|
limit: Long,
|
||||||
memberId: Long?,
|
memberId: Long,
|
||||||
isCreator: Boolean,
|
isCreator: Boolean,
|
||||||
isAdult: Boolean
|
isAdult: Boolean
|
||||||
): List<LiveRoom>
|
): List<LiveRoom>
|
||||||
|
|
||||||
fun getLiveRoomListReservationWithoutDate(
|
fun getLiveRoomListReservationWithoutDate(
|
||||||
timezone: String,
|
timezone: String,
|
||||||
memberId: Long?,
|
memberId: Long,
|
||||||
isCreator: Boolean,
|
isCreator: Boolean,
|
||||||
isAdult: Boolean
|
isAdult: Boolean
|
||||||
): List<LiveRoom>
|
): List<LiveRoom>
|
||||||
|
@ -72,7 +72,7 @@ class LiveRoomQueryRepositoryImpl(
|
||||||
offset: Long,
|
offset: Long,
|
||||||
limit: Long,
|
limit: Long,
|
||||||
timezone: String,
|
timezone: String,
|
||||||
memberId: Long?,
|
memberId: Long,
|
||||||
isCreator: Boolean,
|
isCreator: Boolean,
|
||||||
isAdult: Boolean
|
isAdult: Boolean
|
||||||
): List<LiveRoom> {
|
): List<LiveRoom> {
|
||||||
|
@ -85,7 +85,7 @@ class LiveRoomQueryRepositoryImpl(
|
||||||
where = where.and(liveRoom.isAdult.isFalse)
|
where = where.and(liveRoom.isAdult.isFalse)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isCreator && memberId != null) {
|
if (isCreator) {
|
||||||
where = where.and(
|
where = where.and(
|
||||||
liveRoom.isAvailableJoinCreator.isTrue
|
liveRoom.isAvailableJoinCreator.isTrue
|
||||||
.or(liveRoom.member.id.eq(memberId))
|
.or(liveRoom.member.id.eq(memberId))
|
||||||
|
@ -112,7 +112,7 @@ class LiveRoomQueryRepositoryImpl(
|
||||||
date: LocalDateTime,
|
date: LocalDateTime,
|
||||||
offset: Long,
|
offset: Long,
|
||||||
limit: Long,
|
limit: Long,
|
||||||
memberId: Long?,
|
memberId: Long,
|
||||||
isCreator: Boolean,
|
isCreator: Boolean,
|
||||||
isAdult: Boolean
|
isAdult: Boolean
|
||||||
): List<LiveRoom> {
|
): List<LiveRoom> {
|
||||||
|
@ -129,7 +129,7 @@ class LiveRoomQueryRepositoryImpl(
|
||||||
where = where.and(liveRoom.isAdult.isFalse)
|
where = where.and(liveRoom.isAdult.isFalse)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isCreator && memberId != null) {
|
if (isCreator) {
|
||||||
where = where.and(
|
where = where.and(
|
||||||
liveRoom.isAvailableJoinCreator.isTrue
|
liveRoom.isAvailableJoinCreator.isTrue
|
||||||
.or(liveRoom.member.id.eq(memberId))
|
.or(liveRoom.member.id.eq(memberId))
|
||||||
|
@ -148,7 +148,7 @@ class LiveRoomQueryRepositoryImpl(
|
||||||
|
|
||||||
override fun getLiveRoomListReservationWithoutDate(
|
override fun getLiveRoomListReservationWithoutDate(
|
||||||
timezone: String,
|
timezone: String,
|
||||||
memberId: Long?,
|
memberId: Long,
|
||||||
isCreator: Boolean,
|
isCreator: Boolean,
|
||||||
isAdult: Boolean
|
isAdult: Boolean
|
||||||
): List<LiveRoom> {
|
): List<LiveRoom> {
|
||||||
|
@ -169,31 +169,25 @@ class LiveRoomQueryRepositoryImpl(
|
||||||
where = where.and(liveRoom.isAdult.isFalse)
|
where = where.and(liveRoom.isAdult.isFalse)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isCreator && memberId != null) {
|
if (isCreator) {
|
||||||
where = where.and(
|
where = where.and(
|
||||||
liveRoom.isAvailableJoinCreator.isTrue
|
liveRoom.isAvailableJoinCreator.isTrue
|
||||||
.or(liveRoom.member.id.eq(memberId))
|
.or(liveRoom.member.id.eq(memberId))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val orderBy = if (memberId != null) {
|
|
||||||
listOf(
|
|
||||||
CaseBuilder()
|
|
||||||
.`when`(member.id.eq(memberId)).then(1)
|
|
||||||
.otherwise(2)
|
|
||||||
.asc(),
|
|
||||||
liveRoom.beginDateTime.asc()
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
listOf(liveRoom.beginDateTime.asc())
|
|
||||||
}
|
|
||||||
|
|
||||||
return queryFactory
|
return queryFactory
|
||||||
.selectFrom(liveRoom)
|
.selectFrom(liveRoom)
|
||||||
.innerJoin(liveRoom.member, member)
|
.innerJoin(liveRoom.member, member)
|
||||||
.limit(10)
|
.limit(10)
|
||||||
.where(where)
|
.where(where)
|
||||||
.orderBy(*orderBy.toTypedArray())
|
.orderBy(
|
||||||
|
CaseBuilder()
|
||||||
|
.`when`(member.id.eq(memberId)).then(1)
|
||||||
|
.otherwise(2)
|
||||||
|
.asc(),
|
||||||
|
liveRoom.beginDateTime.asc()
|
||||||
|
)
|
||||||
.fetch()
|
.fetch()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -118,54 +118,42 @@ class LiveRoomService(
|
||||||
status: LiveRoomStatus,
|
status: LiveRoomStatus,
|
||||||
isAdultContentVisible: Boolean,
|
isAdultContentVisible: Boolean,
|
||||||
pageable: Pageable,
|
pageable: Pageable,
|
||||||
member: Member?,
|
member: Member,
|
||||||
timezone: String
|
timezone: String
|
||||||
): List<GetRoomListResponse> {
|
): List<GetRoomListResponse> {
|
||||||
val roomList = if (status == LiveRoomStatus.NOW) {
|
val roomList = if (status == LiveRoomStatus.NOW) {
|
||||||
getLiveRoomListNow(
|
getLiveRoomListNow(
|
||||||
pageable,
|
pageable,
|
||||||
timezone,
|
timezone,
|
||||||
memberId = member?.id,
|
memberId = member.id!!,
|
||||||
isCreator = member?.role == MemberRole.CREATOR,
|
isCreator = member.role == MemberRole.CREATOR,
|
||||||
isAdult = member?.auth != null && isAdultContentVisible
|
isAdult = member.auth != null && isAdultContentVisible
|
||||||
)
|
)
|
||||||
} else if (dateString != null) {
|
} else if (dateString != null) {
|
||||||
getLiveRoomListReservationWithDate(
|
getLiveRoomListReservationWithDate(
|
||||||
dateString,
|
dateString,
|
||||||
pageable,
|
pageable,
|
||||||
timezone,
|
timezone,
|
||||||
memberId = member?.id,
|
memberId = member.id!!,
|
||||||
isCreator = member?.role == MemberRole.CREATOR,
|
isCreator = member.role == MemberRole.CREATOR,
|
||||||
isAdult = member?.auth != null && isAdultContentVisible
|
isAdult = member.auth != null && isAdultContentVisible
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
getLiveRoomListReservationWithoutDate(
|
getLiveRoomListReservationWithoutDate(
|
||||||
timezone,
|
timezone,
|
||||||
isCreator = member?.role == MemberRole.CREATOR,
|
isCreator = member.role == MemberRole.CREATOR,
|
||||||
memberId = member?.id,
|
memberId = member.id!!,
|
||||||
isAdult = member?.auth != null && isAdultContentVisible
|
isAdult = member.auth != null && isAdultContentVisible
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return roomList
|
return roomList
|
||||||
.filter {
|
.filter { !blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it.member!!.id!!) }
|
||||||
if (member?.id != null) {
|
|
||||||
!blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it.member!!.id!!)
|
|
||||||
} else {
|
|
||||||
true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.map {
|
.map {
|
||||||
val roomInfo = roomInfoRepository.findByIdOrNull(it.id!!)
|
val roomInfo = roomInfoRepository.findByIdOrNull(it.id!!)
|
||||||
|
|
||||||
val reservations = it.reservations
|
val reservations = it.reservations
|
||||||
.filter { reservation ->
|
.filter { reservation -> reservation.member!!.id!! == member.id!! && reservation.isActive }
|
||||||
if (member?.id != null) {
|
|
||||||
reservation.member!!.id!! == member.id!! && reservation.isActive
|
|
||||||
} else {
|
|
||||||
true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val beginDateTime = it.beginDateTime
|
val beginDateTime = it.beginDateTime
|
||||||
.atZone(ZoneId.of("UTC"))
|
.atZone(ZoneId.of("UTC"))
|
||||||
|
@ -214,7 +202,7 @@ class LiveRoomService(
|
||||||
private fun getLiveRoomListNow(
|
private fun getLiveRoomListNow(
|
||||||
pageable: Pageable,
|
pageable: Pageable,
|
||||||
timezone: String,
|
timezone: String,
|
||||||
memberId: Long?,
|
memberId: Long,
|
||||||
isCreator: Boolean,
|
isCreator: Boolean,
|
||||||
isAdult: Boolean
|
isAdult: Boolean
|
||||||
): List<LiveRoom> {
|
): List<LiveRoom> {
|
||||||
|
@ -232,7 +220,7 @@ class LiveRoomService(
|
||||||
dateString: String,
|
dateString: String,
|
||||||
pageable: Pageable,
|
pageable: Pageable,
|
||||||
timezone: String,
|
timezone: String,
|
||||||
memberId: Long?,
|
memberId: Long,
|
||||||
isCreator: Boolean,
|
isCreator: Boolean,
|
||||||
isAdult: Boolean
|
isAdult: Boolean
|
||||||
): List<LiveRoom> {
|
): List<LiveRoom> {
|
||||||
|
@ -254,7 +242,7 @@ class LiveRoomService(
|
||||||
|
|
||||||
private fun getLiveRoomListReservationWithoutDate(
|
private fun getLiveRoomListReservationWithoutDate(
|
||||||
timezone: String,
|
timezone: String,
|
||||||
memberId: Long?,
|
memberId: Long,
|
||||||
isCreator: Boolean,
|
isCreator: Boolean,
|
||||||
isAdult: Boolean
|
isAdult: Boolean
|
||||||
): List<LiveRoom> {
|
): List<LiveRoom> {
|
||||||
|
|
|
@ -31,7 +31,7 @@ class ServiceNoticeController(private val service: ServiceNoticeService) {
|
||||||
|
|
||||||
@DeleteMapping("/{id}")
|
@DeleteMapping("/{id}")
|
||||||
@PreAuthorize("hasRole('ADMIN')")
|
@PreAuthorize("hasRole('ADMIN')")
|
||||||
fun deleteNotice(@PathVariable id: Long) = ApiResponse.ok(service.delete(id), "삭제되었습니다.")
|
fun deleteCan(@PathVariable id: Long) = ApiResponse.ok(service.delete(id), "삭제되었습니다.")
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
fun getNoticeList(pageable: Pageable, timezone: String) = ApiResponse.ok(service.getNoticeList(pageable, timezone))
|
fun getNoticeList(pageable: Pageable, timezone: String) = ApiResponse.ok(service.getNoticeList(pageable, timezone))
|
||||||
|
|
|
@ -43,7 +43,7 @@ class RankingRepository(
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getAudioContentRanking(
|
fun getAudioContentRanking(
|
||||||
memberId: Long?,
|
memberId: Long,
|
||||||
isAdult: Boolean,
|
isAdult: Boolean,
|
||||||
contentType: ContentType,
|
contentType: ContentType,
|
||||||
startDate: LocalDateTime,
|
startDate: LocalDateTime,
|
||||||
|
@ -53,13 +53,9 @@ class RankingRepository(
|
||||||
sortType: String,
|
sortType: String,
|
||||||
theme: String = ""
|
theme: String = ""
|
||||||
): List<GetAudioContentRankingItem> {
|
): List<GetAudioContentRankingItem> {
|
||||||
val blockMemberCondition = if (memberId != null) {
|
val blockMemberCondition = blockMember.member.id.eq(member.id)
|
||||||
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))
|
||||||
} else {
|
|
||||||
null
|
|
||||||
}
|
|
||||||
|
|
||||||
var where = audioContent.isActive.isTrue
|
var where = audioContent.isActive.isTrue
|
||||||
.and(audioContent.member.isActive.isTrue)
|
.and(audioContent.member.isActive.isTrue)
|
||||||
|
@ -68,6 +64,7 @@ class RankingRepository(
|
||||||
.and(audioContent.duration.isNotNull)
|
.and(audioContent.duration.isNotNull)
|
||||||
.and(audioContentTheme.isActive.isTrue)
|
.and(audioContentTheme.isActive.isTrue)
|
||||||
.and(audioContent.limited.isNull)
|
.and(audioContent.limited.isNull)
|
||||||
|
.and(blockMember.id.isNull)
|
||||||
|
|
||||||
if (!isAdult) {
|
if (!isAdult) {
|
||||||
where = where.and(audioContent.isAdult.isFalse)
|
where = where.and(audioContent.isAdult.isFalse)
|
||||||
|
@ -113,41 +110,7 @@ class RankingRepository(
|
||||||
.innerJoin(audioContentComment.audioContent, audioContent)
|
.innerJoin(audioContentComment.audioContent, audioContent)
|
||||||
.innerJoin(audioContent.member, member)
|
.innerJoin(audioContent.member, member)
|
||||||
.innerJoin(audioContent.theme, audioContentTheme)
|
.innerJoin(audioContent.theme, audioContentTheme)
|
||||||
}
|
.leftJoin(blockMember).on(blockMemberCondition)
|
||||||
|
|
||||||
"댓글" -> {
|
|
||||||
select
|
|
||||||
.from(audioContentComment)
|
|
||||||
.innerJoin(audioContentComment.audioContent, audioContent)
|
|
||||||
.innerJoin(audioContent.member, member)
|
|
||||||
.innerJoin(audioContent.theme, audioContentTheme)
|
|
||||||
}
|
|
||||||
|
|
||||||
"좋아요" -> {
|
|
||||||
select
|
|
||||||
.from(audioContentLike)
|
|
||||||
.innerJoin(audioContentLike.audioContent, audioContent)
|
|
||||||
.innerJoin(audioContent.member, member)
|
|
||||||
.innerJoin(audioContent.theme, audioContentTheme)
|
|
||||||
}
|
|
||||||
|
|
||||||
else -> {
|
|
||||||
select
|
|
||||||
.from(order)
|
|
||||||
.innerJoin(order.audioContent, audioContent)
|
|
||||||
.innerJoin(audioContent.member, member)
|
|
||||||
.innerJoin(audioContent.theme, audioContentTheme)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (memberId != null) {
|
|
||||||
where = where.and(blockMember.id.isNull)
|
|
||||||
select = select.leftJoin(blockMember).on(blockMemberCondition)
|
|
||||||
}
|
|
||||||
|
|
||||||
select = when (sortType) {
|
|
||||||
"후원" -> {
|
|
||||||
select
|
|
||||||
.where(
|
.where(
|
||||||
where
|
where
|
||||||
.and(audioContentComment.isActive.isTrue)
|
.and(audioContentComment.isActive.isTrue)
|
||||||
|
@ -161,6 +124,11 @@ class RankingRepository(
|
||||||
|
|
||||||
"댓글" -> {
|
"댓글" -> {
|
||||||
select
|
select
|
||||||
|
.from(audioContentComment)
|
||||||
|
.innerJoin(audioContentComment.audioContent, audioContent)
|
||||||
|
.innerJoin(audioContent.member, member)
|
||||||
|
.innerJoin(audioContent.theme, audioContentTheme)
|
||||||
|
.leftJoin(blockMember).on(blockMemberCondition)
|
||||||
.where(
|
.where(
|
||||||
where
|
where
|
||||||
.and(audioContentComment.isActive.isTrue)
|
.and(audioContentComment.isActive.isTrue)
|
||||||
|
@ -173,6 +141,11 @@ class RankingRepository(
|
||||||
|
|
||||||
"좋아요" -> {
|
"좋아요" -> {
|
||||||
select
|
select
|
||||||
|
.from(audioContentLike)
|
||||||
|
.innerJoin(audioContentLike.audioContent, audioContent)
|
||||||
|
.innerJoin(audioContent.member, member)
|
||||||
|
.innerJoin(audioContent.theme, audioContentTheme)
|
||||||
|
.leftJoin(blockMember).on(blockMemberCondition)
|
||||||
.where(
|
.where(
|
||||||
where
|
where
|
||||||
.and(audioContentLike.isActive.isTrue)
|
.and(audioContentLike.isActive.isTrue)
|
||||||
|
@ -185,6 +158,11 @@ class RankingRepository(
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
select
|
select
|
||||||
|
.from(order)
|
||||||
|
.innerJoin(order.audioContent, audioContent)
|
||||||
|
.innerJoin(audioContent.member, member)
|
||||||
|
.innerJoin(audioContent.theme, audioContentTheme)
|
||||||
|
.leftJoin(blockMember).on(blockMemberCondition)
|
||||||
.where(
|
.where(
|
||||||
where
|
where
|
||||||
.and(order.isActive.isTrue)
|
.and(order.isActive.isTrue)
|
||||||
|
@ -203,19 +181,15 @@ class RankingRepository(
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getSeriesRanking(
|
fun getSeriesRanking(
|
||||||
memberId: Long?,
|
memberId: Long,
|
||||||
isAdult: Boolean,
|
isAdult: Boolean,
|
||||||
contentType: ContentType,
|
contentType: ContentType,
|
||||||
startDate: LocalDateTime,
|
startDate: LocalDateTime,
|
||||||
endDate: LocalDateTime
|
endDate: LocalDateTime
|
||||||
): List<Series> {
|
): List<Series> {
|
||||||
val blockMemberCondition = if (memberId != null) {
|
val blockMemberCondition = blockMember.member.id.eq(member.id)
|
||||||
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))
|
||||||
} else {
|
|
||||||
null
|
|
||||||
}
|
|
||||||
|
|
||||||
var where = series.isActive.isTrue
|
var where = series.isActive.isTrue
|
||||||
.and(audioContent.isActive.isTrue)
|
.and(audioContent.isActive.isTrue)
|
||||||
|
@ -224,6 +198,7 @@ class RankingRepository(
|
||||||
.and(member.role.eq(MemberRole.CREATOR))
|
.and(member.role.eq(MemberRole.CREATOR))
|
||||||
.and(audioContent.duration.isNotNull)
|
.and(audioContent.duration.isNotNull)
|
||||||
.and(audioContent.limited.isNull)
|
.and(audioContent.limited.isNull)
|
||||||
|
.and(blockMember.id.isNull)
|
||||||
.and(order.isActive.isTrue)
|
.and(order.isActive.isTrue)
|
||||||
.and(order.createdAt.goe(startDate))
|
.and(order.createdAt.goe(startDate))
|
||||||
.and(order.createdAt.lt(endDate))
|
.and(order.createdAt.lt(endDate))
|
||||||
|
@ -246,20 +221,14 @@ class RankingRepository(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var select = queryFactory
|
return queryFactory
|
||||||
.select(series)
|
.select(series)
|
||||||
.from(seriesContent)
|
.from(seriesContent)
|
||||||
.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(audioContent.id.eq(order.audioContent.id))
|
||||||
|
.leftJoin(blockMember).on(blockMemberCondition)
|
||||||
if (memberId != null) {
|
|
||||||
where = where.and(blockMember.id.isNull)
|
|
||||||
select = select.leftJoin(blockMember).on(blockMemberCondition)
|
|
||||||
}
|
|
||||||
|
|
||||||
return select
|
|
||||||
.where(where)
|
.where(where)
|
||||||
.groupBy(series.id)
|
.groupBy(series.id)
|
||||||
.orderBy(
|
.orderBy(
|
||||||
|
@ -439,19 +408,15 @@ class RankingRepository(
|
||||||
}
|
}
|
||||||
|
|
||||||
fun fetchCreatorBySellContentCountRankTop20(
|
fun fetchCreatorBySellContentCountRankTop20(
|
||||||
memberId: Long?,
|
memberId: Long,
|
||||||
isAdult: Boolean,
|
isAdult: Boolean,
|
||||||
contentType: ContentType,
|
contentType: ContentType,
|
||||||
startDate: LocalDateTime,
|
startDate: LocalDateTime,
|
||||||
endDate: LocalDateTime
|
endDate: LocalDateTime
|
||||||
): List<ContentCreatorResponse> {
|
): List<ContentCreatorResponse> {
|
||||||
val blockMemberCondition = if (memberId != null) {
|
val blockMemberCondition = blockMember.member.id.eq(member.id)
|
||||||
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))
|
||||||
} else {
|
|
||||||
null
|
|
||||||
}
|
|
||||||
|
|
||||||
val ordersCondition = order.audioContent.id.eq(audioContent.id)
|
val ordersCondition = order.audioContent.id.eq(audioContent.id)
|
||||||
.and(order.isActive.isTrue)
|
.and(order.isActive.isTrue)
|
||||||
|
@ -466,6 +431,7 @@ class RankingRepository(
|
||||||
.and(audioContent.price.gt(0))
|
.and(audioContent.price.gt(0))
|
||||||
.and(audioContent.duration.isNotNull)
|
.and(audioContent.duration.isNotNull)
|
||||||
.and(audioContent.limited.isNull)
|
.and(audioContent.limited.isNull)
|
||||||
|
.and(blockMember.id.isNull)
|
||||||
|
|
||||||
if (!isAdult) {
|
if (!isAdult) {
|
||||||
where = where.and(audioContent.isAdult.isFalse)
|
where = where.and(audioContent.isAdult.isFalse)
|
||||||
|
@ -485,7 +451,7 @@ class RankingRepository(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var select = queryFactory
|
return queryFactory
|
||||||
.select(
|
.select(
|
||||||
QContentCreatorResponse(
|
QContentCreatorResponse(
|
||||||
member.id,
|
member.id,
|
||||||
|
@ -496,13 +462,7 @@ class RankingRepository(
|
||||||
.from(audioContent)
|
.from(audioContent)
|
||||||
.innerJoin(member).on(memberCondition)
|
.innerJoin(member).on(memberCondition)
|
||||||
.leftJoin(order).on(ordersCondition)
|
.leftJoin(order).on(ordersCondition)
|
||||||
|
.leftJoin(blockMember).on(blockMemberCondition)
|
||||||
if (memberId != null) {
|
|
||||||
where = where.and(blockMember.id.isNull)
|
|
||||||
select = select.leftJoin(blockMember).on(blockMemberCondition)
|
|
||||||
}
|
|
||||||
|
|
||||||
return select
|
|
||||||
.where(where)
|
.where(where)
|
||||||
.groupBy(member.id)
|
.groupBy(member.id)
|
||||||
.having(audioContent.id.count().goe(4))
|
.having(audioContent.id.count().goe(4))
|
||||||
|
|
|
@ -23,16 +23,10 @@ class RankingService(
|
||||||
@Value("\${cloud.aws.cloud-front.host}")
|
@Value("\${cloud.aws.cloud-front.host}")
|
||||||
private val imageHost: String
|
private val imageHost: String
|
||||||
) {
|
) {
|
||||||
fun getCreatorRanking(memberId: Long?, rankingDate: String): GetExplorerSectionResponse {
|
fun getCreatorRanking(memberId: Long, rankingDate: String): GetExplorerSectionResponse {
|
||||||
val creatorRankings = repository
|
val creatorRankings = repository
|
||||||
.getCreatorRankings()
|
.getCreatorRankings()
|
||||||
.filter {
|
.filter { !memberService.isBlocked(blockedMemberId = memberId, memberId = it.id!!) }
|
||||||
if (memberId != null) {
|
|
||||||
!memberService.isBlocked(blockedMemberId = memberId, memberId = it.id!!)
|
|
||||||
} else {
|
|
||||||
true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.map { it.toExplorerSectionCreator(imageHost) }
|
.map { it.toExplorerSectionCreator(imageHost) }
|
||||||
|
|
||||||
return GetExplorerSectionResponse(
|
return GetExplorerSectionResponse(
|
||||||
|
@ -45,7 +39,7 @@ class RankingService(
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getContentRanking(
|
fun getContentRanking(
|
||||||
memberId: Long?,
|
memberId: Long,
|
||||||
isAdult: Boolean,
|
isAdult: Boolean,
|
||||||
contentType: ContentType,
|
contentType: ContentType,
|
||||||
startDate: LocalDateTime,
|
startDate: LocalDateTime,
|
||||||
|
@ -77,7 +71,7 @@ class RankingService(
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getSeriesRanking(
|
fun getSeriesRanking(
|
||||||
memberId: Long?,
|
memberId: Long,
|
||||||
isAdult: Boolean,
|
isAdult: Boolean,
|
||||||
contentType: ContentType,
|
contentType: ContentType,
|
||||||
startDate: LocalDateTime,
|
startDate: LocalDateTime,
|
||||||
|
@ -217,7 +211,7 @@ class RankingService(
|
||||||
}
|
}
|
||||||
|
|
||||||
fun fetchCreatorBySellContentCountRankTop20(
|
fun fetchCreatorBySellContentCountRankTop20(
|
||||||
memberId: Long?,
|
memberId: Long,
|
||||||
isAdult: Boolean,
|
isAdult: Boolean,
|
||||||
contentType: ContentType,
|
contentType: ContentType,
|
||||||
startDate: LocalDateTime,
|
startDate: LocalDateTime,
|
||||||
|
|
Loading…
Reference in New Issue