refactor(content-main): 메인·큐레이션·테마 정책 호출을 통합한다

This commit is contained in:
2026-09-17 20:19:14 +09:00
parent 190c63124b
commit c5e9a47633
3 changed files with 14 additions and 10 deletions
@@ -13,7 +13,7 @@ import kr.co.vividnext.sodalive.event.EventItem
import kr.co.vividnext.sodalive.i18n.LangContext
import kr.co.vividnext.sodalive.member.Member
import kr.co.vividnext.sodalive.member.block.BlockMemberRepository
import kr.co.vividnext.sodalive.member.contentpreference.isAdultVisibleByPolicy
import kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceService
import org.springframework.beans.factory.annotation.Value
import org.springframework.cache.annotation.Cacheable
import org.springframework.data.domain.Pageable
@@ -33,6 +33,8 @@ class AudioContentMainService(
private val langContext: LangContext,
private val memberContentPreferenceService: MemberContentPreferenceService,
@Value("\${cloud.aws.cloud-front.host}")
private val imageHost: String
) {
@@ -69,7 +71,7 @@ class AudioContentMainService(
} else {
emptyList()
},
isAdult = isAdultVisibleByPolicy(member, isAdultContentVisible),
isAdult = memberContentPreferenceService.isAdultVisibleForQuery(member, isAdultContentVisible),
contentType = contentType,
offset = pageable.offset,
limit = pageable.pageSize.toLong()
@@ -88,7 +90,7 @@ class AudioContentMainService(
* - AS-IS theme은 한글만 처리하도록 되어 있음
* - TO-BE 번역된 theme이 들어와도 동일한 동작을 하도록 처리
*/
val isAdult = isAdultVisibleByPolicy(member, isAdultContentVisible)
val isAdult = memberContentPreferenceService.isAdultVisibleForQuery(member, isAdultContentVisible)
val themeListRaw = if (theme.isBlank()) {
audioContentThemeRepository.getActiveThemeOfContent(
isAdult = isAdult,
@@ -6,7 +6,7 @@ import kr.co.vividnext.sodalive.content.SortType
import kr.co.vividnext.sodalive.content.main.tab.GetContentCurationResponse
import kr.co.vividnext.sodalive.member.Member
import kr.co.vividnext.sodalive.member.block.BlockMemberRepository
import kr.co.vividnext.sodalive.member.contentpreference.isAdultVisibleByPolicy
import kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceService
import org.springframework.beans.factory.annotation.Value
import org.springframework.data.domain.Pageable
import org.springframework.stereotype.Service
@@ -17,6 +17,7 @@ class AudioContentCurationService(
private val repository: AudioContentCurationQueryRepository,
private val contentRepository: AudioContentRepository,
private val blockMemberRepository: BlockMemberRepository,
private val memberContentPreferenceService: MemberContentPreferenceService,
@Value("\${cloud.aws.cloud-front.host}")
private val cloudFrontHost: String
@@ -31,14 +32,14 @@ class AudioContentCurationService(
): GetCurationContentResponse {
val totalCount = repository.findTotalCountByCurationId(
curationId = curationId,
isAdult = isAdultVisibleByPolicy(member, isAdultContentVisible),
isAdult = memberContentPreferenceService.isAdultVisibleForQuery(member, isAdultContentVisible),
contentType = contentType
)
val audioContentList = repository.findByCurationId(
curationId = curationId,
cloudfrontHost = cloudFrontHost,
isAdult = isAdultVisibleByPolicy(member, isAdultContentVisible),
isAdult = memberContentPreferenceService.isAdultVisibleForQuery(member, isAdultContentVisible),
contentType = contentType,
sortType = sortType,
offset = pageable.offset,
@@ -11,7 +11,7 @@ import kr.co.vividnext.sodalive.i18n.LangContext
import kr.co.vividnext.sodalive.i18n.translation.LanguageTranslationTargetType
import kr.co.vividnext.sodalive.i18n.translation.ResourceTranslationJobScheduler
import kr.co.vividnext.sodalive.member.Member
import kr.co.vividnext.sodalive.member.contentpreference.isAdultVisibleByPolicy
import kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceService
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
@@ -22,7 +22,8 @@ class AudioContentThemeService(
private val contentThemeTranslationRepository: ContentThemeTranslationRepository,
private val resourceTranslationJobScheduler: ResourceTranslationJobScheduler,
private val langContext: LangContext
private val langContext: LangContext,
private val memberContentPreferenceService: MemberContentPreferenceService
) {
@Transactional(readOnly = true)
fun getThemes(): List<GetAudioContentThemeResponse> {
@@ -100,7 +101,7 @@ class AudioContentThemeService(
val totalCount = contentRepository.totalCountByTheme(
memberId = member.id!!,
theme = listOf(theme.theme),
isAdult = isAdultVisibleByPolicy(member, isAdultContentVisible),
isAdult = memberContentPreferenceService.isAdultVisibleForQuery(member, isAdultContentVisible),
contentType = contentType
)
@@ -108,7 +109,7 @@ class AudioContentThemeService(
memberId = member.id!!,
theme = listOf(theme.theme),
sortType = sortType,
isAdult = isAdultVisibleByPolicy(member, isAdultContentVisible),
isAdult = memberContentPreferenceService.isAdultVisibleForQuery(member, isAdultContentVisible),
contentType = contentType,
offset = offset,
limit = limit