fix(recommendation): 추천 탭 배너 조회 조건을 보정한다

This commit is contained in:
2026-08-05 21:16:55 +09:00
parent 8538880d81
commit 0193b77700
9 changed files with 140 additions and 22 deletions

View File

@@ -53,7 +53,11 @@ class HomeRecommendationFacade(
memberId = member?.id,
includeAdultLives = includeAdult
).map { it.toItem() },
banners = queryService.findHomeBanners(HOME_BANNER_LIMIT, member?.id)
banners = queryService.findHomeBanners(
limit = HOME_BANNER_LIMIT,
memberId = member?.id,
includeAdultBanners = includeAdult
)
.map { RecommendationBannerResponse.from(it.toBanner()) },
recentlyActiveCreators = queryService.findRecentlyActiveCreators(
HOME_ACTIVE_CREATOR_LIMIT,

View File

@@ -63,7 +63,8 @@ class DefaultAudioRecommendationQueryRepository(
.leftJoin(series.member, seriesOwner)
.where(
audioContentBanner.isActive.isTrue,
audioContentBanner.tab.isNull,
audioContentBanner.tab.id.eq(2L),
adultBannerCondition(canViewAdultContent),
activeBannerTargetCondition(memberId, bannerCreator, seriesOwner)
)
.orderBy(audioContentBanner.orders.asc(), randomTieBreaker.asc())
@@ -544,6 +545,10 @@ class DefaultAudioRecommendationQueryRepository(
return if (canViewAdultContent) null else series.isAdult.isFalse
}
private fun adultBannerCondition(canViewAdultContent: Boolean): BooleanExpression? {
return if (canViewAdultContent) null else audioContentBanner.isAdult.isFalse
}
private fun adultAudioCondition(canViewAdultContent: Boolean): BooleanExpression? {
return if (canViewAdultContent) null else audioContent.isAdult.isFalse
}

View File

@@ -87,7 +87,8 @@ class DefaultHomeRecommendationQueryRepository(
override fun findHomeBanners(
limit: Int,
memberId: Long?
memberId: Long?,
includeAdultBanners: Boolean
): List<HomeBannerRecommendationRecord> {
val bannerCreator = QMember("bannerCreator")
val seriesOwner = QMember("seriesOwner")
@@ -115,6 +116,7 @@ class DefaultHomeRecommendationQueryRepository(
.where(
audioContentBanner.isActive.isTrue,
audioContentBanner.tab.isNull,
includeAdultBannerCondition(includeAdultBanners),
activeBannerTargetCondition(memberId, bannerCreator, seriesOwner)
)
.orderBy(audioContentBanner.orders.asc(), randomTieBreaker.asc())
@@ -1265,6 +1267,10 @@ class DefaultHomeRecommendationQueryRepository(
return if (includeAdultCommunities) null else creatorCommunity.isAdult.isFalse
}
private fun includeAdultBannerCondition(includeAdultBanners: Boolean): BooleanExpression? {
return if (includeAdultBanners) null else audioContentBanner.isAdult.isFalse
}
private fun includeAdultLiveCondition(includeAdultLives: Boolean): BooleanExpression? {
return if (includeAdultLives) null else liveRoom.isAdult.isFalse
}

View File

@@ -43,9 +43,10 @@ class HomeRecommendationQueryService(
fun findHomeBanners(
limit: Int = DEFAULT_BANNER_LIMIT,
memberId: Long? = null
memberId: Long? = null,
includeAdultBanners: Boolean = false
): List<HomeBannerRecommendationRecord> {
return queryPort.findHomeBanners(limit, memberId)
return queryPort.findHomeBanners(limit, memberId, includeAdultBanners)
}
fun findRecentlyActiveCreators(

View File

@@ -13,7 +13,8 @@ interface HomeRecommendationQueryPort {
fun findHomeBanners(
limit: Int,
memberId: Long? = null
memberId: Long? = null,
includeAdultBanners: Boolean = false
): List<HomeBannerRecommendationRecord>
fun findRecentlyActiveCreators(