refactor(order-service): save order 수정

- save order 수정
This commit is contained in:
hoon7566
2022-03-15 17:52:16 +09:00
parent 1c7f21964a
commit b7df4fb905
3 changed files with 16 additions and 17 deletions

View File

@@ -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.exception.OrderException;
import com.justpickup.orderservice.domain.order.service.OrderSender; import com.justpickup.orderservice.domain.order.service.OrderSender;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import javax.persistence.PostUpdate; import javax.persistence.*;
@Slf4j @Slf4j
@NoArgsConstructor
public class OrderListener { public class OrderListener {
@Autowired @Autowired
@Lazy @Lazy
private OrderSender orderSender; private OrderSender orderSender;
// TODO: 2022/03/15 exception 발생시 order fail 처리
@PostUpdate @PostUpdate
void postUpdate(Order order) { public void postUpdate(Order order){
OrderStatus orderStatus = order.getOrderStatus(); OrderStatus orderStatus = order.getOrderStatus();
if (orderStatus == OrderStatus.ORDER) { if (orderStatus == OrderStatus.ORDER) {
// TODO: 2022/03/10 Kafka 알림 전송
log.info("[OrderListener] {}", OrderStatus.ORDER.name()); log.info("[OrderListener] {}", OrderStatus.ORDER.name());
try{ try{
orderSender.orderPlaced(OrderSender.KafkaSendOrderDto.createPrimitiveField(order)); orderSender.orderPlaced(OrderSender.KafkaSendOrderDto.createPrimitiveField(order));
}catch (Exception ex){ }catch (Exception ex){
order.fail();
throw new OrderException(ex.getMessage()); throw new OrderException(ex.getMessage());
} }

View File

@@ -19,8 +19,11 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.SliceImpl; import org.springframework.data.domain.SliceImpl;
import org.springframework.data.support.PageableExecutionUtils; import org.springframework.data.support.PageableExecutionUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
@@ -100,7 +103,7 @@ public class OrderServiceImpl implements OrderService {
Optional<Order> optionalOrder = orderRepository.findByUserIdAndOrderStatus(userId, OrderStatus.PENDING); Optional<Order> optionalOrder = orderRepository.findByUserIdAndOrderStatus(userId, OrderStatus.PENDING);
if(optionalOrder.isPresent()){ if(optionalOrder.isPresent()){
if(optionalOrder.get().addOrderItem(orderItem) if(!optionalOrder.get().addOrderItem(orderItem)
.getStoreId().equals(storeId)) .getStoreId().equals(storeId))
throw new OrderException("장바구니에 여러 카페의 메뉴를 담을수 없습니다."); throw new OrderException("장바구니에 여러 카페의 메뉴를 담을수 없습니다.");
}else{ }else{
@@ -114,16 +117,17 @@ public class OrderServiceImpl implements OrderService {
.orElseThrow(() -> new OrderException("장바구니 정보를 찾을 수 없습니다.")); .orElseThrow(() -> new OrderException("장바구니 정보를 찾을 수 없습니다."));
GetStoreReseponse store = storeClient.getStore(String.valueOf(order.getStoreId())).getData(); GetStoreReseponse store = storeClient.getStore(String.valueOf(order.getStoreId())).getData();
Map<Long, GetItemResponse> itemMap = storeClient.getItemAndItemOptions(order.getOrderItems().stream() List<GetItemResponse> data = storeClient.getItemAndItemOptions(order.getOrderItems().stream()
.map(OrderItem::getItemId) .map(OrderItem::getItemId)
.filter(Objects::nonNull) .filter(Objects::nonNull)
.collect(Collectors.toUnmodifiableList()) .collect(Collectors.toUnmodifiableList())
).getData() ).getData();
.stream().collect(
Map<Long, GetItemResponse> itemMap = data.stream().collect(
Collectors.toMap( Collectors.toMap(
GetItemResponse::getId GetItemResponse::getId
,getItemResponse->getItemResponse , getItemResponse -> getItemResponse
,(t, t2) -> t , (t, t2) -> t
) )
); );
@@ -148,12 +152,9 @@ public class OrderServiceImpl implements OrderService {
@Override @Override
@Transactional @Transactional
public void saveOrder(Long userId) { public void saveOrder(Long userId) {
orderRepository.findByUserIdAndOrderStatus(userId, OrderStatus.PENDING) orderRepository.findByUserIdAndOrderStatus(userId, OrderStatus.PENDING)
.orElseThrow(() -> new OrderException("장바구니 정보를 찾을 수 없습니다.")) .orElseThrow(() -> new OrderException("장바구니 정보를 찾을 수 없습니다."))
.order(); .order();
} }
@Override @Override

View File

@@ -41,7 +41,7 @@ public class GetItemDto {
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@Builder @Builder
static class ItemOptionDto{ public static class ItemOptionDto{
private Long id; private Long id;
private OptionType optionType; private OptionType optionType;