카드 매입 승인 경로 Spring Boot 3 전환 #4
1 changed files with 76 additions and 0 deletions
|
|
@ -0,0 +1,76 @@
|
|||
package com.acquirex.approval.domain;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Positive;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.UUID;
|
||||
|
||||
/** 카드 매입 승인 도메인 - Jakarta EE 9+ */
|
||||
public class ApprovalDomain {
|
||||
|
||||
public enum Status { PENDING, APPROVED, REJECTED, CANCELLED }
|
||||
|
||||
public static class Request {
|
||||
@NotBlank(message = "거래 ID는 필수입니다")
|
||||
private String transactionId;
|
||||
@NotBlank(message = "가맹점 ID는 필수입니다")
|
||||
private String merchantId;
|
||||
@NotNull @Positive private BigDecimal amount;
|
||||
@NotBlank private String cardNumber;
|
||||
private LocalDateTime requestTime = LocalDateTime.now();
|
||||
|
||||
public Request() {}
|
||||
public Request(String transactionId, String merchantId, BigDecimal amount, String cardNumber) {
|
||||
this.transactionId = transactionId; this.merchantId = merchantId;
|
||||
this.amount = amount; this.cardNumber = cardNumber;
|
||||
}
|
||||
public String getTransactionId() { return transactionId; }
|
||||
public void setTransactionId(String transactionId) { this.transactionId = transactionId; }
|
||||
public String getMerchantId() { return merchantId; }
|
||||
public void setMerchantId(String merchantId) { this.merchantId = merchantId; }
|
||||
public BigDecimal getAmount() { return amount; }
|
||||
public void setAmount(BigDecimal amount) { this.amount = amount; }
|
||||
public String getCardNumber() { return cardNumber; }
|
||||
public void setCardNumber(String cardNumber) { this.cardNumber = cardNumber; }
|
||||
public LocalDateTime getRequestTime() { return requestTime; }
|
||||
}
|
||||
|
||||
public static class Response {
|
||||
private String approvalId;
|
||||
private String transactionId;
|
||||
private Status status;
|
||||
private String message;
|
||||
private LocalDateTime approvalTime = LocalDateTime.now();
|
||||
|
||||
public Response() {}
|
||||
public Response(String approvalId, String transactionId, Status status, String message) {
|
||||
this.approvalId = approvalId; this.transactionId = transactionId;
|
||||
this.status = status; this.message = message;
|
||||
}
|
||||
public static Response success(String approvalId, String transactionId) {
|
||||
return new Response(approvalId, transactionId, Status.APPROVED, "매입 승인 완료");
|
||||
}
|
||||
public static Response rejected(String transactionId, String reason) {
|
||||
return new Response(null, transactionId, Status.REJECTED, reason);
|
||||
}
|
||||
public static Response cancelled(String approvalId) {
|
||||
return new Response(approvalId, null, Status.CANCELLED, "매입 취소 완료");
|
||||
}
|
||||
public String getApprovalId() { return approvalId; }
|
||||
public void setApprovalId(String approvalId) { this.approvalId = approvalId; }
|
||||
public String getTransactionId() { return transactionId; }
|
||||
public void setTransactionId(String transactionId) { this.transactionId = transactionId; }
|
||||
public Status getStatus() { return status; }
|
||||
public void setStatus(Status status) { this.status = status; }
|
||||
public String getMessage() { return message; }
|
||||
public void setMessage(String message) { this.message = message; }
|
||||
public LocalDateTime getApprovalTime() { return approvalTime; }
|
||||
public void setApprovalTime(LocalDateTime approvalTime) { this.approvalTime = approvalTime; }
|
||||
}
|
||||
|
||||
public static String generateApprovalId() {
|
||||
return "APR-" + UUID.randomUUID().toString().substring(0, 8).toUpperCase();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue