카드 매입 승인 경로 Spring Boot 3 전환 #4

Closed
forge-bot wants to merge 8 commits from forge/ACX-E2E-1785394564819-attempt-5-run-a66e345e78de into main
Showing only changes of commit 6221af0ab6 - Show all commits

View file

@ -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();
}
}