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

Closed
forge-bot wants to merge 8 commits from forge/ACX-E2E-1785394564819-attempt-11-run-9cb9668af74b into main
Showing only changes of commit 382d65ce08 - Show all commits

View file

@ -0,0 +1,59 @@
package com.acquirex.approval;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
@Slf4j
@Service
public class CardAcquisitionApprovalService {
private final Map<String, CardAcquisitionApprovalResponse> approvalStore = new ConcurrentHashMap<>();
public CardAcquisitionApprovalResponse processApproval(CardAcquisitionApprovalRequest request) {
log.info("카드 매입 승인 요청 처리: merchantId={}, amount={}",
request.getMerchantId(), request.getTransactionAmount());
String approvalId = generateApprovalId();
CardAcquisitionApprovalStatus status = determineApprovalStatus(request);
CardAcquisitionApprovalResponse response = CardAcquisitionApprovalResponse.builder()
.approvalId(approvalId)
.merchantId(request.getMerchantId())
.cardCompanyCode(request.getCardCompanyCode())
.transactionAmount(request.getTransactionAmount())
.status(status)
.statusMessage(status.getDescription())
.approvalDateTime(LocalDateTime.now())
.responseCode(status == CardAcquisitionApprovalStatus.APPROVED ? "0000" : "9999")
.responseMessage(status == CardAcquisitionApprovalStatus.APPROVED ? "승인 완료" : "승인 실패")
.build();
approvalStore.put(approvalId, response);
log.info("카드 매입 승인 완료: approvalId={}, status={}", approvalId, status);
return response;
}
public CardAcquisitionApprovalResponse getApprovalStatus(String approvalId) {
log.info("승인 상태 조회: approvalId={}", approvalId);
return approvalStore.get(approvalId);
}
private CardAcquisitionApprovalStatus determineApprovalStatus(CardAcquisitionApprovalRequest request) {
if (request.getTransactionAmount() == null) {
return CardAcquisitionApprovalStatus.REJECTED;
}
if (request.getTransactionAmount().compareTo(new BigDecimal("100000")) >= 0) {
return CardAcquisitionApprovalStatus.PROCESSING;
}
return CardAcquisitionApprovalStatus.APPROVED;
}
private String generateApprovalId() {
return "APR-" + UUID.randomUUID().toString().substring(0, 8).toUpperCase();
}
}