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 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 } }