diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/order/dto/OrderDetailDto.java b/order-service/src/main/java/com/justpickup/orderservice/domain/order/dto/OrderDetailDto.java index 7f6752a..9665d44 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/domain/order/dto/OrderDetailDto.java +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/order/dto/OrderDetailDto.java @@ -1,6 +1,7 @@ package com.justpickup.orderservice.domain.order.dto; import com.justpickup.orderservice.domain.order.entity.Order; +import com.justpickup.orderservice.domain.order.entity.OrderStatus; import com.justpickup.orderservice.domain.orderItem.entity.OrderItem; import com.justpickup.orderservice.domain.orderItemOption.entity.OrderItemOption; import com.justpickup.orderservice.global.client.store.OptionType; @@ -16,14 +17,32 @@ public class OrderDetailDto { private Long id; private LocalDateTime orderTime; private Long orderPrice; + private OrderStatus orderStatus; + private String storeName; private OrderDetailUser user; private List orderItems = new ArrayList<>(); - public static OrderDetailDto of(Order order, List orderItems, OrderDetailUser orderDetailUser) { + @Builder + public OrderDetailDto(Long id, LocalDateTime orderTime, Long orderPrice, OrderStatus orderStatus, + String storeName, OrderDetailUser user, List orderItems) { + this.id = id; + this.orderTime = orderTime; + this.orderPrice = orderPrice; + this.orderStatus = orderStatus; + this.storeName = storeName; + this.user = user; + this.orderItems = orderItems; + } + + public static OrderDetailDto of(Order order, String storeName, + List orderItems, OrderDetailUser orderDetailUser) { OrderDetailDto orderDetailDto = new OrderDetailDto(); orderDetailDto.id = order.getId(); orderDetailDto.orderTime = order.getOrderTime(); orderDetailDto.orderPrice = order.getOrderPrice(); + orderDetailDto.orderStatus = order.getOrderStatus(); + + orderDetailDto.storeName = storeName; orderDetailDto.user = orderDetailUser; orderDetailDto.orderItems = orderItems; @@ -53,6 +72,16 @@ public class OrderDetailDto { private String name; private List options = new ArrayList<>(); + @Builder + public OrderDetailItem(Long id, Long itemId, long totalPrice, long count, String name, List options) { + this.id = id; + this.itemId = itemId; + this.totalPrice = totalPrice; + this.count = count; + this.name = name; + this.options = options; + } + public static OrderDetailItem of(OrderItem orderItem, String name, List orderDetailItemOption) { OrderDetailItem orderDetailItem = new OrderDetailItem(); orderDetailItem.id = orderItem.getId(); @@ -73,6 +102,14 @@ public class OrderDetailDto { private String name; private OptionType optionType; + @Builder + public OrderDetailItemOption(Long id, Long itemOptionId, String name, OptionType optionType) { + this.id = id; + this.itemOptionId = itemOptionId; + this.name = name; + this.optionType = optionType; + } + public static OrderDetailItemOption of(OrderItemOption orderItemOption, String name, OptionType optionType) { OrderDetailItemOption orderDetailItemOption = new OrderDetailItemOption(); orderDetailItemOption.id = orderItemOption.getId(); diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/order/entity/Order.java b/order-service/src/main/java/com/justpickup/orderservice/domain/order/entity/Order.java index 0fec5e1..e0c9b58 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/domain/order/entity/Order.java +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/order/entity/Order.java @@ -105,4 +105,8 @@ public class Order extends BaseEntity { public void fail() { this.orderStatus = OrderStatus.FAILED; } + + public void changOrderTime(LocalDateTime orderTime) { + this.orderTime = orderTime; + } } diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/order/repository/OrderRepositoryCustom.java b/order-service/src/main/java/com/justpickup/orderservice/domain/order/repository/OrderRepositoryCustom.java index c72df97..8123ef6 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/domain/order/repository/OrderRepositoryCustom.java +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/order/repository/OrderRepositoryCustom.java @@ -77,6 +77,7 @@ public class OrderRepositoryCustom { .leftJoin(order.transaction) .where( order.orderTime.between(search.getStartDateTime(), search.getEndDateTime()), + order.orderStatus.ne(OrderStatus.PENDING), order.storeId.eq(storeId) ) .fetchOne(); 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 a53f091..536c26a 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 @@ -243,8 +243,7 @@ public class OrderServiceImpl implements OrderService { List orderItemsWithOptions = orderItemRepositoryCustom.getOrderItemsWithOptions(order.getId()); - // 고객 정보 가져오기 - GetCustomerResponse customerInfo = userClient.getCustomerById(order.getUserId()).getData(); + Set itemIds = new HashSet<>(); @@ -286,6 +285,9 @@ public class OrderServiceImpl implements OrderService { }) .collect(toList()); + // 고객 정보 가져오기 + GetCustomerResponse customerInfo = userClient.getCustomerById(order.getUserId()).getData(); + // 주문한 사용자 정보 생성 OrderDetailUser orderDetailUser = OrderDetailUser.builder() .id(customerInfo.getUserId()) @@ -293,7 +295,10 @@ public class OrderServiceImpl implements OrderService { .name(customerInfo.getUserName()) .build(); - return OrderDetailDto.of(order, orderDetailItems, orderDetailUser); + // 매장 정보 가져오기 + GetStoreResponse storeInfo = storeClient.getStore(String.valueOf(order.getStoreId())).getData(); + + return OrderDetailDto.of(order, storeInfo.getName(), orderDetailItems, orderDetailUser); } } diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/order/web/OrderController.java b/order-service/src/main/java/com/justpickup/orderservice/domain/order/web/OrderController.java index 79e01a9..e9df423 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/domain/order/web/OrderController.java +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/order/web/OrderController.java @@ -30,7 +30,7 @@ public class OrderController { public ResponseEntity patchOrder(@PathVariable("orderId") Long orderId, @RequestBody PatchOrderRequest patchOrderRequest) { OrderStatus orderStatus = patchOrderRequest.getOrderStatus(); - if (orderStatus == OrderStatus.PENDING && orderStatus == OrderStatus.FAILED) { + if (orderStatus == OrderStatus.PENDING || orderStatus == OrderStatus.FAILED) { throw new OrderException(orderStatus.getMessage() + "는 변경 불가능합니다."); } @@ -48,22 +48,25 @@ public class OrderController { public ResponseEntity getOrderDetail(@PathVariable Long orderId) { OrderDetailDto orderDetail = orderService.findOrderDetail(orderId); - return ResponseEntity.ok(Result.createSuccessResult(new OrderDetailResponse(orderDetail))); } @Data @NoArgsConstructor @AllArgsConstructor static class OrderDetailResponse { private Long id; + private OrderStatus orderStatus; private String orderTime; private Long orderPrice; + private String storeName; private OrderDetailUserResponse user; private List orderItems = new ArrayList<>(); public OrderDetailResponse(OrderDetailDto dto) { this.id = dto.getId(); - this.orderTime = dto.getOrderTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + this.orderStatus = dto.getOrderStatus(); + this.orderTime = dto.getOrderTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); this.orderPrice = dto.getOrderPrice(); + this.storeName = dto.getStoreName(); this.user = new OrderDetailUserResponse(dto.getUser()); this.orderItems = dto.getOrderItems().stream() .map(OrderDetailItemResponse::new)