fix(block-member): 양방향 차단 관계의 댓글·응원·콘텐츠 노출을 차단한다

This commit is contained in:
2026-02-23 14:08:23 +09:00
parent 07fb6202a8
commit cc74628107
28 changed files with 528 additions and 155 deletions

View File

@@ -162,9 +162,15 @@ class ContentSeriesQueryRepositoryImpl(
.select(blockMember.id)
.from(blockMember)
.where(
blockMember.member.id.eq(series.member.id),
blockMember.blockedMember.id.eq(memberId),
blockMember.isActive.isTrue
.and(
blockMember.member.id.eq(series.member.id)
.and(blockMember.blockedMember.id.eq(memberId))
.or(
blockMember.member.id.eq(memberId)
.and(blockMember.blockedMember.id.eq(series.member.id))
)
)
)
where = where.and(blockedSubquery.exists().not())
}
@@ -230,9 +236,15 @@ class ContentSeriesQueryRepositoryImpl(
.select(blockMember.id)
.from(blockMember)
.where(
blockMember.member.id.eq(series.member.id),
blockMember.blockedMember.id.eq(memberId),
blockMember.isActive.isTrue
.and(
blockMember.member.id.eq(series.member.id)
.and(blockMember.blockedMember.id.eq(memberId))
.or(
blockMember.member.id.eq(memberId)
.and(blockMember.blockedMember.id.eq(series.member.id))
)
)
)
where = where.and(blockedSubquery.exists().not())
}
@@ -361,9 +373,15 @@ class ContentSeriesQueryRepositoryImpl(
.select(blockMember.id)
.from(blockMember)
.where(
blockMember.member.id.eq(series.member.id),
blockMember.blockedMember.id.eq(memberId),
blockMember.isActive.isTrue
.and(
blockMember.member.id.eq(series.member.id)
.and(blockMember.blockedMember.id.eq(memberId))
.or(
blockMember.member.id.eq(memberId)
.and(blockMember.blockedMember.id.eq(series.member.id))
)
)
)
where = where.and(blockedSubquery.exists().not())
}
@@ -419,9 +437,15 @@ class ContentSeriesQueryRepositoryImpl(
.select(blockMember.id)
.from(blockMember)
.where(
blockMember.member.id.eq(series.member.id),
blockMember.blockedMember.id.eq(memberId),
blockMember.isActive.isTrue
.and(
blockMember.member.id.eq(series.member.id)
.and(blockMember.blockedMember.id.eq(memberId))
.or(
blockMember.member.id.eq(memberId)
.and(blockMember.blockedMember.id.eq(series.member.id))
)
)
)
where = where.and(blockedSubquery.exists().not())
}
@@ -594,9 +618,15 @@ class ContentSeriesQueryRepositoryImpl(
.select(blockMember.id)
.from(blockMember)
.where(
blockMember.member.id.eq(series.member.id),
blockMember.blockedMember.id.eq(memberId),
blockMember.isActive.isTrue
.and(
blockMember.member.id.eq(series.member.id)
.and(blockMember.blockedMember.id.eq(memberId))
.or(
blockMember.member.id.eq(memberId)
.and(blockMember.blockedMember.id.eq(series.member.id))
)
)
)
where = where.and(blockedSubquery.exists().not())
}
@@ -829,9 +859,15 @@ class ContentSeriesQueryRepositoryImpl(
memberId: Long,
contentType: ContentType
): List<GetSeriesGenreListResponse> {
val blockMemberCondition = blockMember.member.id.eq(member.id)
.and(blockMember.isActive.isTrue)
.and(blockMember.blockedMember.id.eq(memberId))
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))
)
)
var where = seriesGenre.isActive.isTrue
.and(series.isActive.isTrue)
@@ -884,9 +920,15 @@ class ContentSeriesQueryRepositoryImpl(
contentType: ContentType,
locale: String
): List<GetSeriesListResponse.SeriesListItem> {
val blockMemberCondition = blockMember.member.id.eq(member.id)
.and(blockMember.isActive.isTrue)
.and(blockMember.blockedMember.id.eq(memberId))
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))
)
)
var where = series.isActive.isTrue
.and(member.isActive.isTrue)
@@ -1033,9 +1075,15 @@ class ContentSeriesQueryRepositoryImpl(
.select(blockMember.id)
.from(blockMember)
.where(
blockMember.member.id.eq(series.member.id),
blockMember.blockedMember.id.eq(memberId),
blockMember.isActive.isTrue
.and(
blockMember.member.id.eq(series.member.id)
.and(blockMember.blockedMember.id.eq(memberId))
.or(
blockMember.member.id.eq(memberId)
.and(blockMember.blockedMember.id.eq(series.member.id))
)
)
)
where = where.and(blockedSubquery.exists().not())
}

View File

@@ -226,7 +226,8 @@ class ContentSeriesService(
contentType = contentType
) ?: throw SodaException(messageKey = "series.error.invalid_series_retry")
val isBlocked = blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = series.member!!.id!!)
val isBlocked = blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = series.member!!.id!!) ||
blockMemberRepository.isBlocked(blockedMemberId = series.member!!.id!!, memberId = member.id!!)
if (isBlocked) {
throw SodaException(messageKey = "series.error.invalid_series_retry")
}