구매목록 조회
- 구매유형별로 조회할 수 있도록 orderType 추가
This commit is contained in:
		| @@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.GetMapping | ||||
| import org.springframework.web.bind.annotation.PostMapping | ||||
| import org.springframework.web.bind.annotation.RequestBody | ||||
| import org.springframework.web.bind.annotation.RequestMapping | ||||
| import org.springframework.web.bind.annotation.RequestParam | ||||
| import org.springframework.web.bind.annotation.RestController | ||||
|  | ||||
| @RestController | ||||
| @@ -33,6 +34,7 @@ class OrderController(private val service: OrderService) { | ||||
|  | ||||
|     @GetMapping("/audio-content") | ||||
|     fun getAudioContentOrderList( | ||||
|         @RequestParam(value = "orderType", required = false) orderType: OrderType? = null, | ||||
|         @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, | ||||
|         pageable: Pageable | ||||
|     ) = run { | ||||
| @@ -40,6 +42,7 @@ class OrderController(private val service: OrderService) { | ||||
|  | ||||
|         ApiResponse.ok( | ||||
|             service.getAudioContentOrderList( | ||||
|                 orderType = orderType, | ||||
|                 member = member, | ||||
|                 offset = pageable.offset, | ||||
|                 limit = pageable.pageSize.toLong() | ||||
|   | ||||
| @@ -20,6 +20,7 @@ interface OrderQueryRepository { | ||||
|     fun isExistOrderedAndOrderType(memberId: Long, contentId: Long): Pair<Boolean, OrderType?> | ||||
|     fun getAudioContentRemainingTime(memberId: Long, contentId: Long, timezone: String): String | ||||
|     fun getAudioContentOrderList( | ||||
|         orderType: OrderType?, | ||||
|         dateTime: LocalDateTime, | ||||
|         coverImageHost: String, | ||||
|         memberId: Long, | ||||
| @@ -27,7 +28,7 @@ interface OrderQueryRepository { | ||||
|         limit: Long = 10 | ||||
|     ): List<GetAudioContentOrderListItem> | ||||
|  | ||||
|     fun totalAudioContentOrderListCount(memberId: Long, dateTime: LocalDateTime): Int | ||||
|     fun totalAudioContentOrderListCount(orderType: OrderType?, memberId: Long, dateTime: LocalDateTime): Int | ||||
|     fun getAudioContentMainOrderList( | ||||
|         dateTime: LocalDateTime, | ||||
|         coverImageHost: String, | ||||
| @@ -117,12 +118,41 @@ class OrderQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : Orde | ||||
|     } | ||||
|  | ||||
|     override fun getAudioContentOrderList( | ||||
|         orderType: OrderType?, | ||||
|         dateTime: LocalDateTime, | ||||
|         coverImageHost: String, | ||||
|         memberId: Long, | ||||
|         offset: Long, | ||||
|         limit: Long | ||||
|     ): List<GetAudioContentOrderListItem> { | ||||
|         var where = order.member.id.eq(memberId) | ||||
|             .and(order.isActive.isTrue) | ||||
|  | ||||
|         when (orderType) { | ||||
|             OrderType.RENTAL -> { | ||||
|                 where = where.and( | ||||
|                     order.type.eq(OrderType.RENTAL) | ||||
|                         .and(order.startDate.before(dateTime)) | ||||
|                         .and(order.endDate.after(dateTime)) | ||||
|                 ) | ||||
|             } | ||||
|  | ||||
|             OrderType.KEEP -> { | ||||
|                 where = where.and(order.type.eq(OrderType.KEEP)) | ||||
|             } | ||||
|  | ||||
|             null -> { | ||||
|                 where = where.and( | ||||
|                     order.type.eq(OrderType.KEEP) | ||||
|                         .or( | ||||
|                             order.type.eq(OrderType.RENTAL) | ||||
|                                 .and(order.startDate.before(dateTime)) | ||||
|                                 .and(order.endDate.after(dateTime)) | ||||
|                         ) | ||||
|                 ) | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return queryFactory | ||||
|             .select( | ||||
|                 QGetAudioContentOrderListItem( | ||||
| @@ -141,39 +171,45 @@ class OrderQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : Orde | ||||
|             ) | ||||
|             .from(order) | ||||
|             .innerJoin(order.audioContent, audioContent) | ||||
|             .where( | ||||
|                 order.member.id.eq(memberId) | ||||
|                     .and(order.isActive.isTrue) | ||||
|                     .and( | ||||
|                         order.type.eq(OrderType.KEEP) | ||||
|                             .or( | ||||
|                                 order.type.eq(OrderType.RENTAL) | ||||
|                                     .and(order.startDate.before(dateTime)) | ||||
|                                     .and(order.endDate.after(dateTime)) | ||||
|                             ) | ||||
|                     ) | ||||
|             ) | ||||
|             .where(where) | ||||
|             .offset(offset) | ||||
|             .limit(limit) | ||||
|             .orderBy(order.createdAt.desc()) | ||||
|             .fetch() | ||||
|     } | ||||
|  | ||||
|     override fun totalAudioContentOrderListCount(memberId: Long, dateTime: LocalDateTime): Int { | ||||
|     override fun totalAudioContentOrderListCount(orderType: OrderType?, memberId: Long, dateTime: LocalDateTime): Int { | ||||
|         var where = order.member.id.eq(memberId) | ||||
|             .and(order.isActive.isTrue) | ||||
|  | ||||
|         when (orderType) { | ||||
|             OrderType.RENTAL -> { | ||||
|                 where = where.and( | ||||
|                     order.type.eq(OrderType.RENTAL) | ||||
|                         .and(order.startDate.before(dateTime)) | ||||
|                         .and(order.endDate.after(dateTime)) | ||||
|                 ) | ||||
|             } | ||||
|  | ||||
|             OrderType.KEEP -> { | ||||
|                 where = where.and(order.type.eq(OrderType.KEEP)) | ||||
|             } | ||||
|  | ||||
|             null -> { | ||||
|                 where = where.and( | ||||
|                     order.type.eq(OrderType.KEEP) | ||||
|                         .or( | ||||
|                             order.type.eq(OrderType.RENTAL) | ||||
|                                 .and(order.startDate.before(dateTime)) | ||||
|                                 .and(order.endDate.after(dateTime)) | ||||
|                         ) | ||||
|                 ) | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return queryFactory.select(order.id) | ||||
|             .from(order) | ||||
|             .where( | ||||
|                 order.member.id.eq(memberId) | ||||
|                     .and(order.isActive.isTrue) | ||||
|                     .and( | ||||
|                         order.type.eq(OrderType.KEEP) | ||||
|                             .or( | ||||
|                                 order.type.eq(OrderType.RENTAL) | ||||
|                                     .and(order.startDate.before(dateTime)) | ||||
|                                     .and(order.endDate.after(dateTime)) | ||||
|                             ) | ||||
|                     ) | ||||
|             ) | ||||
|             .where(where) | ||||
|             .fetch() | ||||
|             .size | ||||
|     } | ||||
|   | ||||
| @@ -90,15 +90,18 @@ class OrderService( | ||||
|     } | ||||
|  | ||||
|     fun getAudioContentOrderList( | ||||
|         orderType: OrderType? = null, | ||||
|         member: Member, | ||||
|         offset: Long, | ||||
|         limit: Long | ||||
|     ): GetAudioContentOrderListResponse { | ||||
|         val totalCount = repository.totalAudioContentOrderListCount( | ||||
|             orderType = orderType, | ||||
|             memberId = member.id!!, | ||||
|             dateTime = LocalDateTime.now() | ||||
|         ) | ||||
|         val orderItems = repository.getAudioContentOrderList( | ||||
|             orderType = orderType, | ||||
|             dateTime = LocalDateTime.now(), | ||||
|             coverImageHost = audioContentCoverImageHost, | ||||
|             memberId = member.id!!, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user