카드 매입 승인 경로 Spring Boot 3 전환 (ACX-E2E-1785394564819)
Some checks are pending
Verify / source-contract (push) Waiting to run

This commit is contained in:
forge-bot 2026-07-30 09:39:22 +00:00
parent 77ecc7ae5d
commit 38fcb8b62f

View file

@ -0,0 +1,87 @@
package com.acquirex.domain;
import jakarta.persistence.*;
import jakarta.validation.constraints.*;
import lombok.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 카드 매입 정보 도메인 엔티티
* Jakarta EE 9+ 어노테이션 사용 (Spring Boot 3)
*/
@Entity
@Table(name = "acquisitions")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Acquisition {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank(message = "가맹점 번호는 필수입니다")
@Column(name = "merchant_id", nullable = false, length = 20)
private String merchantId;
@NotBlank(message = "카드번호는 필수입니다")
@Column(name = "card_number", nullable = false, length = 19)
private String cardNumber;
@NotNull(message = "매입 금액은 필수입니다")
@Positive(message = "매입 금액은 양수여야 합니다")
@Column(name = "amount", nullable = false, precision = 15, scale = 2)
private BigDecimal amount;
@NotBlank(message = "거래 번호는 필수입니다")
@Column(name = "transaction_id", nullable = false, unique = true, length = 30)
private String transactionId;
@Enumerated(EnumType.STRING)
@Column(name = "status", nullable = false, length = 20)
private AcquisitionStatus status;
@Column(name = "approval_code", length = 10)
private String approvalCode;
@Column(name = "approved_at")
private LocalDateTime approvedAt;
@Column(name = "created_at", nullable = false, updatable = false)
private LocalDateTime createdAt;
@Column(name = "updated_at")
private LocalDateTime updatedAt;
@PrePersist
protected void onCreate() {
createdAt = LocalDateTime.now();
updatedAt = LocalDateTime.now();
}
@PreUpdate
protected void onUpdate() {
updatedAt = LocalDateTime.now();
}
public void approve(String approvalCode) {
this.status = AcquisitionStatus.APPROVED;
this.approvalCode = approvalCode;
this.approvedAt = LocalDateTime.now();
}
public void reject(String reason) {
this.status = AcquisitionStatus.REJECTED;
}
}
/**
* 카드 매입 승인 상태 열거형
*/
enum AcquisitionStatus {
PENDING, APPROVED, REJECTED, CANCELLED
}