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