diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationController.kt index 3bbe3ed..10c897d 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationController.kt @@ -60,4 +60,9 @@ class AdminContentCurationController(private val service: AdminContentCurationSe fun removeItemInCuration( @RequestBody request: RemoveItemInCurationRequest ) = ApiResponse.ok(service.removeItemInCuration(request), "큐레이션 아이템을 제거했습니다.") + + @PutMapping("/orders/item") + fun updateItemInCurationOrders( + @RequestBody request: UpdateCurationItemOrdersRequest + ) = ApiResponse.ok(service.updateItemInCurationOrders(request), "수정되었습니다.") } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationItemRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationItemRepository.kt index 28bcc4d..bc1a5ee 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationItemRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationItemRepository.kt @@ -77,6 +77,7 @@ class AdminContentCurationItemQueryRepositoryImpl( audioContentCuration.id.eq(curationId), audioContentCurationItem.isActive.isTrue ) + .orderBy(audioContentCurationItem.orders.asc()) .fetch() } @@ -99,6 +100,7 @@ class AdminContentCurationItemQueryRepositoryImpl( audioContentCuration.id.eq(curationId), audioContentCurationItem.isActive.isTrue ) + .orderBy(audioContentCurationItem.orders.asc()) .fetch() } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationService.kt index 2d3427a..a9745f5 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationService.kt @@ -150,4 +150,19 @@ class AdminContentCurationService( audioContentCurationItem?.isActive = false } + + @Transactional + fun updateItemInCurationOrders(request: UpdateCurationItemOrdersRequest) { + val ids = request.itemIds + for (index in ids.indices) { + val item = contentCurationItemRepository.findByCurationIdAndItemId( + curationId = request.curationId, + itemId = ids[index] + ) + + if (item != null) { + item.orders = index + 1 + } + } + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/UpdateCurationItemOrdersRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/UpdateCurationItemOrdersRequest.kt new file mode 100644 index 0000000..b1975ed --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/UpdateCurationItemOrdersRequest.kt @@ -0,0 +1,6 @@ +package kr.co.vividnext.sodalive.admin.content.curation + +data class UpdateCurationItemOrdersRequest( + val curationId: Long, + val itemIds: List +)