From 6221af0ab6aa131912a9f2a9f609eea60312441f Mon Sep 17 00:00:00 2001 From: forge-bot Date: Thu, 30 Jul 2026 09:33:45 +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 --- .../approval/domain/ApprovalDomain.java | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 proj-acquirex/src/main/java/com/acquirex/approval/domain/ApprovalDomain.java diff --git a/proj-acquirex/src/main/java/com/acquirex/approval/domain/ApprovalDomain.java b/proj-acquirex/src/main/java/com/acquirex/approval/domain/ApprovalDomain.java new file mode 100644 index 0000000..24a976b --- /dev/null +++ b/proj-acquirex/src/main/java/com/acquirex/approval/domain/ApprovalDomain.java @@ -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(); + } +} \ No newline at end of file