BundleAudioContent 제거

This commit is contained in:
2024-11-07 18:48:29 +09:00
parent efdf1d3eed
commit eee59855cc
5 changed files with 28 additions and 113 deletions

View File

@@ -160,14 +160,10 @@ class AudioContentService(
}
// contentFile 체크
if (contentFile == null && request.type == AudioContentType.INDIVIDUAL) {
if (contentFile == null) {
throw SodaException("콘텐츠를 선택해 주세요.")
}
if (request.type == AudioContentType.BUNDLE && request.childIds == null) {
throw SodaException("묶음상품의 하위상품을 선택해 주세요.")
}
// 테마 체크
val theme = themeQueryRepository.findThemeByIdAndActive(id = request.themeId)
?: throw SodaException("잘못된 테마입니다. 다시 선택해 주세요.")
@@ -178,7 +174,6 @@ class AudioContentService(
val audioContent = AudioContent(
title = request.title,
detail = request.detail,
type = request.type,
price = if (request.price > 0) {
request.price
} else {
@@ -188,18 +183,12 @@ class AudioContentService(
limited = request.limited,
remaining = request.limited,
isAdult = request.isAdult,
isGeneratePreview = if (request.type == AudioContentType.INDIVIDUAL) {
request.isGeneratePreview
} else {
false
},
isGeneratePreview = request.isGeneratePreview,
isOnlyRental = if (request.limited != null && request.limited > 0) false else request.isOnlyRental,
isCommentAvailable = request.isCommentAvailable
)
audioContent.theme = theme
audioContent.member = member
audioContent.isActive = request.type == AudioContentType.BUNDLE
repository.save(audioContent)
// 태그 분리, #추가, 등록
@@ -246,48 +235,34 @@ class AudioContentService(
audioContent.coverImage = coverImagePath
if (contentFile != null && request.type == AudioContentType.INDIVIDUAL) {
// 콘텐츠 파일명 생성
val contentFileName = generateFileName(prefix = "${audioContent.id}-content")
// 콘텐츠 파일명 생성
val contentFileName = generateFileName(prefix = "${audioContent.id}-content")
// 콘텐츠 파일 업로드
metadata = ObjectMetadata()
metadata.contentLength = contentFile.size
metadata.addUserMetadata(
"generate_preview",
if (request.price > 0) {
request.isGeneratePreview.toString()
} else {
"false"
}
)
if (request.previewStartTime != null && request.previewEndTime != null) {
metadata.addUserMetadata("preview_start_time", request.previewStartTime)
metadata.addUserMetadata("preview_end_time", request.previewEndTime)
// 콘텐츠 파일 업로드
metadata = ObjectMetadata()
metadata.contentLength = contentFile.size
metadata.addUserMetadata(
"generate_preview",
if (request.price > 0) {
request.isGeneratePreview.toString()
} else {
"false"
}
)
val contentPath = s3Uploader.upload(
inputStream = contentFile.inputStream,
bucket = audioContentBucket,
filePath = "input/${audioContent.id}/$contentFileName",
metadata = metadata
)
audioContent.content = contentPath
if (request.previewStartTime != null && request.previewEndTime != null) {
metadata.addUserMetadata("preview_start_time", request.previewStartTime)
metadata.addUserMetadata("preview_end_time", request.previewEndTime)
}
if (request.childIds != null && request.type == AudioContentType.BUNDLE) {
for (childId in request.childIds) {
val childContent = repository.findByIdAndActive(childId)
?: continue
val contentPath = s3Uploader.upload(
inputStream = contentFile.inputStream,
bucket = audioContentBucket,
filePath = "input/${audioContent.id}/$contentFileName",
metadata = metadata
)
val bundleAudioContent = BundleAudioContent()
bundleAudioContent.parent = audioContent
bundleAudioContent.child = childContent
audioContent.children.add(bundleAudioContent)
}
}
audioContent.content = contentPath
return CreateAudioContentResponse(contentId = audioContent.id!!)
}
@@ -438,9 +413,6 @@ class AudioContentService(
}
fun getDetail(id: Long, member: Member, timezone: String): GetAudioContentDetailResponse {
// 묶음 콘텐츠 조회
val bundleAudioContentList = repository.findBundleByContentId(contentId = id)
// 오디오 콘텐츠 조회 (content_id, 제목, 내용, 테마, 태그, 19여부, 이미지, 콘텐츠 PATH)
val audioContent = repository.findByIdOrNull(id)
?: throw SodaException("잘못된 콘텐츠 입니다.\n다시 시도해 주세요.")
@@ -455,23 +427,16 @@ class AudioContentService(
memberId = member.id!!
)
// 구매 여부 확인
val isExistsBundleAudioContent = bundleAudioContentList
.map { orderRepository.isExistOrdered(memberId = member.id!!, contentId = it.id!!) }
.contains(true)
val (isExistsAudioContent, orderType) = orderRepository.isExistOrderedAndOrderType(
memberId = member.id!!,
contentId = audioContent.id!!
)
val existOrdered = isExistsBundleAudioContent || isExistsAudioContent
// 차단된 사용자 체크
val isBlocked = blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = creatorId)
if (isBlocked && !existOrdered) throw SodaException("${creator.nickname}님의 요청으로 콘텐츠 접근이 제한됩니다.")
if (isBlocked && !isExistsAudioContent) throw SodaException("${creator.nickname}님의 요청으로 콘텐츠 접근이 제한됩니다.")
val orderSequence = if (existOrdered) {
val orderSequence = if (isExistsAudioContent) {
limitedEditionOrderRepository.getOrderSequence(
contentId = audioContent.id!!,
memberId = member.id!!
@@ -481,7 +446,7 @@ class AudioContentService(
}
if (
!existOrdered &&
!isExistsAudioContent &&
!audioContent.isActive &&
audioContent.releaseDate != null &&
audioContent.releaseDate!! < LocalDateTime.now()
@@ -536,7 +501,6 @@ class AudioContentService(
audioContentCloudFront.generateSignedURL(
resourcePath = if (
isExistsAudioContent ||
isExistsBundleAudioContent ||
audioContent.member!!.id!! == member.id!! ||
audioContent.price <= 0
) {
@@ -622,7 +586,7 @@ class AudioContentService(
isAdult = audioContent.isAdult,
isMosaic = audioContent.isAdult && member.auth == null,
isOnlyRental = audioContent.isOnlyRental,
existOrdered = existOrdered,
existOrdered = isExistsAudioContent,
orderType = orderType,
remainingTime = remainingTime,
creatorOtherContentList = creatorOtherContentList,