From 21d6e755e9db3ad64a7fddea8ea146cf4e5abd85 Mon Sep 17 00:00:00 2001 From: Klaus Date: Wed, 30 Sep 2026 13:35:14 +0900 Subject: [PATCH] =?UTF-8?q?feat(gift):=20=EC=84=A0=EB=AC=BC=20=EA=B0=80?= =?UTF-8?q?=EA=B2=A9=EA=B3=BC=20=EC=8B=A0=EC=B2=AD=EB=B2=88=ED=98=B8=20?= =?UTF-8?q?=EC=A0=80=EC=9E=A5=EC=86=8C=EB=A5=BC=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../persistence/GiftApplicationNoSequence.kt | 20 +++++++++++++ .../GiftApplicationNoSequenceRepository.kt | 15 ++++++++++ .../adapter/out/persistence/GiftSizePrice.kt | 30 +++++++++++++++++++ .../persistence/GiftSizePriceRepository.kt | 8 +++++ 4 files changed, 73 insertions(+) create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftApplicationNoSequence.kt create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftApplicationNoSequenceRepository.kt create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftSizePrice.kt create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftSizePriceRepository.kt diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftApplicationNoSequence.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftApplicationNoSequence.kt new file mode 100644 index 00000000..988d1cd7 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftApplicationNoSequence.kt @@ -0,0 +1,20 @@ +package kr.co.vividnext.sodalive.v2.gift.adapter.out.persistence + +import kr.co.vividnext.sodalive.common.BaseEntity +import javax.persistence.Column +import javax.persistence.Entity +import javax.persistence.Table +import javax.persistence.UniqueConstraint + +@Entity +@Table( + name = "gift_application_no_sequence", + uniqueConstraints = [UniqueConstraint(name = "uk_gift_application_no_sequence_date", columnNames = ["sequence_date"])] +) +class GiftApplicationNoSequence( + @Column(name = "sequence_date", nullable = false, length = 8) + val sequenceDate: String, + + @Column(name = "last_sequence", nullable = false) + var lastSequence: Int +) : BaseEntity() diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftApplicationNoSequenceRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftApplicationNoSequenceRepository.kt new file mode 100644 index 00000000..b557d321 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftApplicationNoSequenceRepository.kt @@ -0,0 +1,15 @@ +package kr.co.vividnext.sodalive.v2.gift.adapter.out.persistence + +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.data.jpa.repository.Lock +import org.springframework.data.jpa.repository.Query +import org.springframework.data.repository.query.Param +import javax.persistence.LockModeType + +interface GiftApplicationNoSequenceRepository : JpaRepository { + fun findBySequenceDate(sequenceDate: String): GiftApplicationNoSequence? + + @Lock(LockModeType.PESSIMISTIC_WRITE) + @Query("select s from GiftApplicationNoSequence s where s.sequenceDate = :sequenceDate") + fun findBySequenceDateForUpdate(@Param("sequenceDate") sequenceDate: String): GiftApplicationNoSequence? +} diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftSizePrice.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftSizePrice.kt new file mode 100644 index 00000000..6f5c934c --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftSizePrice.kt @@ -0,0 +1,30 @@ +package kr.co.vividnext.sodalive.v2.gift.adapter.out.persistence + +import kr.co.vividnext.sodalive.common.BaseEntity +import kr.co.vividnext.sodalive.v2.gift.domain.GiftSize +import javax.persistence.Column +import javax.persistence.Entity +import javax.persistence.EnumType +import javax.persistence.Enumerated +import javax.persistence.Table +import javax.persistence.UniqueConstraint + +@Entity +@Table( + name = "gift_size_price", + uniqueConstraints = [UniqueConstraint(name = "uk_gift_size_price_size_code", columnNames = ["size_code"])] +) +class GiftSizePrice( + @Enumerated(EnumType.STRING) + @Column(name = "size_code", nullable = false, length = 20) + val sizeCode: GiftSize, + + @Column(name = "base_price_can", nullable = false) + var basePriceCan: Int, + + @Column(name = "sale_price_can", nullable = false) + var salePriceCan: Int, + + @Column(name = "is_active", nullable = false) + var isActive: Boolean = true +) : BaseEntity() diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftSizePriceRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftSizePriceRepository.kt new file mode 100644 index 00000000..19495ab1 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/gift/adapter/out/persistence/GiftSizePriceRepository.kt @@ -0,0 +1,8 @@ +package kr.co.vividnext.sodalive.v2.gift.adapter.out.persistence + +import kr.co.vividnext.sodalive.v2.gift.domain.GiftSize +import org.springframework.data.jpa.repository.JpaRepository + +interface GiftSizePriceRepository : JpaRepository { + fun findBySizeCode(sizeCode: GiftSize): GiftSizePrice? +}