From e3f65c8941ed0aef34980493736435adcbe5d2d0 Mon Sep 17 00:00:00 2001 From: Klaus <klaus@vividnext.co.kr> Date: Wed, 29 May 2024 15:16:24 +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=20-=20=EC=BD=98=ED=85=90?= =?UTF-8?q?=EC=B8=A0=20=EC=88=98=EC=A0=95=20-=20=EA=B0=80=EA=B2=A9=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=EC=8B=9C=20=EB=B3=80=EA=B2=BD=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20=EB=A1=9C=EA=B7=B8=EB=A1=9C=20=EA=B8=B0=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/content/ContentPriceChangeLog.kt | 29 +++++++++++++++++++ .../ContentPriceChangeLogRepository.kt | 5 ++++ .../content/CreatorAdminContentService.kt | 8 +++++ 3 files changed, 42 insertions(+) create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/content/ContentPriceChangeLog.kt create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/content/ContentPriceChangeLogRepository.kt diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/ContentPriceChangeLog.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/ContentPriceChangeLog.kt new file mode 100644 index 0000000..0748f40 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/ContentPriceChangeLog.kt @@ -0,0 +1,29 @@ +package kr.co.vividnext.sodalive.content + +import java.time.LocalDateTime +import javax.persistence.Entity +import javax.persistence.FetchType +import javax.persistence.GeneratedValue +import javax.persistence.GenerationType +import javax.persistence.Id +import javax.persistence.JoinColumn +import javax.persistence.ManyToOne +import javax.persistence.PrePersist + +@Entity +data class ContentPriceChangeLog( + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + var id: Long? = null, + val prevPrice: Int, + var createdAt: LocalDateTime? = null +) { + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "content_id", nullable = false) + var audioContent: AudioContent? = null + + @PrePersist + fun prePersist() { + createdAt = LocalDateTime.now() + } +} diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/ContentPriceChangeLogRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/ContentPriceChangeLogRepository.kt new file mode 100644 index 0000000..b661467 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/ContentPriceChangeLogRepository.kt @@ -0,0 +1,5 @@ +package kr.co.vividnext.sodalive.content + +import org.springframework.data.jpa.repository.JpaRepository + +interface ContentPriceChangeLogRepository : JpaRepository<ContentPriceChangeLog, Long> diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/CreatorAdminContentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/CreatorAdminContentService.kt index 935f612..a99972c 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/CreatorAdminContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/content/CreatorAdminContentService.kt @@ -5,6 +5,8 @@ import com.fasterxml.jackson.databind.ObjectMapper import kr.co.vividnext.sodalive.aws.cloudfront.AudioContentCloudFront import kr.co.vividnext.sodalive.aws.s3.S3Uploader import kr.co.vividnext.sodalive.common.SodaException +import kr.co.vividnext.sodalive.content.ContentPriceChangeLog +import kr.co.vividnext.sodalive.content.ContentPriceChangeLogRepository import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.utils.generateFileName import org.springframework.beans.factory.annotation.Value @@ -16,6 +18,7 @@ import org.springframework.web.multipart.MultipartFile @Service class CreatorAdminContentService( private val repository: CreatorAdminContentRepository, + private val contentPriceChangeLogRepository: ContentPriceChangeLogRepository, private val audioContentCloudFront: AudioContentCloudFront, private val objectMapper: ObjectMapper, private val s3Uploader: S3Uploader, @@ -142,6 +145,11 @@ class CreatorAdminContentService( if (request.price != null) { if (request.price < 5) throw SodaException("콘텐츠의 최소금액은 5캔 입니다.") + + val contentPriceChangeLog = ContentPriceChangeLog(prevPrice = audioContent.price) + contentPriceChangeLog.audioContent = audioContent + contentPriceChangeLogRepository.save(contentPriceChangeLog) + audioContent.price = request.price } }