From 0185c09d55e5ea607ae6f918a6f0975a96e73fdc Mon Sep 17 00:00:00 2001
From: Klaus <klaus@vividnext.co.kr>
Date: Wed, 17 Apr 2024 19:18:36 +0900
Subject: [PATCH] =?UTF-8?q?=ED=81=AC=EB=A6=AC=EC=97=90=EC=9D=B4=ED=84=B0?=
 =?UTF-8?q?=20=EA=B4=80=EB=A6=AC=EC=9E=90=20API=20-=20=EC=8B=9C=EB=A6=AC?=
 =?UTF-8?q?=EC=A6=88=20=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=82=AD=EC=A0=9C=20?=
 =?UTF-8?q?API=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../series/CreatorAdminContentSeriesController.kt  | 14 ++++++++++++++
 .../series/CreatorAdminContentSeriesService.kt     |  9 +++++++++
 .../content/RemoveContentToTheSeriesRequest.kt     |  3 +++
 3 files changed, 26 insertions(+)
 create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/series/content/RemoveContentToTheSeriesRequest.kt

diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/series/CreatorAdminContentSeriesController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/series/CreatorAdminContentSeriesController.kt
index cb1d109..ce1adfd 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/series/CreatorAdminContentSeriesController.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/series/CreatorAdminContentSeriesController.kt
@@ -3,6 +3,7 @@ package kr.co.vividnext.sodalive.creator.admin.content.series
 import kr.co.vividnext.sodalive.common.ApiResponse
 import kr.co.vividnext.sodalive.common.SodaException
 import kr.co.vividnext.sodalive.creator.admin.content.series.content.AddingContentToTheSeriesRequest
+import kr.co.vividnext.sodalive.creator.admin.content.series.content.RemoveContentToTheSeriesRequest
 import kr.co.vividnext.sodalive.member.Member
 import org.springframework.data.domain.Pageable
 import org.springframework.lang.Nullable
@@ -102,4 +103,17 @@ class CreatorAdminContentSeriesController(private val service: CreatorAdminConte
             "콘텐츠가 추가되었습니다."
         )
     }
+
+    @PutMapping("/remove/content")
+    fun removeContentInTheSeries(
+        @RequestBody request: RemoveContentToTheSeriesRequest,
+        @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
+    ) = run {
+        if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
+
+        ApiResponse.ok(
+            service.removeContentInTheSeries(request, memberId = member.id!!),
+            "콘텐츠를 삭제하였습니다."
+        )
+    }
 }
diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/series/CreatorAdminContentSeriesService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/series/CreatorAdminContentSeriesService.kt
index 31a5d18..d000fe4 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/series/CreatorAdminContentSeriesService.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/series/CreatorAdminContentSeriesService.kt
@@ -8,6 +8,7 @@ import kr.co.vividnext.sodalive.content.AudioContentRepository
 import kr.co.vividnext.sodalive.content.hashtag.HashTag
 import kr.co.vividnext.sodalive.content.hashtag.HashTagRepository
 import kr.co.vividnext.sodalive.creator.admin.content.series.content.AddingContentToTheSeriesRequest
+import kr.co.vividnext.sodalive.creator.admin.content.series.content.RemoveContentToTheSeriesRequest
 import kr.co.vividnext.sodalive.creator.admin.content.series.genre.CreatorAdminContentSeriesGenreRepository
 import kr.co.vividnext.sodalive.creator.admin.content.series.keyword.SeriesKeyword
 import kr.co.vividnext.sodalive.member.Member
@@ -222,4 +223,12 @@ class CreatorAdminContentSeriesService(
             throw SodaException("추가된 콘텐츠가 없습니다.")
         }
     }
+
+    @Transactional
+    fun removeContentInTheSeries(request: RemoveContentToTheSeriesRequest, memberId: Long) {
+        val series = repository.findByIdAndCreatorId(id = request.seriesId, creatorId = memberId)
+            ?: throw SodaException("잘못된 접근입니다.")
+
+        series.contentList.removeIf { it.content!!.id == request.contentId }
+    }
 }
diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/series/content/RemoveContentToTheSeriesRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/series/content/RemoveContentToTheSeriesRequest.kt
new file mode 100644
index 0000000..42d19dc
--- /dev/null
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/series/content/RemoveContentToTheSeriesRequest.kt
@@ -0,0 +1,3 @@
+package kr.co.vividnext.sodalive.creator.admin.content.series.content
+
+data class RemoveContentToTheSeriesRequest(val seriesId: Long, val contentId: Long)