feat(recommendation): 인기 커뮤니티 좋아요 조회를 추가한다
This commit is contained in:
@@ -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 (
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user