parent
ca2cc7a6b6
commit
e007a95982
|
@ -25,7 +25,10 @@ import java.time.temporal.TemporalAdjusters
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/audio-content")
|
@RequestMapping("/audio-content")
|
||||||
class AudioContentController(private val service: AudioContentService) {
|
class AudioContentController(
|
||||||
|
private val service: AudioContentService,
|
||||||
|
private val repository: AudioContentRepository
|
||||||
|
) {
|
||||||
@PostMapping
|
@PostMapping
|
||||||
@PreAuthorize("hasRole('CREATOR')")
|
@PreAuthorize("hasRole('CREATOR')")
|
||||||
fun createAudioContent(
|
fun createAudioContent(
|
||||||
|
@ -190,4 +193,16 @@ class AudioContentController(private val service: AudioContentService) {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/release")
|
||||||
|
@PreAuthorize("hasRole('BOT')")
|
||||||
|
fun releaseContent() = run {
|
||||||
|
val contentIdList = repository.getNotReleaseContentId()
|
||||||
|
|
||||||
|
contentIdList.forEach {
|
||||||
|
service.releaseContent(it)
|
||||||
|
}
|
||||||
|
|
||||||
|
ApiResponse.ok(null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,6 +98,8 @@ interface AudioContentQueryRepository {
|
||||||
): List<GetAudioContentRankingItem>
|
): List<GetAudioContentRankingItem>
|
||||||
|
|
||||||
fun getAudioContentCurationList(isAdult: Boolean, offset: Long, limit: Long): List<AudioContentCuration>
|
fun getAudioContentCurationList(isAdult: Boolean, offset: Long, limit: Long): List<AudioContentCuration>
|
||||||
|
|
||||||
|
fun getNotReleaseContentId(): List<Long>
|
||||||
}
|
}
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
|
@ -581,4 +583,16 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory)
|
||||||
.orderBy(audioContentCuration.orders.asc())
|
.orderBy(audioContentCuration.orders.asc())
|
||||||
.fetch()
|
.fetch()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getNotReleaseContentId(): List<Long> {
|
||||||
|
val where = audioContent.isActive.isFalse
|
||||||
|
.and(audioContent.releaseDate.isNotNull)
|
||||||
|
.and(audioContent.releaseDate.loe(LocalDateTime.now()))
|
||||||
|
|
||||||
|
return queryFactory
|
||||||
|
.select(audioContent.id)
|
||||||
|
.from(audioContent)
|
||||||
|
.where(where)
|
||||||
|
.fetch()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -342,7 +342,6 @@ class AudioContentService(
|
||||||
val audioContent = repository.findByIdOrNull(contentId)
|
val audioContent = repository.findByIdOrNull(contentId)
|
||||||
?: throw SodaException("잘못된 요청입니다.")
|
?: throw SodaException("잘못된 요청입니다.")
|
||||||
|
|
||||||
audioContent.isActive = true
|
|
||||||
audioContent.content = content
|
audioContent.content = content
|
||||||
audioContent.duration = duration
|
audioContent.duration = duration
|
||||||
|
|
||||||
|
@ -358,6 +357,8 @@ class AudioContentService(
|
||||||
)
|
)
|
||||||
|
|
||||||
if (audioContent.releaseDate == null) {
|
if (audioContent.releaseDate == null) {
|
||||||
|
audioContent.isActive = true
|
||||||
|
|
||||||
applicationEventPublisher.publishEvent(
|
applicationEventPublisher.publishEvent(
|
||||||
FcmEvent(
|
FcmEvent(
|
||||||
type = FcmEventType.UPLOAD_CONTENT,
|
type = FcmEventType.UPLOAD_CONTENT,
|
||||||
|
@ -384,6 +385,38 @@ class AudioContentService(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
fun releaseContent(contentId: Long) {
|
||||||
|
val audioContent = repository.findByIdOrNull(contentId)
|
||||||
|
?: throw SodaException("잘못된 요청입니다.")
|
||||||
|
|
||||||
|
audioContent.isActive = true
|
||||||
|
|
||||||
|
applicationEventPublisher.publishEvent(
|
||||||
|
FcmEvent(
|
||||||
|
type = FcmEventType.UPLOAD_CONTENT,
|
||||||
|
title = audioContent.member!!.nickname,
|
||||||
|
message = "콘텐츠를 업로드 하였습니다. - ${audioContent.title}",
|
||||||
|
isAuth = audioContent.isAdult,
|
||||||
|
contentId = contentId,
|
||||||
|
creatorId = audioContent.member!!.id,
|
||||||
|
container = "ios"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
applicationEventPublisher.publishEvent(
|
||||||
|
FcmEvent(
|
||||||
|
type = FcmEventType.UPLOAD_CONTENT,
|
||||||
|
title = audioContent.member!!.nickname,
|
||||||
|
message = "콘텐츠를 업로드 하였습니다. - ${audioContent.title}",
|
||||||
|
isAuth = audioContent.isAdult,
|
||||||
|
contentId = contentId,
|
||||||
|
creatorId = audioContent.member!!.id,
|
||||||
|
container = "aos"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
fun getDetail(id: Long, member: Member, timezone: String): GetAudioContentDetailResponse {
|
fun getDetail(id: Long, member: Member, timezone: String): GetAudioContentDetailResponse {
|
||||||
// 묶음 콘텐츠 조회
|
// 묶음 콘텐츠 조회
|
||||||
val bundleAudioContentList = repository.findBundleByContentId(contentId = id)
|
val bundleAudioContentList = repository.findBundleByContentId(contentId = id)
|
||||||
|
|
Loading…
Reference in New Issue