fix(block-member): 양방향 차단 관계의 댓글·응원·콘텐츠 노출을 차단한다
This commit is contained in:
@@ -22,7 +22,7 @@ class LiveRecommendService(
|
||||
return repository.getRecommendLive(
|
||||
isBlocked = {
|
||||
if (member != null) {
|
||||
blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it)
|
||||
isBlockedBetweenMembers(memberId = member.id!!, creatorId = it)
|
||||
} else {
|
||||
false
|
||||
}
|
||||
@@ -35,7 +35,7 @@ class LiveRecommendService(
|
||||
val onAirChannelList = repository.getOnAirRecommendChannelList(
|
||||
isBlocked = {
|
||||
if (member != null) {
|
||||
blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it)
|
||||
isBlockedBetweenMembers(memberId = member.id!!, creatorId = it)
|
||||
} else {
|
||||
false
|
||||
}
|
||||
@@ -55,7 +55,7 @@ class LiveRecommendService(
|
||||
limit = (20 - onAirChannelList.size).toLong(),
|
||||
isBlocked = {
|
||||
if (member != null) {
|
||||
blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it)
|
||||
isBlockedBetweenMembers(memberId = member.id!!, creatorId = it)
|
||||
} else {
|
||||
false
|
||||
}
|
||||
@@ -68,7 +68,7 @@ class LiveRecommendService(
|
||||
fun getFollowingChannelList(member: Member): List<GetRecommendChannelResponse> {
|
||||
val onAirFollowingChannelList = repository.getOnAirFollowingChannelList(
|
||||
memberId = member.id!!,
|
||||
isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) },
|
||||
isBlocked = { isBlockedBetweenMembers(memberId = member.id!!, creatorId = it) },
|
||||
isCreator = member.role == MemberRole.CREATOR,
|
||||
isAdult = member.auth != null
|
||||
)
|
||||
@@ -83,7 +83,7 @@ class LiveRecommendService(
|
||||
memberId = member.id!!,
|
||||
withOutCreatorList = onAirCreatorIdList,
|
||||
limit = (20 - onAirCreatorIdList.size).toLong(),
|
||||
isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) }
|
||||
isBlocked = { isBlockedBetweenMembers(memberId = member.id!!, creatorId = it) }
|
||||
)
|
||||
|
||||
return onAirFollowingChannelList + notOnAirFollowingChannelList
|
||||
@@ -92,14 +92,14 @@ class LiveRecommendService(
|
||||
fun getFollowingAllChannelList(member: Member, pageable: Pageable): GetCreatorFollowingAllListResponse {
|
||||
val totalCount = repository.getCreatorFollowingAllListTotalCount(
|
||||
memberId = member.id!!,
|
||||
isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) }
|
||||
isBlocked = { isBlockedBetweenMembers(memberId = member.id!!, creatorId = it) }
|
||||
)
|
||||
|
||||
val items = repository.getCreatorFollowingAllList(
|
||||
memberId = member.id!!,
|
||||
offset = pageable.offset,
|
||||
limit = pageable.pageSize.toLong(),
|
||||
isBlocked = { blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it) }
|
||||
isBlocked = { isBlockedBetweenMembers(memberId = member.id!!, creatorId = it) }
|
||||
)
|
||||
|
||||
return GetCreatorFollowingAllListResponse(
|
||||
@@ -107,4 +107,9 @@ class LiveRecommendService(
|
||||
items = items
|
||||
)
|
||||
}
|
||||
|
||||
private fun isBlockedBetweenMembers(memberId: Long, creatorId: Long): Boolean {
|
||||
return blockMemberRepository.isBlocked(blockedMemberId = memberId, memberId = creatorId) ||
|
||||
blockMemberRepository.isBlocked(blockedMemberId = creatorId, memberId = memberId)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,9 +121,15 @@ class LiveRoomQueryRepositoryImpl(
|
||||
.leftJoin(quarterLiveRankings).on(liveRoom.id.eq(quarterLiveRankings.roomId))
|
||||
|
||||
if (hasMemberId) {
|
||||
val blockMemberCondition = blockMember.member.id.eq(member.id)
|
||||
.and(blockMember.blockedMember.id.eq(memberId))
|
||||
.and(blockMember.isActive.isTrue)
|
||||
val blockMemberCondition = blockMember.isActive.isTrue
|
||||
.and(
|
||||
blockMember.member.id.eq(member.id)
|
||||
.and(blockMember.blockedMember.id.eq(memberId))
|
||||
.or(
|
||||
blockMember.member.id.eq(memberId)
|
||||
.and(blockMember.blockedMember.id.eq(member.id))
|
||||
)
|
||||
)
|
||||
|
||||
select = select.leftJoin(blockMember).on(blockMemberCondition)
|
||||
where = where.and(blockMember.id.isNull)
|
||||
@@ -190,9 +196,15 @@ class LiveRoomQueryRepositoryImpl(
|
||||
.innerJoin(liveRoom.member, member)
|
||||
|
||||
if (memberId != null) {
|
||||
val blockMemberCondition = blockMember.member.id.eq(member.id)
|
||||
.and(blockMember.blockedMember.id.eq(memberId))
|
||||
.and(blockMember.isActive.isTrue)
|
||||
val blockMemberCondition = blockMember.isActive.isTrue
|
||||
.and(
|
||||
blockMember.member.id.eq(member.id)
|
||||
.and(blockMember.blockedMember.id.eq(memberId))
|
||||
.or(
|
||||
blockMember.member.id.eq(memberId)
|
||||
.and(blockMember.blockedMember.id.eq(member.id))
|
||||
)
|
||||
)
|
||||
|
||||
select = select.leftJoin(blockMember).on(blockMemberCondition)
|
||||
where = where.and(blockMember.id.isNull)
|
||||
@@ -269,9 +281,15 @@ class LiveRoomQueryRepositoryImpl(
|
||||
.limit(10)
|
||||
|
||||
if (memberId != null) {
|
||||
val blockMemberCondition = blockMember.member.id.eq(member.id)
|
||||
.and(blockMember.blockedMember.id.eq(memberId))
|
||||
.and(blockMember.isActive.isTrue)
|
||||
val blockMemberCondition = blockMember.isActive.isTrue
|
||||
.and(
|
||||
blockMember.member.id.eq(member.id)
|
||||
.and(blockMember.blockedMember.id.eq(memberId))
|
||||
.or(
|
||||
blockMember.member.id.eq(memberId)
|
||||
.and(blockMember.blockedMember.id.eq(member.id))
|
||||
)
|
||||
)
|
||||
|
||||
select = select.leftJoin(blockMember).on(blockMemberCondition)
|
||||
where = where.and(blockMember.id.isNull)
|
||||
|
||||
@@ -500,6 +500,13 @@ class LiveRoomService(
|
||||
val room = repository.getLiveRoom(id = roomId)
|
||||
?: throw SodaException(messageKey = "live.room.already_ended")
|
||||
|
||||
val creatorId = room.member!!.id!!
|
||||
val isBlockedByCreator = blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = creatorId)
|
||||
val isBlockedByMember = blockMemberRepository.isBlocked(blockedMemberId = creatorId, memberId = member.id!!)
|
||||
if (isBlockedByCreator || isBlockedByMember) {
|
||||
throw SodaException(messageKey = "live.room.already_ended")
|
||||
}
|
||||
|
||||
if (room.isAdult && member.auth == null) {
|
||||
throw SodaException(messageKey = "live.room.adult_verification_required")
|
||||
}
|
||||
@@ -747,6 +754,14 @@ class LiveRoomService(
|
||||
)
|
||||
}
|
||||
|
||||
val isBlockedByMember = blockMemberRepository.isBlocked(
|
||||
blockedMemberId = room.member!!.id!!,
|
||||
memberId = member.id!!
|
||||
)
|
||||
if (isBlockedByMember) {
|
||||
throw SodaException(messageKey = "live.room.not_found")
|
||||
}
|
||||
|
||||
val kickOutCount = kickOutService.getKickOutCount(roomId = room.id!!, userId = member.id!!)
|
||||
if (kickOutCount >= 2) {
|
||||
throw SodaException(
|
||||
@@ -910,6 +925,13 @@ class LiveRoomService(
|
||||
val room = repository.findByIdOrNull(roomId)
|
||||
?: throw SodaException(messageKey = "live.room.info_not_found")
|
||||
|
||||
val creatorId = room.member!!.id!!
|
||||
val isBlockedByCreator = blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = creatorId)
|
||||
val isBlockedByMember = blockMemberRepository.isBlocked(blockedMemberId = creatorId, memberId = member.id!!)
|
||||
if (isBlockedByCreator || isBlockedByMember) {
|
||||
throw SodaException(messageKey = "live.room.info_not_found")
|
||||
}
|
||||
|
||||
val currentTimeStamp = Date().time
|
||||
val expireTimestamp = (currentTimeStamp + (60 * 60 * 24 * 1000)) / 1000
|
||||
|
||||
@@ -1427,7 +1449,8 @@ class LiveRoomService(
|
||||
return repository.getLatestFinishedLive()
|
||||
.filter {
|
||||
if (member?.id != null) {
|
||||
!blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it.memberId)
|
||||
!blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it.memberId) &&
|
||||
!blockMemberRepository.isBlocked(blockedMemberId = it.memberId, memberId = member.id!!)
|
||||
} else {
|
||||
true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user