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

Closed
forge-bot wants to merge 8 commits from forge/ACX-E2E-1785394564819-attempt-4-run-f671ee0cb5b3 into main
Showing only changes of commit c6b3b3d6e7 - Show all commits

View file

@ -0,0 +1,69 @@
package com.acquirex.cardacquisition.controller;
import com.acquirex.cardacquisition.dto.ApprovalDto.ApprovalRequest;
import com.acquirex.cardacquisition.dto.ApprovalDto.ApprovalResponse;
import com.acquirex.cardacquisition.service.AcquisitionApprovalService;
import jakarta.validation.Valid;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/api/v1/acquisitions")
public class AcquisitionApprovalController {
private final AcquisitionApprovalService service;
public AcquisitionApprovalController(AcquisitionApprovalService service) {
this.service = service;
}
@PostMapping
public ResponseEntity<ApprovalResponse> requestApproval(@Valid @RequestBody ApprovalRequest request) {
return ResponseEntity.status(HttpStatus.CREATED).body(service.requestApproval(request));
}
@PostMapping("/{id}/approve")
public ResponseEntity<ApprovalResponse> approve(@PathVariable Long id) {
return ResponseEntity.ok(service.approve(id));
}
@PostMapping("/{id}/reject")
public ResponseEntity<ApprovalResponse> reject(@PathVariable Long id) {
return ResponseEntity.ok(service.reject(id));
}
@GetMapping("/{id}")
public ResponseEntity<ApprovalResponse> getApproval(@PathVariable Long id) {
return ResponseEntity.ok(service.getApproval(id));
}
@GetMapping("/pending")
public ResponseEntity<List<ApprovalResponse>> getPendingApprovals() {
return ResponseEntity.ok(service.getPendingApprovals());
}
@ExceptionHandler(IllegalArgumentException.class)
public ResponseEntity<Map<String, Object>> handleNotFound(IllegalArgumentException ex) {
return buildError(HttpStatus.NOT_FOUND, ex.getMessage());
}
@ExceptionHandler(IllegalStateException.class)
public ResponseEntity<Map<String, Object>> handleConflict(IllegalStateException ex) {
return buildError(HttpStatus.CONFLICT, ex.getMessage());
}
private ResponseEntity<Map<String, Object>> buildError(HttpStatus status, String message) {
Map<String, Object> body = new HashMap<>();
body.put("timestamp", LocalDateTime.now());
body.put("status", status.value());
body.put("error", status.getReasonPhrase());
body.put("message", message);
return ResponseEntity.status(status).body(body);
}
}