Compare commits

..

No commits in common. "8285589b10b2f02906cef87e829790f4244c2be9" and "d36aada227f0c65c20465f46e4be990ce9d11b96" have entirely different histories.

9 changed files with 7 additions and 71 deletions

View File

@ -42,9 +42,6 @@ class AdminContentController(private val service: AdminContentService) {
fun modifyAudioContent( fun modifyAudioContent(
@RequestBody request: UpdateAdminContentRequest @RequestBody request: UpdateAdminContentRequest
) = ApiResponse.ok(service.updateAudioContent(request)) ) = ApiResponse.ok(service.updateAudioContent(request))
@GetMapping("/main/tab")
fun getContentMainTabList() = ApiResponse.ok(service.getContentMainTabList())
} }
enum class ContentReleaseStatus { enum class ContentReleaseStatus {

View File

@ -1,11 +1,9 @@
package kr.co.vividnext.sodalive.admin.content package kr.co.vividnext.sodalive.admin.content
import kr.co.vividnext.sodalive.admin.content.curation.AdminContentCurationRepository import kr.co.vividnext.sodalive.admin.content.curation.AdminContentCurationRepository
import kr.co.vividnext.sodalive.admin.content.tab.AdminContentMainTabRepository
import kr.co.vividnext.sodalive.admin.content.theme.AdminContentThemeRepository import kr.co.vividnext.sodalive.admin.content.theme.AdminContentThemeRepository
import kr.co.vividnext.sodalive.aws.cloudfront.AudioContentCloudFront import kr.co.vividnext.sodalive.aws.cloudfront.AudioContentCloudFront
import kr.co.vividnext.sodalive.common.SodaException import kr.co.vividnext.sodalive.common.SodaException
import kr.co.vividnext.sodalive.content.main.tab.GetContentMainTabItem
import org.springframework.data.domain.Pageable import org.springframework.data.domain.Pageable
import org.springframework.data.repository.findByIdOrNull import org.springframework.data.repository.findByIdOrNull
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
@ -16,8 +14,7 @@ class AdminContentService(
private val repository: AdminContentRepository, private val repository: AdminContentRepository,
private val themeRepository: AdminContentThemeRepository, private val themeRepository: AdminContentThemeRepository,
private val audioContentCloudFront: AudioContentCloudFront, private val audioContentCloudFront: AudioContentCloudFront,
private val curationRepository: AdminContentCurationRepository, private val curationRepository: AdminContentCurationRepository
private val contentMainTabRepository: AdminContentMainTabRepository
) { ) {
fun getAudioContentList(status: ContentReleaseStatus, pageable: Pageable): GetAdminContentListResponse { fun getAudioContentList(status: ContentReleaseStatus, pageable: Pageable): GetAdminContentListResponse {
val totalCount = repository.getAudioContentTotalCount(status = status) val totalCount = repository.getAudioContentTotalCount(status = status)
@ -121,8 +118,4 @@ class AdminContentService(
audioContent.theme = theme audioContent.theme = theme
} }
} }
fun getContentMainTabList(): List<GetContentMainTabItem> {
return contentMainTabRepository.findAllByActiveIsTrue()
}
} }

View File

@ -7,7 +7,6 @@ import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.PutMapping import org.springframework.web.bind.annotation.PutMapping
import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RequestPart import org.springframework.web.bind.annotation.RequestPart
import org.springframework.web.bind.annotation.RestController import org.springframework.web.bind.annotation.RestController
import org.springframework.web.multipart.MultipartFile import org.springframework.web.multipart.MultipartFile
@ -34,7 +33,5 @@ class AdminContentBannerController(private val service: AdminContentBannerServic
) = ApiResponse.ok(service.updateBannerOrders(request.ids), "수정되었습니다.") ) = ApiResponse.ok(service.updateBannerOrders(request.ids), "수정되었습니다.")
@GetMapping @GetMapping
fun getAudioContentMainBannerList( fun getAudioContentMainBannerList() = ApiResponse.ok(service.getAudioContentMainBannerList())
@RequestParam(value = "tabId", required = false) tabId: Long? = null
) = ApiResponse.ok(service.getAudioContentMainBannerList(tabId = tabId))
} }

View File

@ -3,7 +3,6 @@ package kr.co.vividnext.sodalive.admin.content.banner
import com.querydsl.jpa.impl.JPAQueryFactory import com.querydsl.jpa.impl.JPAQueryFactory
import kr.co.vividnext.sodalive.content.main.banner.AudioContentBanner import kr.co.vividnext.sodalive.content.main.banner.AudioContentBanner
import kr.co.vividnext.sodalive.content.main.banner.QAudioContentBanner.audioContentBanner 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.creator.admin.content.series.QSeries.series import kr.co.vividnext.sodalive.creator.admin.content.series.QSeries.series
import kr.co.vividnext.sodalive.event.QEvent.event import kr.co.vividnext.sodalive.event.QEvent.event
import kr.co.vividnext.sodalive.member.QMember.member import kr.co.vividnext.sodalive.member.QMember.member
@ -15,7 +14,7 @@ import org.springframework.stereotype.Repository
interface AdminContentBannerRepository : JpaRepository<AudioContentBanner, Long>, AdminContentBannerQueryRepository interface AdminContentBannerRepository : JpaRepository<AudioContentBanner, Long>, AdminContentBannerQueryRepository
interface AdminContentBannerQueryRepository { interface AdminContentBannerQueryRepository {
fun getAudioContentMainBannerList(tabId: Long = 1): List<GetAdminContentBannerResponse> fun getAudioContentMainBannerList(): List<GetAdminContentBannerResponse>
} }
class AdminContentBannerQueryRepositoryImpl( class AdminContentBannerQueryRepositoryImpl(
@ -23,15 +22,7 @@ class AdminContentBannerQueryRepositoryImpl(
@Value("\${cloud.aws.cloud-front.host}") @Value("\${cloud.aws.cloud-front.host}")
private val cloudFrontHost: String private val cloudFrontHost: String
) : AdminContentBannerQueryRepository { ) : AdminContentBannerQueryRepository {
override fun getAudioContentMainBannerList(tabId: Long): List<GetAdminContentBannerResponse> { override fun getAudioContentMainBannerList(): List<GetAdminContentBannerResponse> {
var where = audioContentBanner.isActive.isTrue
where = if (tabId <= 1L) {
where.and(audioContentMainTab.id.isNull)
} else {
where.and(audioContentMainTab.id.eq(tabId))
}
return queryFactory return queryFactory
.select( .select(
QGetAdminContentBannerResponse( QGetAdminContentBannerResponse(
@ -52,8 +43,7 @@ class AdminContentBannerQueryRepositoryImpl(
.leftJoin(audioContentBanner.event, event) .leftJoin(audioContentBanner.event, event)
.leftJoin(audioContentBanner.creator, member) .leftJoin(audioContentBanner.creator, member)
.leftJoin(audioContentBanner.series, series) .leftJoin(audioContentBanner.series, series)
.leftJoin(audioContentBanner.tab, audioContentMainTab) .where(audioContentBanner.isActive.isTrue)
.where(where)
.orderBy(audioContentBanner.orders.asc()) .orderBy(audioContentBanner.orders.asc())
.fetch() .fetch()
} }

View File

@ -169,7 +169,7 @@ class AdminContentBannerService(
} }
} }
fun getAudioContentMainBannerList(tabId: Long?): List<GetAdminContentBannerResponse> { fun getAudioContentMainBannerList(): List<GetAdminContentBannerResponse> {
return repository.getAudioContentMainBannerList(tabId = tabId ?: 1) return repository.getAudioContentMainBannerList()
} }
} }

View File

@ -4,7 +4,6 @@ import kr.co.vividnext.sodalive.content.main.banner.AudioContentBannerType
data class CreateContentBannerRequest( data class CreateContentBannerRequest(
val type: AudioContentBannerType, val type: AudioContentBannerType,
val tabId: Long?,
val eventId: Long?, val eventId: Long?,
val creatorId: Long?, val creatorId: Long?,
val seriesId: Long?, val seriesId: Long?,

View File

@ -5,7 +5,6 @@ import kr.co.vividnext.sodalive.content.main.banner.AudioContentBannerType
data class UpdateContentBannerRequest( data class UpdateContentBannerRequest(
val id: Long, val id: Long,
val type: AudioContentBannerType?, val type: AudioContentBannerType?,
val tabId: Long?,
val eventId: Long?, val eventId: Long?,
val creatorId: Long?, val creatorId: Long?,
val seriesId: Long?, val seriesId: Long?,

View File

@ -1,31 +0,0 @@
package kr.co.vividnext.sodalive.admin.content.tab
import com.querydsl.jpa.impl.JPAQueryFactory
import kr.co.vividnext.sodalive.content.main.tab.AudioContentMainTab
import kr.co.vividnext.sodalive.content.main.tab.GetContentMainTabItem
import kr.co.vividnext.sodalive.content.main.tab.QAudioContentMainTab.audioContentMainTab
import kr.co.vividnext.sodalive.content.main.tab.QGetContentMainTabItem
import org.springframework.data.jpa.repository.JpaRepository
interface AdminContentMainTabRepository : JpaRepository<AudioContentMainTab, Long>, AdminContentMainTabQueryRepository
interface AdminContentMainTabQueryRepository {
fun findAllByActiveIsTrue(): List<GetContentMainTabItem>
}
class AdminContentMainTabQueryRepositoryImpl(
private val queryFactory: JPAQueryFactory
) : AdminContentMainTabQueryRepository {
override fun findAllByActiveIsTrue(): List<GetContentMainTabItem> {
return queryFactory
.select(
QGetContentMainTabItem(
audioContentMainTab.id,
audioContentMainTab.title
)
)
.from(audioContentMainTab)
.where(audioContentMainTab.isActive.isTrue)
.fetch()
}
}

View File

@ -1,8 +0,0 @@
package kr.co.vividnext.sodalive.content.main.tab
import com.querydsl.core.annotations.QueryProjection
data class GetContentMainTabItem @QueryProjection constructor(
val tabId: Long,
val title: String
)