라이브 추천/팔로잉 채널

- 입장 가능한 라이브가 있을 떄만 OnAir를 표시하도록 수정
This commit is contained in:
Klaus 2024-05-14 17:44:32 +09:00
parent 39b27b2a17
commit c63949992f
2 changed files with 15 additions and 8 deletions

View File

@ -53,6 +53,7 @@ class LiveRecommendRepository(
fun getOnAirRecommendChannelList( fun getOnAirRecommendChannelList(
memberId: Long, memberId: Long,
isBlocked: (Long) -> Boolean, isBlocked: (Long) -> Boolean,
isCreator: Boolean,
isAdult: Boolean isAdult: Boolean
): List<GetRecommendChannelResponse> { ): List<GetRecommendChannelResponse> {
var where = member.role.eq(MemberRole.CREATOR) var where = member.role.eq(MemberRole.CREATOR)
@ -62,6 +63,10 @@ class LiveRecommendRepository(
where = where.and(liveRoom.isAdult.isFalse) where = where.and(liveRoom.isAdult.isFalse)
} }
if (isCreator) {
where = where.and(liveRoom.isAvailableJoinCreator.isTrue)
}
return queryFactory return queryFactory
.select( .select(
Projections.constructor( Projections.constructor(
@ -113,14 +118,13 @@ class LiveRecommendRepository(
.orderBy(Expressions.numberTemplate(Double::class.java, "function('rand')").asc()) .orderBy(Expressions.numberTemplate(Double::class.java, "function('rand')").asc())
.limit(limit) .limit(limit)
.fetch() .fetch()
.asSequence()
.filter { !isBlocked(it.creatorId) } .filter { !isBlocked(it.creatorId) }
.toList()
} }
fun getOnAirFollowingChannelList( fun getOnAirFollowingChannelList(
memberId: Long, memberId: Long,
isBlocked: (Long) -> Boolean, isBlocked: (Long) -> Boolean,
isCreator: Boolean,
isAdult: Boolean isAdult: Boolean
): List<GetRecommendChannelResponse> { ): List<GetRecommendChannelResponse> {
var where = member.role.eq(MemberRole.CREATOR) var where = member.role.eq(MemberRole.CREATOR)
@ -130,6 +134,10 @@ class LiveRecommendRepository(
where = where.and(liveRoom.isAdult.isFalse) where = where.and(liveRoom.isAdult.isFalse)
} }
if (isCreator) {
where = where.and(liveRoom.isAvailableJoinCreator.isTrue)
}
return queryFactory return queryFactory
.select( .select(
Projections.constructor( Projections.constructor(

View File

@ -1,6 +1,7 @@
package kr.co.vividnext.sodalive.live.recommend package kr.co.vividnext.sodalive.live.recommend
import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.Member
import kr.co.vividnext.sodalive.member.MemberRole
import kr.co.vividnext.sodalive.member.block.BlockMemberRepository import kr.co.vividnext.sodalive.member.block.BlockMemberRepository
import org.springframework.data.domain.Pageable import org.springframework.data.domain.Pageable
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
@ -23,6 +24,7 @@ class LiveRecommendService(
val onAirChannelList = repository.getOnAirRecommendChannelList( val onAirChannelList = repository.getOnAirRecommendChannelList(
member.id!!, member.id!!,
isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) }, isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) },
isCreator = member.role == MemberRole.CREATOR,
isAdult = member.auth != null isAdult = member.auth != null
) )
@ -30,9 +32,7 @@ class LiveRecommendService(
return onAirChannelList return onAirChannelList
} }
val onAirCreatorIdList = onAirChannelList.asSequence() val onAirCreatorIdList = onAirChannelList.map { it.creatorId }
.map { it.creatorId }
.toList()
val notOnAirCreatorList = repository.getRecommendChannelList( val notOnAirCreatorList = repository.getRecommendChannelList(
member.id!!, member.id!!,
@ -48,6 +48,7 @@ class LiveRecommendService(
val onAirFollowingChannelList = repository.getOnAirFollowingChannelList( val onAirFollowingChannelList = repository.getOnAirFollowingChannelList(
memberId = member.id!!, memberId = member.id!!,
isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) }, isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) },
isCreator = member.role == MemberRole.CREATOR,
isAdult = member.auth != null isAdult = member.auth != null
) )
@ -55,9 +56,7 @@ class LiveRecommendService(
return onAirFollowingChannelList return onAirFollowingChannelList
} }
val onAirCreatorIdList = onAirFollowingChannelList.asSequence() val onAirCreatorIdList = onAirFollowingChannelList.map { it.creatorId }
.map { it.creatorId }
.toList()
val notOnAirFollowingChannelList = repository.getFollowingChannelList( val notOnAirFollowingChannelList = repository.getFollowingChannelList(
memberId = member.id!!, memberId = member.id!!,