카드 매입 승인 경로 Spring Boot 3 전환 (ACX-E2E-1785394564819)
Some checks failed
Verify / source-contract (push) Has been cancelled
Some checks failed
Verify / source-contract (push) Has been cancelled
This commit is contained in:
parent
83fff6fcee
commit
c6b3b3d6e7
1 changed files with 69 additions and 0 deletions
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue