feat(order): 주문 상세보기 매장이름 추가

This commit is contained in:
bum12ark
2022-03-22 17:35:41 +09:00
parent 9937e69580
commit b7c585fc15
5 changed files with 57 additions and 7 deletions

View File

@@ -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<OrderDetailItem> orderItems = new ArrayList<>();
public static OrderDetailDto of(Order order, List<OrderDetailItem> orderItems, OrderDetailUser orderDetailUser) {
@Builder
public OrderDetailDto(Long id, LocalDateTime orderTime, Long orderPrice, OrderStatus orderStatus,
String storeName, OrderDetailUser user, List<OrderDetailItem> 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<OrderDetailItem> 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<OrderDetailItemOption> options = new ArrayList<>();
@Builder
public OrderDetailItem(Long id, Long itemId, long totalPrice, long count, String name, List<OrderDetailItemOption> 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> 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();

View File

@@ -105,4 +105,8 @@ public class Order extends BaseEntity {
public void fail() {
this.orderStatus = OrderStatus.FAILED;
}
public void changOrderTime(LocalDateTime orderTime) {
this.orderTime = orderTime;
}
}

View File

@@ -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();

View File

@@ -243,8 +243,7 @@ public class OrderServiceImpl implements OrderService {
List<OrderItem> orderItemsWithOptions = orderItemRepositoryCustom.getOrderItemsWithOptions(order.getId());
// 고객 정보 가져오기
GetCustomerResponse customerInfo = userClient.getCustomerById(order.getUserId()).getData();
Set<Long> 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);
}
}

View File

@@ -30,7 +30,7 @@ public class OrderController {
public ResponseEntity<Result> 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<Result> 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<OrderDetailItemResponse> 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)