MSA-17. 구매 오픈 시각 기능 구현
결제 진입 메서드에 단순히 요청 시각과 구매 오픈 시각을 비교하는 로직을 추가했다. 그리고 엔드포인트를 통해 관리자가 특정 제품에 대한 StartTime을 지정할 수 있게 한다. 구매 오픈 시각이 설정된 제품은 비교 로직을 통해 구매 시간 전 결제를 할 수 없게 구현하였다.
// 특정 제품의 판매 시작 시간 확인
LocalTime saleStartTime = saleTimeRepository.getProductSaleTime(productId);
LocalTime now = LocalTime.now();
if (saleStartTime != null && now.isBefore(saleStartTime)) {
return "결제는 " + saleStartTime.toString() + "부터 가능합니다.";
}
@PostMapping("/sale-time/{productId}")
public String setProductSaleTime(@PathVariable int productId, @RequestParam String saleTime) {
LocalTime saleStartTime = LocalTime.parse(saleTime, DateTimeFormatter.ofPattern("HH:mm"));
saleTimeRepository.setProductSaleTime(productId, saleStartTime);
return "Sale start time for product " + productId + " set to " + saleStartTime.toString();
}
오픈할 제품 id와 시각을 이렇게 Param으로 요청할 수 있다.
결제 시각 전의 결제 요청을 아예 거부한다.
Comments