diff --git a/src/views/Content/ContentList.vue b/src/views/Content/ContentList.vue index 0960683..11a26a9 100644 --- a/src/views/Content/ContentList.vue +++ b/src/views/Content/ContentList.vue @@ -378,6 +378,33 @@ label="가격" required /> + ※ 유료 콘텐츠 가격을 입력하면 해당 콘텐츠의 미리듣기 시간을 설정할 수 있습니다.
미리듣기 시간은 최소 30초 이상 설정해야 합니다. + + + + + + + 미리듣기 시간설정 + + + + + + + + ~ + + + + + @@ -606,6 +633,12 @@ export default { } }, + isValidTimeFormat(time) { + // 정규 표현식을 사용하여 "HH:mm:ss" 형식인지 확인 + const regex = /^([0-1]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/; + return regex.test(time); + }, + async save() { if ( this.audio_content.title === null || @@ -647,7 +680,50 @@ export default { price: this.audio_content.price, themeId: this.audio_content.theme_id, isAdult: this.audio_content.is_adult, - isCommentAvailable: this.audio_content.is_comment_available, + isCommentAvailable: this.audio_content.is_comment_available + } + + let previewStartTime = this.audio_content.preview_start_time; + let previewEndTime = this.audio_content.preview_end_time; + + if ( + previewStartTime !== undefined && + previewStartTime !== null && + previewStartTime.trim() !== '' && + previewEndTime !== undefined && + previewEndTime !== null && + previewEndTime.trim() !== '' + ) { + if ( + !this.isValidTimeFormat(previewStartTime) || + !this.isValidTimeFormat(previewEndTime) + ) { + this.notifyError("미리 듣기 시간 형식은 00:30:00 과 같아야 합니다") + return + } + + // 시간을 분해하고 계산하는 나머지 코드는 이전과 동일합니다. + const [h1, m1, s1] = previewStartTime.split(':').map(Number); + const [h2, m2, s2] = previewEndTime.split(':').map(Number); + const totalSeconds1 = h1 * 3600 + m1 * 60 + s1; + const totalSeconds2 = h2 * 3600 + m2 * 60 + s2; + const timeDifference = totalSeconds2 - totalSeconds1; + + if (timeDifference < 30) { + this.notifyError("미리 듣기의 최소 시간은 30초 입니다.") + return + } + + request["previewStartTime"] = previewStartTime + request["previewEndTime"] = previewEndTime + } else { + if ( + (previewStartTime !== undefined && previewStartTime.trim() !== '') || + (previewEndTime !== undefined && previewEndTime.trim() !== '') + ) { + this.notifyError("미리 듣기 시작 시간과 종료 시간 둘 다 입력을 하거나 둘 다 입력 하지 않아야 합니다.") + return + } } formData.append("coverImage", this.audio_content.cover_image)