33import com .loopers .application .orderitem .OrderItemInfo ;
44import com .loopers .domain .coupon .Coupon ;
55import com .loopers .domain .coupon .CouponRepository ;
6- import com .loopers .domain .coupon .CouponType ;
76import com .loopers .domain .order .Order ;
87import com .loopers .domain .order .OrderRepository ;
98import com .loopers .domain .orderitem .OrderItem ;
1514import com .loopers .support .error .CoreException ;
1615import com .loopers .support .error .ErrorType ;
1716import lombok .RequiredArgsConstructor ;
17+ import org .springframework .context .ApplicationEventPublisher ;
1818import org .springframework .stereotype .Component ;
1919import org .springframework .transaction .annotation .Transactional ;
2020
@@ -29,6 +29,7 @@ public class OrderFacade {
2929 private final UserRepository userRepository ;
3030 private final ProductRepository productRepository ;
3131 private final CouponRepository couponRepository ;
32+ private final ApplicationEventPublisher publisher ;
3233
3334 @ Transactional
3435 public OrderResultInfo createOrder (OrderV1Dto .OrderRequest request ) {
@@ -55,7 +56,7 @@ public OrderResultInfo createOrder(OrderV1Dto.OrderRequest request) {
5556 );
5657
5758 if (product .getStock () < item .quantity ()) {
58- throw new CoreException (ErrorType .BAD_REQUEST , product .getName () + "상품의 재고가 부족합니다." );
59+ throw new CoreException (ErrorType .BAD_REQUEST , product .getName () + " 상품의 재고가 부족합니다." );
5960 }
6061
6162 product .decreaseStock (item .quantity ());
@@ -85,10 +86,10 @@ public OrderResultInfo createOrder(OrderV1Dto.OrderRequest request) {
8586 totalPrice = totalPrice
8687 .multiply (BigDecimal .valueOf (100 - rate ))
8788 .divide (BigDecimal .valueOf (100 ));
88-
89- coupon .useCoupon ();
9089 }
9190
91+ publisher .publishEvent (new OrderCreatedEvent (couponId ));
92+
9293 Order order = request .toEntity (totalPrice );
9394 Order saved = orderRepository .save (order );
9495
0 commit comments