commit
93633940dd
|
@ -56,7 +56,7 @@ class AdminContentCurationController(private val service: AdminContentCurationSe
|
||||||
@RequestBody request: AddItemToCurationRequest
|
@RequestBody request: AddItemToCurationRequest
|
||||||
) = ApiResponse.ok(service.addItemToCuration(request), "큐레이션 아이템을 등록했습니다.")
|
) = ApiResponse.ok(service.addItemToCuration(request), "큐레이션 아이템을 등록했습니다.")
|
||||||
|
|
||||||
@PostMapping("/remove/item")
|
@PutMapping("/remove/item")
|
||||||
fun removeItemInCuration(
|
fun removeItemInCuration(
|
||||||
@RequestBody request: RemoveItemInCurationRequest
|
@RequestBody request: RemoveItemInCurationRequest
|
||||||
) = ApiResponse.ok(service.removeItemInCuration(request), "큐레이션 아이템을 제거했습니다.")
|
) = ApiResponse.ok(service.removeItemInCuration(request), "큐레이션 아이템을 제거했습니다.")
|
||||||
|
|
|
@ -6,6 +6,7 @@ import kr.co.vividnext.sodalive.content.main.curation.AudioContentCurationItem
|
||||||
import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCuration.audioContentCuration
|
import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCuration.audioContentCuration
|
||||||
import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCurationItem.audioContentCurationItem
|
import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCurationItem.audioContentCurationItem
|
||||||
import kr.co.vividnext.sodalive.creator.admin.content.series.QSeries.series
|
import kr.co.vividnext.sodalive.creator.admin.content.series.QSeries.series
|
||||||
|
import org.springframework.beans.factory.annotation.Value
|
||||||
import org.springframework.data.jpa.repository.JpaRepository
|
import org.springframework.data.jpa.repository.JpaRepository
|
||||||
|
|
||||||
interface AdminContentCurationItemRepository :
|
interface AdminContentCurationItemRepository :
|
||||||
|
@ -15,10 +16,16 @@ interface AdminContentCurationItemRepository :
|
||||||
interface AdminContentCurationItemQueryRepository {
|
interface AdminContentCurationItemQueryRepository {
|
||||||
fun findByCurationIdAndSeriesId(curationId: Long, seriesId: Long?): AudioContentCurationItem?
|
fun findByCurationIdAndSeriesId(curationId: Long, seriesId: Long?): AudioContentCurationItem?
|
||||||
fun findByCurationIdAndContentId(curationId: Long, contentId: Long?): AudioContentCurationItem?
|
fun findByCurationIdAndContentId(curationId: Long, contentId: Long?): AudioContentCurationItem?
|
||||||
|
fun findByCurationIdAndItemId(curationId: Long, itemId: Long): AudioContentCurationItem?
|
||||||
|
fun getAudioContentCurationItemList(curationId: Long): List<GetCurationItemResponse>
|
||||||
|
fun getAudioContentCurationSeriesItemList(curationId: Long): List<GetCurationItemResponse>
|
||||||
}
|
}
|
||||||
|
|
||||||
class AdminContentCurationItemQueryRepositoryImpl(
|
class AdminContentCurationItemQueryRepositoryImpl(
|
||||||
val queryFactory: JPAQueryFactory
|
val queryFactory: JPAQueryFactory,
|
||||||
|
|
||||||
|
@Value("\${cloud.aws.cloud-front.host}")
|
||||||
|
private val imageHost: String
|
||||||
) : AdminContentCurationItemQueryRepository {
|
) : AdminContentCurationItemQueryRepository {
|
||||||
override fun findByCurationIdAndSeriesId(curationId: Long, seriesId: Long?): AudioContentCurationItem? {
|
override fun findByCurationIdAndSeriesId(curationId: Long, seriesId: Long?): AudioContentCurationItem? {
|
||||||
return queryFactory
|
return queryFactory
|
||||||
|
@ -43,4 +50,55 @@ class AdminContentCurationItemQueryRepositoryImpl(
|
||||||
)
|
)
|
||||||
.fetchFirst()
|
.fetchFirst()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun findByCurationIdAndItemId(curationId: Long, itemId: Long): AudioContentCurationItem? {
|
||||||
|
return queryFactory.selectFrom(audioContentCurationItem)
|
||||||
|
.innerJoin(audioContentCurationItem.curation, audioContentCuration)
|
||||||
|
.where(audioContentCuration.id.eq(curationId), audioContentCurationItem.id.eq(itemId))
|
||||||
|
.fetchFirst()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getAudioContentCurationItemList(curationId: Long): List<GetCurationItemResponse> {
|
||||||
|
return queryFactory
|
||||||
|
.select(
|
||||||
|
QGetCurationItemResponse(
|
||||||
|
audioContentCurationItem.id,
|
||||||
|
audioContent.title,
|
||||||
|
audioContent.detail,
|
||||||
|
audioContent.coverImage.prepend("/").prepend(imageHost),
|
||||||
|
audioContent.member.nickname.coalesce(""),
|
||||||
|
audioContent.isAdult
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.from(audioContentCurationItem)
|
||||||
|
.innerJoin(audioContentCurationItem.curation, audioContentCuration)
|
||||||
|
.innerJoin(audioContentCurationItem.content, audioContent)
|
||||||
|
.where(
|
||||||
|
audioContentCuration.id.eq(curationId),
|
||||||
|
audioContentCurationItem.isActive.isTrue
|
||||||
|
)
|
||||||
|
.fetch()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getAudioContentCurationSeriesItemList(curationId: Long): List<GetCurationItemResponse> {
|
||||||
|
return queryFactory
|
||||||
|
.select(
|
||||||
|
QGetCurationItemResponse(
|
||||||
|
audioContentCurationItem.id,
|
||||||
|
series.title,
|
||||||
|
series.introduction,
|
||||||
|
series.coverImage.prepend("/").prepend(imageHost),
|
||||||
|
series.member.nickname.coalesce(""),
|
||||||
|
series.isAdult
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.from(audioContentCurationItem)
|
||||||
|
.innerJoin(audioContentCurationItem.curation, audioContentCuration)
|
||||||
|
.innerJoin(audioContentCurationItem.series, series)
|
||||||
|
.where(
|
||||||
|
audioContentCuration.id.eq(curationId),
|
||||||
|
audioContentCurationItem.isActive.isTrue
|
||||||
|
)
|
||||||
|
.fetch()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ package kr.co.vividnext.sodalive.admin.content.curation
|
||||||
import com.querydsl.jpa.impl.JPAQueryFactory
|
import com.querydsl.jpa.impl.JPAQueryFactory
|
||||||
import kr.co.vividnext.sodalive.content.QAudioContent.audioContent
|
import kr.co.vividnext.sodalive.content.QAudioContent.audioContent
|
||||||
import kr.co.vividnext.sodalive.content.main.curation.AudioContentCuration
|
import kr.co.vividnext.sodalive.content.main.curation.AudioContentCuration
|
||||||
import kr.co.vividnext.sodalive.content.main.curation.AudioContentCurationItem
|
|
||||||
import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCuration.audioContentCuration
|
import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCuration.audioContentCuration
|
||||||
import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCurationItem.audioContentCurationItem
|
import kr.co.vividnext.sodalive.content.main.curation.QAudioContentCurationItem.audioContentCurationItem
|
||||||
import kr.co.vividnext.sodalive.content.main.tab.QAudioContentMainTab.audioContentMainTab
|
import kr.co.vividnext.sodalive.content.main.tab.QAudioContentMainTab.audioContentMainTab
|
||||||
|
@ -20,8 +19,6 @@ interface AdminContentCurationRepository :
|
||||||
interface AdminContentCurationQueryRepository {
|
interface AdminContentCurationQueryRepository {
|
||||||
fun getAudioContentCurationList(tabId: Long): List<GetAdminContentCurationResponse>
|
fun getAudioContentCurationList(tabId: Long): List<GetAdminContentCurationResponse>
|
||||||
fun findByIdAndActive(id: Long): AudioContentCuration?
|
fun findByIdAndActive(id: Long): AudioContentCuration?
|
||||||
fun findByCurationIdAndItemId(curationId: Long, itemId: Long): AudioContentCurationItem?
|
|
||||||
fun getAudioContentCurationItemList(curationId: Long): List<GetCurationItemResponse>
|
|
||||||
fun searchCurationContentItem(curationId: Long, searchWord: String): List<SearchCurationItemResponse>
|
fun searchCurationContentItem(curationId: Long, searchWord: String): List<SearchCurationItemResponse>
|
||||||
fun searchCurationSeriesItem(curationId: Long, searchWord: String): List<SearchCurationItemResponse>
|
fun searchCurationSeriesItem(curationId: Long, searchWord: String): List<SearchCurationItemResponse>
|
||||||
}
|
}
|
||||||
|
@ -65,36 +62,6 @@ class AdminContentCurationQueryRepositoryImpl(
|
||||||
.fetchFirst()
|
.fetchFirst()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun findByCurationIdAndItemId(curationId: Long, itemId: Long): AudioContentCurationItem? {
|
|
||||||
return queryFactory.selectFrom(audioContentCurationItem)
|
|
||||||
.innerJoin(audioContentCurationItem.curation, audioContentCuration)
|
|
||||||
.where(audioContentCuration.id.eq(curationId), audioContentCurationItem.id.eq(itemId))
|
|
||||||
.fetchFirst()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getAudioContentCurationItemList(curationId: Long): List<GetCurationItemResponse> {
|
|
||||||
return queryFactory
|
|
||||||
.select(
|
|
||||||
QGetCurationItemResponse(
|
|
||||||
audioContentCurationItem.id,
|
|
||||||
audioContent.title.coalesce(series.title),
|
|
||||||
audioContent.detail.coalesce(series.introduction),
|
|
||||||
audioContent.coverImage.coalesce(series.coverImage).prepend("/").prepend(imageHost),
|
|
||||||
audioContent.member.nickname.coalesce(series.member.nickname).coalesce(""),
|
|
||||||
audioContent.isAdult.coalesce(series.isAdult)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
.from(audioContentCurationItem)
|
|
||||||
.innerJoin(audioContentCurationItem.curation, audioContentCuration)
|
|
||||||
.leftJoin(audioContentCurationItem.series, series)
|
|
||||||
.leftJoin(audioContentCurationItem.content, audioContent)
|
|
||||||
.where(
|
|
||||||
audioContentCuration.id.eq(curationId),
|
|
||||||
audioContentCurationItem.isActive.isTrue
|
|
||||||
)
|
|
||||||
.fetch()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun searchCurationContentItem(
|
override fun searchCurationContentItem(
|
||||||
curationId: Long,
|
curationId: Long,
|
||||||
searchWord: String
|
searchWord: String
|
||||||
|
|
|
@ -84,7 +84,14 @@ class AdminContentCurationService(
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getCurationItem(curationId: Long): List<GetCurationItemResponse> {
|
fun getCurationItem(curationId: Long): List<GetCurationItemResponse> {
|
||||||
return repository.getAudioContentCurationItemList(curationId)
|
val curation = repository.findByIdOrNull(curationId)
|
||||||
|
?: throw SodaException("잘못된 요청입니다.")
|
||||||
|
|
||||||
|
return if (curation.isSeries) {
|
||||||
|
contentCurationItemRepository.getAudioContentCurationSeriesItemList(curationId)
|
||||||
|
} else {
|
||||||
|
contentCurationItemRepository.getAudioContentCurationItemList(curationId)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun searchCurationContentItem(curationId: Long, searchWord: String): List<SearchCurationItemResponse> {
|
fun searchCurationContentItem(curationId: Long, searchWord: String): List<SearchCurationItemResponse> {
|
||||||
|
@ -136,7 +143,7 @@ class AdminContentCurationService(
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
fun removeItemInCuration(request: RemoveItemInCurationRequest) {
|
fun removeItemInCuration(request: RemoveItemInCurationRequest) {
|
||||||
val audioContentCurationItem = repository.findByCurationIdAndItemId(
|
val audioContentCurationItem = contentCurationItemRepository.findByCurationIdAndItemId(
|
||||||
curationId = request.curationId,
|
curationId = request.curationId,
|
||||||
itemId = request.itemId
|
itemId = request.itemId
|
||||||
)
|
)
|
||||||
|
|
|
@ -15,10 +15,10 @@ class MemberNotificationService(private val repository: MemberNotificationReposi
|
||||||
var notification = repository.getMemberNotification(memberId = member.id!!)
|
var notification = repository.getMemberNotification(memberId = member.id!!)
|
||||||
if (notification == null) {
|
if (notification == null) {
|
||||||
notification = MemberNotification(
|
notification = MemberNotification(
|
||||||
uploadContent = uploadContent,
|
uploadContent = uploadContent ?: false,
|
||||||
live = live,
|
live = live ?: false,
|
||||||
message = message,
|
message = message ?: false,
|
||||||
audition = audition
|
audition = audition ?: false
|
||||||
)
|
)
|
||||||
notification.member = member
|
notification.member = member
|
||||||
repository.save(notification)
|
repository.save(notification)
|
||||||
|
|
Loading…
Reference in New Issue