From acc4062cbfb2ab06db70f8ac24acee65efe1c1aa Mon Sep 17 00:00:00 2001 From: forge-bot Date: Thu, 30 Jul 2026 09:39:25 +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 --- .../controller/AcquisitionController.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/main/java/com/acquirex/controller/AcquisitionController.java diff --git a/src/main/java/com/acquirex/controller/AcquisitionController.java b/src/main/java/com/acquirex/controller/AcquisitionController.java new file mode 100644 index 0000000..5e776bc --- /dev/null +++ b/src/main/java/com/acquirex/controller/AcquisitionController.java @@ -0,0 +1,59 @@ +package com.acquirex.controller; + +import com.acquirex.service.AcquisitionRequest; +import com.acquirex.service.AcquisitionResponse; +import com.acquirex.service.AcquisitionService; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +/** + * 카드 매입 승인 REST 컨트롤러 - Spring Boot 3 (jakarta.validation) + */ +@RestController +@RequestMapping("/api/v1/acquisitions") +@RequiredArgsConstructor +@Slf4j +public class AcquisitionController { + + private final AcquisitionService acquisitionService; + + @PostMapping + public ResponseEntity registerAcquisition(@Valid @RequestBody AcquisitionRequest request) { + log.info("매입 요청 수신: {}", request); + return ResponseEntity.status(HttpStatus.CREATED).body(acquisitionService.registerAcquisition(request)); + } + + @PostMapping("/{transactionId}/approve") + public ResponseEntity approveAcquisition(@PathVariable String transactionId) { + log.info("매입 승인 요청: transactionId={}", transactionId); + return ResponseEntity.ok(acquisitionService.approveAcquisition(transactionId)); + } + + @PostMapping("/{transactionId}/reject") + public ResponseEntity rejectAcquisition(@PathVariable String transactionId, @RequestBody Map body) { + log.info("매입 거절 요청: transactionId={}", transactionId); + return ResponseEntity.ok(acquisitionService.rejectAcquisition(transactionId, body.getOrDefault("reason", "사유 미지정"))); + } + + @GetMapping("/{transactionId}") + public ResponseEntity getAcquisition(@PathVariable String transactionId) { + log.info("매입 조회 요청: transactionId={}", transactionId); + return ResponseEntity.ok(acquisitionService.getAcquisition(transactionId)); + } + + @GetMapping + public ResponseEntity> getAcquisitions(@RequestParam(required = false) String merchantId) { + log.info("매입 목록 조회: merchantId={}", merchantId); + List responses = (merchantId != null && !merchantId.isBlank()) + ? acquisitionService.getAcquisitionsByMerchant(merchantId) + : acquisitionService.getPendingAcquisitions(); + return ResponseEntity.ok(responses); + } +} \ No newline at end of file