From 6bb9a58a181e522ebd6d603483e6ad39e65413aa Mon Sep 17 00:00:00 2001 From: forge-bot Date: Thu, 30 Jul 2026 10:50:41 +0000 Subject: [PATCH] =?UTF-8?q?=EC=B9=B4=EB=93=9C=20=EB=A7=A4=EC=9E=85=20?= =?UTF-8?q?=EC=8A=B9=EC=9D=B8=20=EA=B2=BD=EB=A1=9C=20Spring=20Boot=203=20?= =?UTF-8?q?=EC=A0=84=ED=99=98=20(ACX-E2E-1785394564819)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/acquirex/domain/DomainClasses.java | 131 ++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 src/main/java/com/acquirex/domain/DomainClasses.java diff --git a/src/main/java/com/acquirex/domain/DomainClasses.java b/src/main/java/com/acquirex/domain/DomainClasses.java new file mode 100644 index 0000000..ffd4576 --- /dev/null +++ b/src/main/java/com/acquirex/domain/DomainClasses.java @@ -0,0 +1,131 @@ +package com.acquirex.domain; + +import jakarta.persistence.*; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +// ===== AcquisitionCard Entity ===== +@Entity +@Table(name = "acquisition_cards") +class AcquisitionCard { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @NotBlank + @Column(name = "card_number", length = 20) + private String cardNumber; + + @NotBlank + @Column(name = "card_company_code", length = 10) + private String cardCompanyCode; + + @NotNull + @Column(name = "merchant_number", length = 15) + private String merchantNumber; + + @Enumerated(EnumType.STRING) + @Column(name = "status", length = 20) + private CardStatus status = CardStatus.PENDING; + + @Column(name = "created_at") + private LocalDateTime createdAt; + + @Column(name = "updated_at") + private LocalDateTime updatedAt; + + public enum CardStatus { PENDING, APPROVED, REJECTED, CANCELLED } + + @PrePersist + protected void onCreate() { + createdAt = LocalDateTime.now(); + updatedAt = LocalDateTime.now(); + } + + @PreUpdate + protected void onUpdate() { + updatedAt = LocalDateTime.now(); + } + + public Long getId() { return id; } + public void setId(Long id) { this.id = id; } + public String getCardNumber() { return cardNumber; } + public void setCardNumber(String cardNumber) { this.cardNumber = cardNumber; } + public String getCardCompanyCode() { return cardCompanyCode; } + public void setCardCompanyCode(String cardCompanyCode) { this.cardCompanyCode = cardCompanyCode; } + public String getMerchantNumber() { return merchantNumber; } + public void setMerchantNumber(String merchantNumber) { this.merchantNumber = merchantNumber; } + public CardStatus getStatus() { return status; } + public void setStatus(CardStatus status) { this.status = status; } + public LocalDateTime getCreatedAt() { return createdAt; } + public LocalDateTime getUpdatedAt() { return updatedAt; } +} + +// ===== ApprovalRequest Entity ===== +@Entity +@Table(name = "approval_requests") +class ApprovalRequest { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @NotNull + @Column(name = "card_id") + private Long cardId; + + @NotBlank + @Column(name = "transaction_id", length = 30, unique = true) + private String transactionId; + + @NotNull + @Column(name = "amount", precision = 15, scale = 2) + private BigDecimal amount; + + @Column(name = "vat", precision = 15, scale = 2) + private BigDecimal vat; + + @Enumerated(EnumType.STRING) + @Column(name = "approval_status", length = 20) + private ApprovalStatus approvalStatus = ApprovalStatus.REQUESTED; + + @Column(name = "approval_number", length = 20) + private String approvalNumber; + + @Column(name = "requested_at") + private LocalDateTime requestedAt; + + @Column(name = "approved_at") + private LocalDateTime approvedAt; + + @Column(name = "rejection_reason", length = 200) + private String rejectionReason; + + public enum ApprovalStatus { REQUESTED, APPROVED, REJECTED, CANCELLED } + + @PrePersist + protected void onCreate() { + requestedAt = LocalDateTime.now(); + } + + public Long getId() { return id; } + public void setId(Long id) { this.id = id; } + public Long getCardId() { return cardId; } + public void setCardId(Long cardId) { this.cardId = cardId; } + public String getTransactionId() { return transactionId; } + public void setTransactionId(String transactionId) { this.transactionId = transactionId; } + public BigDecimal getAmount() { return amount; } + public void setAmount(BigDecimal amount) { this.amount = amount; } + public BigDecimal getVat() { return vat; } + public void setVat(BigDecimal vat) { this.vat = vat; } + public ApprovalStatus getApprovalStatus() { return approvalStatus; } + public void setApprovalStatus(ApprovalStatus approvalStatus) { this.approvalStatus = approvalStatus; } + public String getApprovalNumber() { return approvalNumber; } + public void setApprovalNumber(String approvalNumber) { this.approvalNumber = approvalNumber; } + public LocalDateTime getRequestedAt() { return requestedAt; } + public LocalDateTime getApprovedAt() { return approvedAt; } + public void setApprovedAt(LocalDateTime approvedAt) { this.approvedAt = approvedAt; } + public String getRejectionReason() { return rejectionReason; } + public void setRejectionReason(String rejectionReason) { this.rejectionReason = rejectionReason; } +} \ No newline at end of file