크리에이터 관리자 API

- 기존 콘텐츠를 시리즈에 추가하는 API 추가
This commit is contained in:
Klaus 2024-04-17 18:52:10 +09:00
parent b849de00dc
commit 02e6e77453
3 changed files with 48 additions and 0 deletions

View File

@ -2,6 +2,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.member.Member
import org.springframework.data.domain.Pageable
import org.springframework.lang.Nullable
@ -11,6 +12,7 @@ import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.PutMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestPart
import org.springframework.web.bind.annotation.RestController
@ -87,4 +89,17 @@ class CreatorAdminContentSeriesController(private val service: CreatorAdminConte
)
)
}
@PostMapping("/add/content")
fun addingContentToTheSeries(
@RequestBody request: AddingContentToTheSeriesRequest,
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
) = run {
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
ApiResponse.ok(
service.addingContentToTheSeries(request, memberId = member.id!!),
"콘텐츠가 추가되었습니다."
)
}
}

View File

@ -4,8 +4,10 @@ import com.amazonaws.services.s3.model.ObjectMetadata
import com.fasterxml.jackson.databind.ObjectMapper
import kr.co.vividnext.sodalive.aws.s3.S3Uploader
import kr.co.vividnext.sodalive.common.SodaException
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.genre.CreatorAdminContentSeriesGenreRepository
import kr.co.vividnext.sodalive.creator.admin.content.series.keyword.SeriesKeyword
import kr.co.vividnext.sodalive.member.Member
@ -20,6 +22,7 @@ class CreatorAdminContentSeriesService(
private val repository: CreatorAdminContentSeriesRepository,
private val genreRepository: CreatorAdminContentSeriesGenreRepository,
private val hashTagRepository: HashTagRepository,
private val audioContentRepository: AudioContentRepository,
private val s3Uploader: S3Uploader,
private val objectMapper: ObjectMapper,
@ -195,4 +198,28 @@ class CreatorAdminContentSeriesService(
return GetCreatorAdminContentSeriesContentResponse(totalCount, seriesContentList)
}
@Transactional
fun addingContentToTheSeries(request: AddingContentToTheSeriesRequest, memberId: Long) {
val series = repository.findByIdAndCreatorId(id = request.seriesId, creatorId = memberId)
?: throw SodaException("잘못된 접근입니다.")
val seriesContentList = mutableListOf<SeriesContent>()
for (contentId in request.contentIdList) {
val content = audioContentRepository.findByIdAndCreatorId(contentId = contentId, creatorId = memberId)
?: continue
val seriesContent = SeriesContent()
seriesContent.series = series
seriesContent.content = content
seriesContentList.add(seriesContent)
}
if (seriesContentList.size > 0) {
series.contentList.addAll(seriesContentList)
} else {
throw SodaException("추가된 콘텐츠가 없습니다.")
}
}
}

View File

@ -0,0 +1,6 @@
package kr.co.vividnext.sodalive.creator.admin.content.series.content
data class AddingContentToTheSeriesRequest(
val seriesId: Long,
val contentIdList: List<Long>
)