From b7df4fb905860431f3fc49b3074ed7aff366436d Mon Sep 17 00:00:00 2001 From: hoon7566 Date: Tue, 15 Mar 2022 17:52:16 +0900 Subject: [PATCH] =?UTF-8?q?refactor(order-service):=20save=20order=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - save order 수정 --- .../domain/order/entity/OrderListener.java | 10 ++++----- .../order/service/OrderServiceImpl.java | 21 ++++++++++--------- .../domain/item/dto/GetItemDto.java | 2 +- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/order/entity/OrderListener.java b/order-service/src/main/java/com/justpickup/orderservice/domain/order/entity/OrderListener.java index 2f58647..b5e0890 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/domain/order/entity/OrderListener.java +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/order/entity/OrderListener.java @@ -2,31 +2,29 @@ package com.justpickup.orderservice.domain.order.entity; import com.justpickup.orderservice.domain.order.exception.OrderException; import com.justpickup.orderservice.domain.order.service.OrderSender; -import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; -import javax.persistence.PostUpdate; +import javax.persistence.*; @Slf4j -@NoArgsConstructor public class OrderListener { @Autowired @Lazy private OrderSender orderSender; + + // TODO: 2022/03/15 exception 발생시 order fail 처리 @PostUpdate - void postUpdate(Order order) { + public void postUpdate(Order order){ OrderStatus orderStatus = order.getOrderStatus(); if (orderStatus == OrderStatus.ORDER) { - // TODO: 2022/03/10 Kafka 알림 전송 log.info("[OrderListener] {}", OrderStatus.ORDER.name()); try{ orderSender.orderPlaced(OrderSender.KafkaSendOrderDto.createPrimitiveField(order)); }catch (Exception ex){ - order.fail(); throw new OrderException(ex.getMessage()); } diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/order/service/OrderServiceImpl.java b/order-service/src/main/java/com/justpickup/orderservice/domain/order/service/OrderServiceImpl.java index 2bfd781..0c15888 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/domain/order/service/OrderServiceImpl.java +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/order/service/OrderServiceImpl.java @@ -19,8 +19,11 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.domain.SliceImpl; import org.springframework.data.support.PageableExecutionUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; import java.util.List; import java.util.Map; import java.util.Objects; @@ -100,7 +103,7 @@ public class OrderServiceImpl implements OrderService { Optional optionalOrder = orderRepository.findByUserIdAndOrderStatus(userId, OrderStatus.PENDING); if(optionalOrder.isPresent()){ - if(optionalOrder.get().addOrderItem(orderItem) + if(!optionalOrder.get().addOrderItem(orderItem) .getStoreId().equals(storeId)) throw new OrderException("장바구니에 여러 카페의 메뉴를 담을수 없습니다."); }else{ @@ -114,16 +117,17 @@ public class OrderServiceImpl implements OrderService { .orElseThrow(() -> new OrderException("장바구니 정보를 찾을 수 없습니다.")); GetStoreReseponse store = storeClient.getStore(String.valueOf(order.getStoreId())).getData(); - Map itemMap = storeClient.getItemAndItemOptions(order.getOrderItems().stream() + List data = storeClient.getItemAndItemOptions(order.getOrderItems().stream() .map(OrderItem::getItemId) - .filter(Objects::nonNull) + .filter(Objects::nonNull) .collect(Collectors.toUnmodifiableList()) - ).getData() - .stream().collect( + ).getData(); + + Map itemMap = data.stream().collect( Collectors.toMap( GetItemResponse::getId - ,getItemResponse->getItemResponse - ,(t, t2) -> t + , getItemResponse -> getItemResponse + , (t, t2) -> t ) ); @@ -148,12 +152,9 @@ public class OrderServiceImpl implements OrderService { @Override @Transactional public void saveOrder(Long userId) { - orderRepository.findByUserIdAndOrderStatus(userId, OrderStatus.PENDING) .orElseThrow(() -> new OrderException("장바구니 정보를 찾을 수 없습니다.")) .order(); - - } @Override diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/item/dto/GetItemDto.java b/store-service/src/main/java/com/justpickup/storeservice/domain/item/dto/GetItemDto.java index a669ad8..98666e0 100644 --- a/store-service/src/main/java/com/justpickup/storeservice/domain/item/dto/GetItemDto.java +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/item/dto/GetItemDto.java @@ -41,7 +41,7 @@ public class GetItemDto { @AllArgsConstructor @NoArgsConstructor @Builder - static class ItemOptionDto{ + public static class ItemOptionDto{ private Long id; private OptionType optionType;