feat(content-banner): 오디오 콘텐츠 배너를 언어별로 등록하고 노출한다
This commit is contained in:
@@ -72,7 +72,7 @@ class AdminContentBannerService(
|
||||
null
|
||||
}
|
||||
|
||||
val audioContentBanner = AudioContentBanner(type = request.type)
|
||||
val audioContentBanner = AudioContentBanner(type = request.type, lang = request.lang)
|
||||
audioContentBanner.link = request.link
|
||||
audioContentBanner.isAdult = request.isAdult
|
||||
audioContentBanner.event = event
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package kr.co.vividnext.sodalive.admin.content.banner
|
||||
|
||||
import kr.co.vividnext.sodalive.content.main.banner.AudioContentBannerType
|
||||
import kr.co.vividnext.sodalive.i18n.Lang
|
||||
|
||||
data class CreateContentBannerRequest(
|
||||
val type: AudioContentBannerType,
|
||||
val lang: Lang,
|
||||
val tabId: Long?,
|
||||
val eventId: Long?,
|
||||
val creatorId: Long?,
|
||||
|
||||
@@ -124,7 +124,8 @@ class HomeService(
|
||||
val bannerList = bannerService.getBannerList(
|
||||
tabId = 1,
|
||||
memberId = member?.id,
|
||||
isAdult = isAdult
|
||||
isAdult = isAdult,
|
||||
lang = langContext.lang
|
||||
)
|
||||
|
||||
val originalAudioDramaList = seriesService.getOriginalAudioDramaList(
|
||||
|
||||
@@ -4,6 +4,7 @@ import kr.co.vividnext.sodalive.common.BaseEntity
|
||||
import kr.co.vividnext.sodalive.content.main.tab.AudioContentMainTab
|
||||
import kr.co.vividnext.sodalive.creator.admin.content.series.Series
|
||||
import kr.co.vividnext.sodalive.event.Event
|
||||
import kr.co.vividnext.sodalive.i18n.Lang
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
import javax.persistence.Column
|
||||
import javax.persistence.Entity
|
||||
@@ -22,6 +23,9 @@ data class AudioContentBanner(
|
||||
@Enumerated(value = EnumType.STRING)
|
||||
var type: AudioContentBannerType,
|
||||
@Column(nullable = false)
|
||||
@Enumerated(value = EnumType.STRING)
|
||||
var lang: Lang = Lang.KO,
|
||||
@Column(nullable = false)
|
||||
var isAdult: Boolean = false,
|
||||
@Column(nullable = false)
|
||||
var isActive: Boolean = true,
|
||||
|
||||
@@ -4,19 +4,20 @@ import com.querydsl.jpa.impl.JPAQueryFactory
|
||||
import kr.co.vividnext.sodalive.content.main.banner.QAudioContentBanner.audioContentBanner
|
||||
import kr.co.vividnext.sodalive.content.main.tab.QAudioContentMainTab.audioContentMainTab
|
||||
import kr.co.vividnext.sodalive.event.QEvent.event
|
||||
import kr.co.vividnext.sodalive.i18n.Lang
|
||||
import kr.co.vividnext.sodalive.member.QMember.member
|
||||
import org.springframework.data.jpa.repository.JpaRepository
|
||||
|
||||
interface AudioContentBannerRepository : JpaRepository<AudioContentBanner, Long>, AudioContentBannerQueryRepository
|
||||
|
||||
interface AudioContentBannerQueryRepository {
|
||||
fun getAudioContentMainBannerList(tabId: Long, isAdult: Boolean): List<AudioContentBanner>
|
||||
fun getAudioContentMainBannerList(tabId: Long, isAdult: Boolean, lang: Lang? = null): List<AudioContentBanner>
|
||||
}
|
||||
|
||||
class AudioContentBannerQueryRepositoryImpl(
|
||||
private val queryFactory: JPAQueryFactory
|
||||
) : AudioContentBannerQueryRepository {
|
||||
override fun getAudioContentMainBannerList(tabId: Long, isAdult: Boolean): List<AudioContentBanner> {
|
||||
override fun getAudioContentMainBannerList(tabId: Long, isAdult: Boolean, lang: Lang?): List<AudioContentBanner> {
|
||||
var where = audioContentBanner.isActive.isTrue
|
||||
|
||||
where = if (tabId == 1L) {
|
||||
@@ -29,6 +30,10 @@ class AudioContentBannerQueryRepositoryImpl(
|
||||
where = where.and(audioContentBanner.isAdult.isFalse)
|
||||
}
|
||||
|
||||
if (lang != null) {
|
||||
where = where.and(audioContentBanner.lang.eq(lang))
|
||||
}
|
||||
|
||||
return queryFactory
|
||||
.selectFrom(audioContentBanner)
|
||||
.leftJoin(audioContentBanner.tab, audioContentMainTab)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package kr.co.vividnext.sodalive.content.main.banner
|
||||
|
||||
import kr.co.vividnext.sodalive.event.EventItem
|
||||
import kr.co.vividnext.sodalive.i18n.Lang
|
||||
import kr.co.vividnext.sodalive.member.block.BlockMemberRepository
|
||||
import org.springframework.beans.factory.annotation.Value
|
||||
import org.springframework.stereotype.Service
|
||||
@@ -13,8 +14,8 @@ class AudioContentBannerService(
|
||||
@Value("\${cloud.aws.cloud-front.host}")
|
||||
private val imageHost: String
|
||||
) {
|
||||
fun getBannerList(tabId: Long, memberId: Long?, isAdult: Boolean): List<GetAudioContentBannerResponse> {
|
||||
return repository.getAudioContentMainBannerList(tabId, isAdult)
|
||||
fun getBannerList(tabId: Long, memberId: Long?, isAdult: Boolean, lang: Lang? = null): List<GetAudioContentBannerResponse> {
|
||||
return repository.getAudioContentMainBannerList(tabId, isAdult, lang)
|
||||
.filter {
|
||||
if (it.type == AudioContentBannerType.CREATOR && it.creator != null && memberId != null) {
|
||||
!isBlockedBetweenMembers(memberId = memberId, creatorId = it.creator!!.id!!)
|
||||
|
||||
Reference in New Issue
Block a user