parent
ca2cc7a6b6
commit
e007a95982
|
@ -25,7 +25,10 @@ import java.time.temporal.TemporalAdjusters
|
|||
|
||||
@RestController
|
||||
@RequestMapping("/audio-content")
|
||||
class AudioContentController(private val service: AudioContentService) {
|
||||
class AudioContentController(
|
||||
private val service: AudioContentService,
|
||||
private val repository: AudioContentRepository
|
||||
) {
|
||||
@PostMapping
|
||||
@PreAuthorize("hasRole('CREATOR')")
|
||||
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>
|
||||
|
||||
fun getAudioContentCurationList(isAdult: Boolean, offset: Long, limit: Long): List<AudioContentCuration>
|
||||
|
||||
fun getNotReleaseContentId(): List<Long>
|
||||
}
|
||||
|
||||
@Repository
|
||||
|
@ -581,4 +583,16 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory)
|
|||
.orderBy(audioContentCuration.orders.asc())
|
||||
.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)
|
||||
?: throw SodaException("잘못된 요청입니다.")
|
||||
|
||||
audioContent.isActive = true
|
||||
audioContent.content = content
|
||||
audioContent.duration = duration
|
||||
|
||||
|
@ -358,6 +357,8 @@ class AudioContentService(
|
|||
)
|
||||
|
||||
if (audioContent.releaseDate == null) {
|
||||
audioContent.isActive = true
|
||||
|
||||
applicationEventPublisher.publishEvent(
|
||||
FcmEvent(
|
||||
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 {
|
||||
// 묶음 콘텐츠 조회
|
||||
val bundleAudioContentList = repository.findBundleByContentId(contentId = id)
|
||||
|
|
Loading…
Reference in New Issue