Compare commits

..

No commits in common. "93633940dd16cf96a4e9ec9d1a1de9b170f71795" and "b6f5325351b409dc35233fa16dcbd9f8d60da858" have entirely different histories.

5 changed files with 41 additions and 73 deletions

View File

@ -56,7 +56,7 @@ class AdminContentCurationController(private val service: AdminContentCurationSe
@RequestBody request: AddItemToCurationRequest
) = ApiResponse.ok(service.addItemToCuration(request), "큐레이션 아이템을 등록했습니다.")
@PutMapping("/remove/item")
@PostMapping("/remove/item")
fun removeItemInCuration(
@RequestBody request: RemoveItemInCurationRequest
) = ApiResponse.ok(service.removeItemInCuration(request), "큐레이션 아이템을 제거했습니다.")

View File

@ -6,7 +6,6 @@ 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.QAudioContentCurationItem.audioContentCurationItem
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
interface AdminContentCurationItemRepository :
@ -16,16 +15,10 @@ interface AdminContentCurationItemRepository :
interface AdminContentCurationItemQueryRepository {
fun findByCurationIdAndSeriesId(curationId: Long, seriesId: 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(
val queryFactory: JPAQueryFactory,
@Value("\${cloud.aws.cloud-front.host}")
private val imageHost: String
val queryFactory: JPAQueryFactory
) : AdminContentCurationItemQueryRepository {
override fun findByCurationIdAndSeriesId(curationId: Long, seriesId: Long?): AudioContentCurationItem? {
return queryFactory
@ -50,55 +43,4 @@ class AdminContentCurationItemQueryRepositoryImpl(
)
.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()
}
}

View File

@ -3,6 +3,7 @@ package kr.co.vividnext.sodalive.admin.content.curation
import com.querydsl.jpa.impl.JPAQueryFactory
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.AudioContentCurationItem
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.tab.QAudioContentMainTab.audioContentMainTab
@ -19,6 +20,8 @@ interface AdminContentCurationRepository :
interface AdminContentCurationQueryRepository {
fun getAudioContentCurationList(tabId: Long): List<GetAdminContentCurationResponse>
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 searchCurationSeriesItem(curationId: Long, searchWord: String): List<SearchCurationItemResponse>
}
@ -62,6 +65,36 @@ class AdminContentCurationQueryRepositoryImpl(
.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(
curationId: Long,
searchWord: String

View File

@ -84,14 +84,7 @@ class AdminContentCurationService(
}
fun getCurationItem(curationId: Long): List<GetCurationItemResponse> {
val curation = repository.findByIdOrNull(curationId)
?: throw SodaException("잘못된 요청입니다.")
return if (curation.isSeries) {
contentCurationItemRepository.getAudioContentCurationSeriesItemList(curationId)
} else {
contentCurationItemRepository.getAudioContentCurationItemList(curationId)
}
return repository.getAudioContentCurationItemList(curationId)
}
fun searchCurationContentItem(curationId: Long, searchWord: String): List<SearchCurationItemResponse> {
@ -143,7 +136,7 @@ class AdminContentCurationService(
@Transactional
fun removeItemInCuration(request: RemoveItemInCurationRequest) {
val audioContentCurationItem = contentCurationItemRepository.findByCurationIdAndItemId(
val audioContentCurationItem = repository.findByCurationIdAndItemId(
curationId = request.curationId,
itemId = request.itemId
)

View File

@ -15,10 +15,10 @@ class MemberNotificationService(private val repository: MemberNotificationReposi
var notification = repository.getMemberNotification(memberId = member.id!!)
if (notification == null) {
notification = MemberNotification(
uploadContent = uploadContent ?: false,
live = live ?: false,
message = message ?: false,
audition = audition ?: false
uploadContent = uploadContent,
live = live,
message = message,
audition = audition
)
notification.member = member
repository.save(notification)