카드 매입 승인 경로 Spring Boot 3 전환 #5
1 changed files with 87 additions and 0 deletions
87
src/main/java/com/acquirex/domain/Acquisition.java
Normal file
87
src/main/java/com/acquirex/domain/Acquisition.java
Normal 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
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue