feat(recommendation): 인기 커뮤니티 좋아요 조회를 추가한다

This commit is contained in:
2026-06-30 01:08:06 +09:00
parent aaac81417d
commit 6c2c8a0386
3 changed files with 22 additions and 2 deletions

View File

@@ -792,7 +792,8 @@ class DefaultHomeRecommendationQueryRepository(
creatorCommunity.createdAt,
creatorCommunityLike.id.countDistinct(),
creatorCommunityComment.id.countDistinct(),
orderedCommunityPostCondition(memberId)
orderedCommunityPostCondition(memberId),
likedCommunityPostCondition(memberId)
)
)
.from(creatorCommunity)
@@ -1229,6 +1230,19 @@ class DefaultHomeRecommendationQueryRepository(
.exists()
}
private fun likedCommunityPostCondition(memberId: Long?): BooleanExpression {
if (memberId == null) return Expressions.FALSE
return JPAExpressions
.selectOne()
.from(creatorCommunityLike)
.where(
creatorCommunityLike.creatorCommunity.id.eq(creatorCommunity.id),
creatorCommunityLike.member.id.eq(memberId),
creatorCommunityLike.isActive.isTrue
)
.exists()
}
private fun notBlockedCreatorSql(creatorIdExpression: String): String {
return """
not exists (

View File

@@ -152,7 +152,8 @@ data class HomePopularCommunityRecommendationRecord(
val createdAt: LocalDateTime,
val likeCount: Long,
val commentCount: Long,
val existOrdered: Boolean
val existOrdered: Boolean,
val isLiked: Boolean
)
data class HomeGenreCreatorRecommendationGroup(

View File

@@ -1389,6 +1389,7 @@ class DefaultHomeRecommendationQueryRepositoryTest @Autowired constructor(
val creator = saveMember("community-detail-creator", MemberRole.CREATOR)
val inactiveCreator = saveMember("community-detail-inactive-creator", MemberRole.CREATOR, isActive = false)
val member = saveMember("community-detail-member", MemberRole.USER)
val otherMember = saveMember("community-detail-other-member", MemberRole.USER)
val eligible = saveCommunity(
creator,
isCommentAvailable = true,
@@ -1403,6 +1404,7 @@ class DefaultHomeRecommendationQueryRepositoryTest @Autowired constructor(
val like1 = saveCommunityLike(member, eligible, isActive = true)
val like2 = saveCommunityLike(member, eligible, isActive = true)
saveCommunityLike(member, eligible, isActive = false)
saveCommunityLike(otherMember, paid, isActive = true)
val comment1 = saveCommunityComment(member, eligible, isActive = true)
saveCommunityComment(member, eligible, isActive = false)
updateCreatedAt("CreatorCommunity", eligible.id!!, LocalDateTime.of(2026, 5, 29, 1, 0))
@@ -1430,6 +1432,8 @@ class DefaultHomeRecommendationQueryRepositoryTest @Autowired constructor(
assertEquals(1L, detailById[eligible.id]!!.commentCount)
assertEquals(false, detailById[eligible.id]!!.existOrdered)
assertEquals(true, detailById[paid.id]!!.existOrdered)
assertEquals(true, detailById[eligible.id]!!.isLiked)
assertEquals(false, detailById[paid.id]!!.isLiked)
assertEquals(creator.id, detailById[eligible.id]!!.creatorId)
assertEquals("community-detail-creator", detailById[eligible.id]!!.creatorNickname)
}
@@ -1449,6 +1453,7 @@ class DefaultHomeRecommendationQueryRepositoryTest @Autowired constructor(
assertEquals(listOf(paid.id), details.map { it.communityId })
assertEquals(listOf(false), details.map { it.existOrdered })
assertEquals(listOf(false), details.map { it.isLiked })
}
@Test