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, creatorCommunity.createdAt,
creatorCommunityLike.id.countDistinct(), creatorCommunityLike.id.countDistinct(),
creatorCommunityComment.id.countDistinct(), creatorCommunityComment.id.countDistinct(),
orderedCommunityPostCondition(memberId) orderedCommunityPostCondition(memberId),
likedCommunityPostCondition(memberId)
) )
) )
.from(creatorCommunity) .from(creatorCommunity)
@@ -1229,6 +1230,19 @@ class DefaultHomeRecommendationQueryRepository(
.exists() .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 { private fun notBlockedCreatorSql(creatorIdExpression: String): String {
return """ return """
not exists ( not exists (

View File

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

View File

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