diff --git a/src/main/java/com/example/template/Order.java b/src/main/java/com/example/template/Order.java index 2039d06..13b68a9 100644 --- a/src/main/java/com/example/template/Order.java +++ b/src/main/java/com/example/template/Order.java @@ -49,7 +49,7 @@ public class Order { price = jsonObject.get("price").getAsInt(); productName = jsonObject.get("name").getAsString(); if( jsonObject.get("stock").getAsInt() < getQuantity()){ - throw new OrderException("No Available stock!"); +// throw new OrderException("No Available stock!"); } @@ -61,7 +61,7 @@ public class Order { price = product.getPrice(); productName = product.getName(); if( product.getStock() < getQuantity()){ - throw new OrderException("No Available stock!"); +// throw new OrderException("No Available stock!"); } } this.setPrice(price); diff --git a/src/main/java/com/example/template/OrderService.java b/src/main/java/com/example/template/OrderService.java index 41a32ec..7eaa8e2 100644 --- a/src/main/java/com/example/template/OrderService.java +++ b/src/main/java/com/example/template/OrderService.java @@ -20,6 +20,8 @@ public class OrderService { @Autowired private ProductRepository productRepository; + @Autowired + private OrderRepository orderRepository; /** * 상품 변경이 발생할때마다, 상품정보를 저장해 놓음 @@ -41,4 +43,19 @@ public class OrderService { e.printStackTrace(); } } + + @StreamListener(KafkaProcessor.INPUT) + public void onProductOutOfStock(@Payload ProductOutOfStock productOutOfStock) { + try { + if (productOutOfStock.isMe()) { + System.out.println("##### listener : " + productOutOfStock.toJson()); + Optional orderOptional = orderRepository.findById(productOutOfStock.getOrderId()); + Order order = orderOptional.get(); + order.setState("OrderCancelled"); + orderRepository.save(order); + } + }catch (Exception e){ + e.printStackTrace(); + } + } } diff --git a/src/main/java/com/example/template/ProductOutOfStock.java b/src/main/java/com/example/template/ProductOutOfStock.java new file mode 100644 index 0000000..a62c52e --- /dev/null +++ b/src/main/java/com/example/template/ProductOutOfStock.java @@ -0,0 +1,32 @@ +package com.example.template; + +public class ProductOutOfStock extends AbstractEvent { + + private String stateMessage = "재고량 바닥"; + private Long productId; + private Long orderId; + + public String getStateMessage() { + return stateMessage; + } + + public void setStateMessage(String stateMessage) { + this.stateMessage = stateMessage; + } + + public Long getProductId() { + return productId; + } + + public void setProductId(Long productId) { + this.productId = productId; + } + + public Long getOrderId() { + return orderId; + } + + public void setOrderId(Long orderId) { + this.orderId = orderId; + } +}