콘텐츠 상세
- 한정판 응답값 추가
This commit is contained in:
		| @@ -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() | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user