라이브 추천/팔로잉 채널

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

View File

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