refactor(order-service): save order 수정
- save order 수정
This commit is contained in:
@@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user