콘텐츠 업로드

- 예약 업로드를 위해 공개날짜를 추가
This commit is contained in:
Klaus 2024-01-08 22:53:42 +09:00
parent 4923a04c9d
commit 26d9b6cf35
3 changed files with 37 additions and 20 deletions

View File

@ -5,6 +5,7 @@ import kr.co.vividnext.sodalive.content.hashtag.AudioContentHashTag
import kr.co.vividnext.sodalive.content.main.curation.AudioContentCuration import kr.co.vividnext.sodalive.content.main.curation.AudioContentCuration
import kr.co.vividnext.sodalive.content.theme.AudioContentTheme import kr.co.vividnext.sodalive.content.theme.AudioContentTheme
import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.Member
import java.time.LocalDateTime
import javax.persistence.CascadeType import javax.persistence.CascadeType
import javax.persistence.Column import javax.persistence.Column
import javax.persistence.Entity import javax.persistence.Entity
@ -32,6 +33,7 @@ data class AudioContent(
@Column(columnDefinition = "TEXT", nullable = false) @Column(columnDefinition = "TEXT", nullable = false)
var detail: String, var detail: String,
val price: Int = 0, val price: Int = 0,
var releaseDate: LocalDateTime? = null,
@Enumerated(value = EnumType.STRING) @Enumerated(value = EnumType.STRING)
val type: AudioContentType = AudioContentType.INDIVIDUAL, val type: AudioContentType = AudioContentType.INDIVIDUAL,
val isGeneratePreview: Boolean = true, val isGeneratePreview: Boolean = true,

View File

@ -18,6 +18,7 @@ import kr.co.vividnext.sodalive.content.order.OrderRepository
import kr.co.vividnext.sodalive.content.order.OrderType import kr.co.vividnext.sodalive.content.order.OrderType
import kr.co.vividnext.sodalive.content.theme.AudioContentThemeQueryRepository import kr.co.vividnext.sodalive.content.theme.AudioContentThemeQueryRepository
import kr.co.vividnext.sodalive.explorer.ExplorerQueryRepository import kr.co.vividnext.sodalive.explorer.ExplorerQueryRepository
import kr.co.vividnext.sodalive.extensions.convertLocalDateTime
import kr.co.vividnext.sodalive.fcm.FcmEvent import kr.co.vividnext.sodalive.fcm.FcmEvent
import kr.co.vividnext.sodalive.fcm.FcmEventType import kr.co.vividnext.sodalive.fcm.FcmEventType
import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.Member
@ -143,6 +144,15 @@ class AudioContentService(
// 미리듣기 시간 체크 // 미리듣기 시간 체크
validatePreviewTime(request.previewStartTime, request.previewEndTime) validatePreviewTime(request.previewStartTime, request.previewEndTime)
val releaseDate = if (request.releaseDate != null) {
request.releaseDate.convertLocalDateTime("yyyy-MM-dd HH:mm")
.atZone(ZoneId.of(request.timezone))
.withZoneSameInstant(ZoneId.of("UTC"))
.toLocalDateTime()
} else {
null
}
// contentFile 체크 // contentFile 체크
if (contentFile == null && request.type == AudioContentType.INDIVIDUAL) { if (contentFile == null && request.type == AudioContentType.INDIVIDUAL) {
throw SodaException("콘텐츠를 선택해 주세요.") throw SodaException("콘텐츠를 선택해 주세요.")
@ -168,6 +178,7 @@ class AudioContentService(
} else { } else {
0 0
}, },
releaseDate = releaseDate,
isAdult = request.isAdult, isAdult = request.isAdult,
isGeneratePreview = if (request.type == AudioContentType.INDIVIDUAL) { isGeneratePreview = if (request.type == AudioContentType.INDIVIDUAL) {
request.isGeneratePreview request.isGeneratePreview
@ -346,6 +357,7 @@ class AudioContentService(
) )
) )
if (audioContent.releaseDate == null) {
applicationEventPublisher.publishEvent( applicationEventPublisher.publishEvent(
FcmEvent( FcmEvent(
type = FcmEventType.UPLOAD_CONTENT, type = FcmEventType.UPLOAD_CONTENT,
@ -370,6 +382,7 @@ class AudioContentService(
) )
) )
} }
}
fun getDetail(id: Long, member: Member, timezone: String): GetAudioContentDetailResponse { fun getDetail(id: Long, member: Member, timezone: String): GetAudioContentDetailResponse {
// 묶음 콘텐츠 조회 // 묶음 콘텐츠 조회

View File

@ -5,6 +5,8 @@ data class CreateAudioContentRequest(
val detail: String, val detail: String,
val tags: String, val tags: String,
val price: Int, val price: Int,
val timezone: String,
val releaseDate: String? = null,
val themeId: Long = 0, val themeId: Long = 0,
val isAdult: Boolean = false, val isAdult: Boolean = false,
val isGeneratePreview: Boolean = true, val isGeneratePreview: Boolean = true,