parent
2d1f333095
commit
327f7ad341
|
@ -14,6 +14,7 @@ import kr.co.vividnext.sodalive.content.like.AudioContentLikeRepository
|
|||
import kr.co.vividnext.sodalive.content.like.PutAudioContentLikeRequest
|
||||
import kr.co.vividnext.sodalive.content.like.PutAudioContentLikeResponse
|
||||
import kr.co.vividnext.sodalive.content.main.GetAudioContentRanking
|
||||
import kr.co.vividnext.sodalive.content.order.LimitedEditionOrderRepository
|
||||
import kr.co.vividnext.sodalive.content.order.OrderRepository
|
||||
import kr.co.vividnext.sodalive.content.order.OrderType
|
||||
import kr.co.vividnext.sodalive.content.pin.PinContent
|
||||
|
@ -47,6 +48,7 @@ class AudioContentService(
|
|||
private val blockMemberRepository: BlockMemberRepository,
|
||||
private val hashTagRepository: HashTagRepository,
|
||||
private val orderRepository: OrderRepository,
|
||||
private val limitedEditionOrderRepository: LimitedEditionOrderRepository,
|
||||
private val themeQueryRepository: AudioContentThemeQueryRepository,
|
||||
private val playbackTrackingRepository: PlaybackTrackingRepository,
|
||||
private val commentRepository: AudioContentCommentRepository,
|
||||
|
@ -465,11 +467,21 @@ class AudioContentService(
|
|||
contentId = audioContent.id!!
|
||||
)
|
||||
|
||||
val existOrdered = isExistsBundleAudioContent || isExistsAudioContent
|
||||
val orderSequence = if (existOrdered) {
|
||||
limitedEditionOrderRepository.getOrderSequence(
|
||||
contentId = audioContent.id!!,
|
||||
memberId = member.id!!
|
||||
)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
|
||||
if (
|
||||
!isExistsAudioContent &&
|
||||
!isExistsBundleAudioContent &&
|
||||
!existOrdered &&
|
||||
!audioContent.isActive &&
|
||||
audioContent.releaseDate == null
|
||||
audioContent.releaseDate != null &&
|
||||
audioContent.releaseDate!! < LocalDateTime.now()
|
||||
) {
|
||||
throw SodaException("잘못된 콘텐츠 입니다.\n다시 시도해 주세요.")
|
||||
}
|
||||
|
@ -593,11 +605,14 @@ class AudioContentService(
|
|||
price = audioContent.price,
|
||||
duration = audioContent.duration ?: "",
|
||||
releaseDate = releaseDate,
|
||||
totalContentCount = audioContent.limited,
|
||||
remainingContentCount = audioContent.remaining,
|
||||
orderSequence = orderSequence,
|
||||
isActivePreview = audioContent.isGeneratePreview,
|
||||
isAdult = audioContent.isAdult,
|
||||
isMosaic = audioContent.isAdult && member.auth == null,
|
||||
isOnlyRental = audioContent.isOnlyRental,
|
||||
existOrdered = isExistsBundleAudioContent || isExistsAudioContent,
|
||||
existOrdered = existOrdered,
|
||||
orderType = orderType,
|
||||
remainingTime = remainingTime,
|
||||
creatorOtherContentList = creatorOtherContentList,
|
||||
|
|
|
@ -15,6 +15,9 @@ data class GetAudioContentDetailResponse(
|
|||
val price: Int,
|
||||
val duration: String,
|
||||
val releaseDate: String?,
|
||||
val totalContentCount: Int?,
|
||||
val remainingContentCount: Int?,
|
||||
val orderSequence: Int?,
|
||||
val isActivePreview: Boolean,
|
||||
val isAdult: Boolean,
|
||||
val isMosaic: Boolean,
|
||||
|
|
|
@ -1,13 +1,18 @@
|
|||
package kr.co.vividnext.sodalive.content.order
|
||||
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory
|
||||
import kr.co.vividnext.sodalive.content.QAudioContent.audioContent
|
||||
import kr.co.vividnext.sodalive.content.order.QLimitedEditionOrder.limitedEditionOrder
|
||||
import kr.co.vividnext.sodalive.content.order.QOrder.order
|
||||
import kr.co.vividnext.sodalive.member.QMember.member
|
||||
import org.springframework.data.jpa.repository.JpaRepository
|
||||
|
||||
interface LimitedEditionOrderRepository : JpaRepository<LimitedEditionOrder, Long>, LimitedEditionOrderQueryRepository
|
||||
|
||||
interface LimitedEditionOrderQueryRepository {
|
||||
fun getNextSequence(contentId: Long): Int
|
||||
|
||||
fun getOrderSequence(contentId: Long, memberId: Long): Int?
|
||||
}
|
||||
|
||||
class LimitedEditionOrderQueryRepositoryImpl(
|
||||
|
@ -16,6 +21,7 @@ class LimitedEditionOrderQueryRepositoryImpl(
|
|||
override fun getNextSequence(contentId: Long): Int {
|
||||
val maxSequence = queryFactory.select(limitedEditionOrder.sequence)
|
||||
.from(limitedEditionOrder)
|
||||
.innerJoin(limitedEditionOrder.audioContent, audioContent)
|
||||
.where(limitedEditionOrder.audioContent.id.eq(contentId))
|
||||
.orderBy(limitedEditionOrder.sequence.desc())
|
||||
.limit(1)
|
||||
|
@ -27,4 +33,17 @@ class LimitedEditionOrderQueryRepositoryImpl(
|
|||
maxSequence + 1
|
||||
}
|
||||
}
|
||||
|
||||
override fun getOrderSequence(contentId: Long, memberId: Long): Int? {
|
||||
return queryFactory.select(limitedEditionOrder.sequence)
|
||||
.from(limitedEditionOrder)
|
||||
.innerJoin(limitedEditionOrder.audioContent, audioContent)
|
||||
.innerJoin(limitedEditionOrder.order, order)
|
||||
.innerJoin(order.member, member)
|
||||
.where(
|
||||
limitedEditionOrder.audioContent.id.eq(contentId)
|
||||
.and(limitedEditionOrder.order.member.id.eq(memberId))
|
||||
)
|
||||
.fetchFirst()
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue