From d3aa81cc76972621c995d531c2d8c6d5d01fd7cc Mon Sep 17 00:00:00 2001 From: bum12ark Date: Mon, 14 Mar 2022 21:08:48 +0900 Subject: [PATCH] =?UTF-8?q?feat(order):=20=EC=A0=90=EC=A3=BC=20=EC=84=9C?= =?UTF-8?q?=EB=B9=84=EC=8A=A4=20=EC=A3=BC=EB=AC=B8=20Feign=20=ED=81=B4?= =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EC=96=B8=ED=8A=B8=20=ED=86=B5=EC=8B=A0=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/order/dto/OrderMainDto.java | 8 ++ .../domain/order/entity/Order.java | 61 +++++++-------- .../repository/OrderRepositoryCustom.java | 1 - .../domain/order/service/OrderService.java | 2 +- .../order/service/OrderServiceImpl.java | 37 +++++++-- .../domain/order/web/OrderController.java | 3 +- .../order/web/OrderOwnerApiController.java | 10 +-- .../domain/orderItem/entity/OrderItem.java | 8 +- .../global/SqlCommandLineRunner.java | 76 ++++++++++++++----- .../client/store/StoreByUserIdResponse.java | 9 +++ .../global/client/store/StoreClient.java | 7 +- .../global/client/user/UserClient.java | 4 +- 12 files changed, 157 insertions(+), 69 deletions(-) create mode 100644 order-service/src/main/java/com/justpickup/orderservice/global/client/store/StoreByUserIdResponse.java diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/order/dto/OrderMainDto.java b/order-service/src/main/java/com/justpickup/orderservice/domain/order/dto/OrderMainDto.java index 37be351..8b9b0cd 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/domain/order/dto/OrderMainDto.java +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/order/dto/OrderMainDto.java @@ -50,6 +50,10 @@ public class OrderMainDto { .orderItems(orderItems) .build(); } + + public void changeUserName(String userName) { + this.userName = userName; + } } @Getter @Builder @@ -64,5 +68,9 @@ public class OrderMainDto { .itemId(orderItem.getItemId()) .build(); } + + public void changeItemName(String itemName) { + this.itemName = itemName; + } } } 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 173b20d..9e6737f 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 @@ -29,11 +29,11 @@ public class Order extends BaseEntity { private Long storeId; - private Long orderPrice; + private long orderPrice; private LocalDateTime orderTime; - private Long usedPoint; + private long usedPoint; @Enumerated(EnumType.STRING) private OrderStatus orderStatus; @@ -45,32 +45,11 @@ public class Order extends BaseEntity { @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List orderItems = new ArrayList<>(); - public static Order of(Long userId, Long userCouponId, Long storeId, Long orderPrice, - Transaction transaction, OrderItem... orderItems) { + public static Order of(Long userId, Long userCouponId, Long storeId, OrderItem orderItem) { Order order = new Order(); order.userId = userId; order.userCouponId = userCouponId; order.storeId = storeId; - order.orderPrice = orderPrice; - - order.setTransaction(transaction); - for (OrderItem orderItem : orderItems) { - order.addOrderItem(orderItem); - } - - order.usedPoint = 0L; - order.orderStatus = OrderStatus.PLACED; - order.orderTime = LocalDateTime.now(); - return order; - } - - public static Order of(Long userId, Long userCouponId, Long storeId, Long orderPrice, - OrderItem orderItem) { - Order order = new Order(); - order.userId = userId; - order.userCouponId = userCouponId; - order.storeId = storeId; - order.orderPrice = orderPrice; order.addOrderItem(orderItem); @@ -80,14 +59,25 @@ public class Order extends BaseEntity { return order; } - public void setTransaction(Transaction transaction) { - this.transaction = transaction; - transaction.setOrder(this); + public static Order of(Long userId, Long userCouponId, Long storeId, List orderItems) { + Order order = new Order(); + order.userId = userId; + order.userCouponId = userCouponId; + order.storeId = storeId; + + for (OrderItem item : orderItems) { + order.addOrderItem(item); + } + + order.usedPoint = 0L; + order.orderStatus = OrderStatus.PENDING; + order.orderTime = LocalDateTime.now(); + return order; } public Order addOrderItem(OrderItem orderItem) { this.orderItems.add(orderItem); - this.orderPrice += (orderItem.getPrice()*orderItem.getCount()); + this.orderPrice += orderItem.getTotalPrice(); orderItem.setOrder(this); return this; } @@ -97,15 +87,18 @@ public class Order extends BaseEntity { return this; } - public void placed() { - this.orderStatus = OrderStatus.PLACED; - } - public void order() { this.orderStatus = OrderStatus.ORDER; } - public void reject() { - this.orderStatus = OrderStatus.REJECT; + /** + * 전체 주문 가격 조회 + */ + public int getTotalPrice() { + int totalPrice = 0; + for (OrderItem orderItem : orderItems) { + totalPrice += orderItem.getTotalPrice(); + } + return totalPrice; } } 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 e308431..aa7e51a 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 @@ -44,7 +44,6 @@ public class OrderRepositoryCustom { List orders = queryFactory .selectFrom(order) - .join(order.transaction).fetchJoin() .where( orderIdLt(condition.getLastOrderId()), order.orderTime.between(start, end), diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/order/service/OrderService.java b/order-service/src/main/java/com/justpickup/orderservice/domain/order/service/OrderService.java index a2f0577..753af0a 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/domain/order/service/OrderService.java +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/order/service/OrderService.java @@ -12,7 +12,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.domain.SliceImpl; public interface OrderService { - OrderMainDto findOrderMain(OrderSearchCondition condition, Long storeId); + OrderMainDto findOrderMain(OrderSearchCondition condition, Long userId); Page findPrevOrderMain(PrevOrderSearch search, Pageable pageable, Long storeId); SliceImpl findOrderHistory(Pageable pageable, Long userId); void addItemToBasket(OrderItemDto orderItemDto,Long storeId, Long userId); 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 7211c12..79a92a8 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 @@ -9,6 +9,12 @@ import com.justpickup.orderservice.domain.order.repository.OrderRepositoryCustom import com.justpickup.orderservice.domain.orderItem.dto.OrderItemDto; import com.justpickup.orderservice.domain.orderItem.entity.OrderItem; import com.justpickup.orderservice.domain.orderItemOption.entity.OrderItemOption; +import com.justpickup.orderservice.global.client.store.GetItemResponse; +import com.justpickup.orderservice.global.client.store.StoreByUserIdResponse; +import com.justpickup.orderservice.global.client.store.StoreClient; +import com.justpickup.orderservice.global.client.user.GetCustomerResponse; +import com.justpickup.orderservice.global.client.user.UserClient; +import com.justpickup.orderservice.global.dto.Result; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; @@ -17,6 +23,7 @@ import org.springframework.data.domain.SliceImpl; import org.springframework.data.support.PageableExecutionUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StopWatch; import java.util.List; import java.util.Optional; @@ -32,16 +39,36 @@ public class OrderServiceImpl implements OrderService { private final OrderRepository orderRepository; private final OrderRepositoryCustom orderRepositoryCustom; private final OrderSender orderSender; + private final StoreClient storeClient; + private final UserClient userClient; @Override - public OrderMainDto findOrderMain(OrderSearchCondition condition, Long storeId) { + public OrderMainDto findOrderMain(OrderSearchCondition condition, Long userId) { + + Result store = storeClient.getStoreByUserId(userId); + // 주문 가져오기 - OrderMainResult orderMainResult = orderRepositoryCustom.findOrderMain(condition, storeId); + OrderMainResult orderMainResult = orderRepositoryCustom.findOrderMain(condition, store.getData().getId()); + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + int count = 0; // 사용자명 및 아이템 이름 가져오기 -// getUserNameAndItemName(orderDtoList); + OrderMainDto returnDto = OrderMainDto.of(orderMainResult.getOrders(), orderMainResult.isHasNext()); + for (OrderMainDto._Order order : returnDto.getOrders()) { + for (OrderMainDto._OrderItem orderItem : order.getOrderItems()) { + count += 1; + Result item = storeClient.getItem(orderItem.getItemId()); + orderItem.changeItemName(item.getData().getName()); + } + count += 1; + GetCustomerResponse customerResponse = userClient.getCustomerById(order.getUserId()).getData(); + order.changeUserName(customerResponse.getUserName()); + } + stopWatch.stop(); + log.info("Feign count = {}, [StopWatch] {}", count, stopWatch.prettyPrint()); - return OrderMainDto.of(orderMainResult.getOrders(), orderMainResult.isHasNext()); + return returnDto; } @Override @@ -97,7 +124,7 @@ public class OrderServiceImpl implements OrderService { .getStoreId().equals(storeId)) throw new OrderException("장바구니에 여러 카페의 메뉴를 담을수 없습니다."); }else{ - orderRepository.save(Order.of(userId,userCouponId,storeId,0L,orderItem)); + orderRepository.save(Order.of(userId,userCouponId,storeId,orderItem)); } } 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 07f68d5..64eeb1e 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 @@ -4,6 +4,7 @@ import com.justpickup.orderservice.domain.order.entity.OrderStatus; import com.justpickup.orderservice.domain.order.exception.OrderException; import com.justpickup.orderservice.domain.order.service.OrderService; import com.justpickup.orderservice.global.dto.Result; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.RequiredArgsConstructor; @@ -34,7 +35,7 @@ public class OrderController { return ResponseEntity.ok(Result.createSuccessResult(null)); } - @Data @NoArgsConstructor + @Data @NoArgsConstructor @AllArgsConstructor static class PatchOrderRequest { private OrderStatus orderStatus; } diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/order/web/OrderOwnerApiController.java b/order-service/src/main/java/com/justpickup/orderservice/domain/order/web/OrderOwnerApiController.java index 91d32c1..b1a291d 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/domain/order/web/OrderOwnerApiController.java +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/order/web/OrderOwnerApiController.java @@ -22,6 +22,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.validation.BindException; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -41,12 +42,11 @@ public class OrderOwnerApiController { private final PrevOrderSearchValidator prevOrderSearchValidator; @GetMapping("/order-main") - public ResponseEntity orderMain(@Valid OrderSearchCondition condition) { - // TODO: 2022/03/10 Feign client storeId 가져오기 구현 필요 - Long userId = 1L; - Long storeId = 1L; + public ResponseEntity orderMain(@Valid OrderSearchCondition condition, + @RequestHeader(value="user-id") String userHeader) { + Long userId = Long.valueOf(userHeader); - OrderMainDto orderMainDto = orderService.findOrderMain(condition, storeId); + OrderMainDto orderMainDto = orderService.findOrderMain(condition, userId); OrderMainResponse orderMainResponse = new OrderMainResponse(orderMainDto); diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/orderItem/entity/OrderItem.java b/order-service/src/main/java/com/justpickup/orderservice/domain/orderItem/entity/OrderItem.java index d39bd3a..379a093 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/domain/orderItem/entity/OrderItem.java +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/orderItem/entity/OrderItem.java @@ -1,7 +1,6 @@ package com.justpickup.orderservice.domain.orderItem.entity; import com.justpickup.orderservice.domain.order.entity.Order; -import com.justpickup.orderservice.domain.orderItem.dto.OrderItemDto; import com.justpickup.orderservice.domain.orderItemOption.entity.OrderItemOption; import com.justpickup.orderservice.global.entity.BaseEntity; import lombok.AccessLevel; @@ -65,4 +64,11 @@ public class OrderItem extends BaseEntity { } return orderItem; } + + /** + * 주문상품 전체 가격 조회 + */ + public long getTotalPrice() { + return price * count; + } } diff --git a/order-service/src/main/java/com/justpickup/orderservice/global/SqlCommandLineRunner.java b/order-service/src/main/java/com/justpickup/orderservice/global/SqlCommandLineRunner.java index 8d4e5c4..6c13fbf 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/global/SqlCommandLineRunner.java +++ b/order-service/src/main/java/com/justpickup/orderservice/global/SqlCommandLineRunner.java @@ -1,48 +1,88 @@ package com.justpickup.orderservice.global; +import com.fasterxml.jackson.databind.ObjectMapper; import com.justpickup.orderservice.domain.order.entity.Order; +import com.justpickup.orderservice.domain.order.entity.OrderStatus; import com.justpickup.orderservice.domain.order.repository.OrderRepository; import com.justpickup.orderservice.domain.orderItem.entity.OrderItem; import com.justpickup.orderservice.domain.orderItemOption.entity.OrderItemOption; -import com.justpickup.orderservice.domain.transaction.entity.Transaction; +import lombok.Data; +import lombok.NoArgsConstructor; import lombok.RequiredArgsConstructor; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.List; + @Component @RequiredArgsConstructor public class SqlCommandLineRunner implements CommandLineRunner { private final OrderRepository orderRepository; + private final ObjectMapper objectMapper; + + String storeJson = "[{\"id\":1,\"name\":\"커피온리 마포역점\",\"items\":[{\"id\":32,\"name\":\"아메리카노\",\"price\":1500,\"itemOptions\":[{\"id\":33,\"name\":\"ICE\"},{\"id\":35,\"name\":\"HOT\"}]},{\"id\":32,\"name\":\"아메리카노\",\"price\":1500,\"itemOptions\":[{\"id\":33,\"name\":\"ICE\"},{\"id\":35,\"name\":\"HOT\"}]},{\"id\":37,\"name\":\"카페라떼\",\"price\":2000,\"itemOptions\":[{\"id\":33,\"name\":\"ICE\"},{\"id\":35,\"name\":\"HOT\"}]},{\"id\":37,\"name\":\"카페라떼\",\"price\":2000,\"itemOptions\":[{\"id\":33,\"name\":\"ICE\"},{\"id\":35,\"name\":\"HOT\"}]},{\"id\":38,\"name\":\"카페모카\",\"price\":3900,\"itemOptions\":[{\"id\":33,\"name\":\"ICE\"},{\"id\":35,\"name\":\"HOT\"}]},{\"id\":38,\"name\":\"카페모카\",\"price\":3900,\"itemOptions\":[{\"id\":33,\"name\":\"ICE\"},{\"id\":35,\"name\":\"HOT\"}]},{\"id\":39,\"name\":\"콜드브루\",\"price\":2500,\"itemOptions\":[{\"id\":33,\"name\":\"ICE\"}]},{\"id\":39,\"name\":\"콜드브루\",\"price\":2500,\"itemOptions\":[{\"id\":33,\"name\":\"ICE\"}]},{\"id\":40,\"name\":\"녹차라떼\",\"price\":3000,\"itemOptions\":[{\"id\":33,\"name\":\"ICE\"},{\"id\":35,\"name\":\"HOT\"}]},{\"id\":40,\"name\":\"녹차라떼\",\"price\":3000,\"itemOptions\":[{\"id\":33,\"name\":\"ICE\"},{\"id\":35,\"name\":\"HOT\"}]},{\"id\":34,\"name\":\"딸기라떼\",\"price\":3000,\"itemOptions\":[{\"id\":33,\"name\":\"ICE\"},{\"id\":35,\"name\":\"HOT\"}]},{\"id\":34,\"name\":\"딸기라떼\",\"price\":3000,\"itemOptions\":[{\"id\":33,\"name\":\"ICE\"},{\"id\":35,\"name\":\"HOT\"}]},{\"id\":41,\"name\":\"녹차\",\"price\":3000,\"itemOptions\":[{\"id\":35,\"name\":\"HOT\"}]},{\"id\":41,\"name\":\"녹차\",\"price\":3000,\"itemOptions\":[{\"id\":35,\"name\":\"HOT\"}]},{\"id\":36,\"name\":\"히비스커스 티\",\"price\":3000,\"itemOptions\":[{\"id\":35,\"name\":\"HOT\"}]},{\"id\":36,\"name\":\"히비스커스 티\",\"price\":3000,\"itemOptions\":[{\"id\":35,\"name\":\"HOT\"}]}]},{\"id\":2,\"name\":\"만랩커피 마포점\",\"items\":[{\"id\":45,\"name\":\"아메리카노\",\"price\":1500,\"itemOptions\":[{\"id\":46,\"name\":\"ICE\"},{\"id\":48,\"name\":\"HOT\"}]},{\"id\":45,\"name\":\"아메리카노\",\"price\":1500,\"itemOptions\":[{\"id\":46,\"name\":\"ICE\"},{\"id\":48,\"name\":\"HOT\"}]},{\"id\":50,\"name\":\"카페라떼\",\"price\":2000,\"itemOptions\":[{\"id\":46,\"name\":\"ICE\"},{\"id\":48,\"name\":\"HOT\"}]},{\"id\":50,\"name\":\"카페라떼\",\"price\":2000,\"itemOptions\":[{\"id\":46,\"name\":\"ICE\"},{\"id\":48,\"name\":\"HOT\"}]},{\"id\":51,\"name\":\"카페모카\",\"price\":3900,\"itemOptions\":[{\"id\":46,\"name\":\"ICE\"},{\"id\":48,\"name\":\"HOT\"}]},{\"id\":51,\"name\":\"카페모카\",\"price\":3900,\"itemOptions\":[{\"id\":46,\"name\":\"ICE\"},{\"id\":48,\"name\":\"HOT\"}]},{\"id\":52,\"name\":\"콜드브루\",\"price\":2500,\"itemOptions\":[{\"id\":46,\"name\":\"ICE\"}]},{\"id\":52,\"name\":\"콜드브루\",\"price\":2500,\"itemOptions\":[{\"id\":46,\"name\":\"ICE\"}]},{\"id\":53,\"name\":\"녹차라떼\",\"price\":3000,\"itemOptions\":[{\"id\":46,\"name\":\"ICE\"},{\"id\":48,\"name\":\"HOT\"}]},{\"id\":53,\"name\":\"녹차라떼\",\"price\":3000,\"itemOptions\":[{\"id\":46,\"name\":\"ICE\"},{\"id\":48,\"name\":\"HOT\"}]},{\"id\":47,\"name\":\"딸기라떼\",\"price\":3000,\"itemOptions\":[{\"id\":46,\"name\":\"ICE\"},{\"id\":48,\"name\":\"HOT\"}]},{\"id\":47,\"name\":\"딸기라떼\",\"price\":3000,\"itemOptions\":[{\"id\":46,\"name\":\"ICE\"},{\"id\":48,\"name\":\"HOT\"}]},{\"id\":54,\"name\":\"녹차\",\"price\":3000,\"itemOptions\":[{\"id\":48,\"name\":\"HOT\"}]},{\"id\":54,\"name\":\"녹차\",\"price\":3000,\"itemOptions\":[{\"id\":48,\"name\":\"HOT\"}]},{\"id\":49,\"name\":\"히비스커스 티\",\"price\":3000,\"itemOptions\":[{\"id\":48,\"name\":\"HOT\"}]},{\"id\":49,\"name\":\"히비스커스 티\",\"price\":3000,\"itemOptions\":[{\"id\":48,\"name\":\"HOT\"}]}]},{\"id\":3,\"name\":\"이디야커피 마포오벨리스크점\",\"items\":[{\"id\":58,\"name\":\"아메리카노\",\"price\":1500,\"itemOptions\":[{\"id\":59,\"name\":\"ICE\"},{\"id\":61,\"name\":\"HOT\"}]},{\"id\":58,\"name\":\"아메리카노\",\"price\":1500,\"itemOptions\":[{\"id\":59,\"name\":\"ICE\"},{\"id\":61,\"name\":\"HOT\"}]},{\"id\":63,\"name\":\"카페라떼\",\"price\":2000,\"itemOptions\":[{\"id\":59,\"name\":\"ICE\"},{\"id\":61,\"name\":\"HOT\"}]},{\"id\":63,\"name\":\"카페라떼\",\"price\":2000,\"itemOptions\":[{\"id\":59,\"name\":\"ICE\"},{\"id\":61,\"name\":\"HOT\"}]},{\"id\":64,\"name\":\"카페모카\",\"price\":3900,\"itemOptions\":[{\"id\":59,\"name\":\"ICE\"},{\"id\":61,\"name\":\"HOT\"}]},{\"id\":64,\"name\":\"카페모카\",\"price\":3900,\"itemOptions\":[{\"id\":59,\"name\":\"ICE\"},{\"id\":61,\"name\":\"HOT\"}]},{\"id\":65,\"name\":\"콜드브루\",\"price\":2500,\"itemOptions\":[{\"id\":59,\"name\":\"ICE\"}]},{\"id\":65,\"name\":\"콜드브루\",\"price\":2500,\"itemOptions\":[{\"id\":59,\"name\":\"ICE\"}]},{\"id\":66,\"name\":\"녹차라떼\",\"price\":3000,\"itemOptions\":[{\"id\":59,\"name\":\"ICE\"},{\"id\":61,\"name\":\"HOT\"}]},{\"id\":66,\"name\":\"녹차라떼\",\"price\":3000,\"itemOptions\":[{\"id\":59,\"name\":\"ICE\"},{\"id\":61,\"name\":\"HOT\"}]},{\"id\":60,\"name\":\"딸기라떼\",\"price\":3000,\"itemOptions\":[{\"id\":59,\"name\":\"ICE\"},{\"id\":61,\"name\":\"HOT\"}]},{\"id\":60,\"name\":\"딸기라떼\",\"price\":3000,\"itemOptions\":[{\"id\":59,\"name\":\"ICE\"},{\"id\":61,\"name\":\"HOT\"}]},{\"id\":67,\"name\":\"녹차\",\"price\":3000,\"itemOptions\":[{\"id\":61,\"name\":\"HOT\"}]},{\"id\":67,\"name\":\"녹차\",\"price\":3000,\"itemOptions\":[{\"id\":61,\"name\":\"HOT\"}]},{\"id\":62,\"name\":\"히비스커스 티\",\"price\":3000,\"itemOptions\":[{\"id\":61,\"name\":\"HOT\"}]},{\"id\":62,\"name\":\"히비스커스 티\",\"price\":3000,\"itemOptions\":[{\"id\":61,\"name\":\"HOT\"}]}]},{\"id\":4,\"name\":\"이디야커피 대림역점\",\"items\":[{\"id\":71,\"name\":\"아메리카노\",\"price\":1500,\"itemOptions\":[{\"id\":72,\"name\":\"ICE\"},{\"id\":74,\"name\":\"HOT\"}]},{\"id\":71,\"name\":\"아메리카노\",\"price\":1500,\"itemOptions\":[{\"id\":72,\"name\":\"ICE\"},{\"id\":74,\"name\":\"HOT\"}]},{\"id\":76,\"name\":\"카페라떼\",\"price\":2000,\"itemOptions\":[{\"id\":72,\"name\":\"ICE\"},{\"id\":74,\"name\":\"HOT\"}]},{\"id\":76,\"name\":\"카페라떼\",\"price\":2000,\"itemOptions\":[{\"id\":72,\"name\":\"ICE\"},{\"id\":74,\"name\":\"HOT\"}]},{\"id\":77,\"name\":\"카페모카\",\"price\":3900,\"itemOptions\":[{\"id\":72,\"name\":\"ICE\"},{\"id\":74,\"name\":\"HOT\"}]},{\"id\":77,\"name\":\"카페모카\",\"price\":3900,\"itemOptions\":[{\"id\":72,\"name\":\"ICE\"},{\"id\":74,\"name\":\"HOT\"}]},{\"id\":78,\"name\":\"콜드브루\",\"price\":2500,\"itemOptions\":[{\"id\":72,\"name\":\"ICE\"}]},{\"id\":78,\"name\":\"콜드브루\",\"price\":2500,\"itemOptions\":[{\"id\":72,\"name\":\"ICE\"}]},{\"id\":79,\"name\":\"녹차라떼\",\"price\":3000,\"itemOptions\":[{\"id\":72,\"name\":\"ICE\"},{\"id\":74,\"name\":\"HOT\"}]},{\"id\":79,\"name\":\"녹차라떼\",\"price\":3000,\"itemOptions\":[{\"id\":72,\"name\":\"ICE\"},{\"id\":74,\"name\":\"HOT\"}]},{\"id\":73,\"name\":\"딸기라떼\",\"price\":3000,\"itemOptions\":[{\"id\":72,\"name\":\"ICE\"},{\"id\":74,\"name\":\"HOT\"}]},{\"id\":73,\"name\":\"딸기라떼\",\"price\":3000,\"itemOptions\":[{\"id\":72,\"name\":\"ICE\"},{\"id\":74,\"name\":\"HOT\"}]},{\"id\":80,\"name\":\"녹차\",\"price\":3000,\"itemOptions\":[{\"id\":74,\"name\":\"HOT\"}]},{\"id\":80,\"name\":\"녹차\",\"price\":3000,\"itemOptions\":[{\"id\":74,\"name\":\"HOT\"}]},{\"id\":75,\"name\":\"히비스커스 티\",\"price\":3000,\"itemOptions\":[{\"id\":74,\"name\":\"HOT\"}]},{\"id\":75,\"name\":\"히비스커스 티\",\"price\":3000,\"itemOptions\":[{\"id\":74,\"name\":\"HOT\"}]}]}]"; + + @Data + static class _Store { + private Long id; + private String name; + private List<_Item> items = new ArrayList<>(); + + @NoArgsConstructor + @Data + static class _Item { + private Long id; + private String name; + private Long price; + List<_ItemOption> itemOptions = new ArrayList<>(); + } + + @NoArgsConstructor @Data + static class _ItemOption { + private Long id; + private String name; + } + } @Override public void run(String... args) throws Exception { Long userId = 2L; Long userCouponId = null; - Long storeId = 1L; - Long orderPrice = 1000L; - for (int i = 1; i <= 20; i++) { - Transaction transaction = Transaction.of(); + for (int i = 0; i <= 100; i++) { +// if (i % 2 == 0) userId = 2L; +// else userId = 3L; - Long itemId = 1L; - Long price = 100L; - Long count = 1L; - OrderItem orderItem = OrderItem.of(itemId + i, price * i, count + i, - OrderItemOption.of(), OrderItemOption.of()); + List orders = new ArrayList<>(); + _Store[] stores = objectMapper.readValue(storeJson, _Store[].class); + for (_Store store : stores) { + Long storeId = store.getId(); - OrderItem orderItem1 = OrderItem.of(itemId + i + 1, price * (i + 1), count + (i + 1), - OrderItemOption.of(), OrderItemOption.of()); + List orderItems = new ArrayList<>(); + for (_Store._Item item : store.getItems()) { + Long itemId = item.getId(); + Long price = item.getPrice(); - Order order = Order.of(userId, userCouponId, storeId, orderPrice * i, transaction, orderItem, orderItem1); + List orderItemOptions = new ArrayList<>(); + for (_Store._ItemOption itemOption : item.getItemOptions()) { + Long itemOptionId = itemOption.getId(); - if (i % 2 == 0) { - order.placed(); - } else { - order.order(); + OrderItemOption of = OrderItemOption.of(itemOptionId); + orderItemOptions.add(of); + } + OrderItem orderItem = OrderItem.of(itemId, price, 2L, orderItemOptions); + orderItems.add(orderItem); + } + + Order order = Order.of(userId, userCouponId, storeId, orderItems); + if (i % 2 == 0) order.setOrderStatus(OrderStatus.ORDER); + else order.setOrderStatus(OrderStatus.REJECT); + orders.add(order); } - orderRepository.save(order); + orderRepository.saveAll(orders); } } } diff --git a/order-service/src/main/java/com/justpickup/orderservice/global/client/store/StoreByUserIdResponse.java b/order-service/src/main/java/com/justpickup/orderservice/global/client/store/StoreByUserIdResponse.java new file mode 100644 index 0000000..e0a8c86 --- /dev/null +++ b/order-service/src/main/java/com/justpickup/orderservice/global/client/store/StoreByUserIdResponse.java @@ -0,0 +1,9 @@ +package com.justpickup.orderservice.global.client.store; + +import lombok.Data; + +@Data +public class StoreByUserIdResponse { + private Long id; + private String name; +} diff --git a/order-service/src/main/java/com/justpickup/orderservice/global/client/store/StoreClient.java b/order-service/src/main/java/com/justpickup/orderservice/global/client/store/StoreClient.java index c2762bb..6e60243 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/global/client/store/StoreClient.java +++ b/order-service/src/main/java/com/justpickup/orderservice/global/client/store/StoreClient.java @@ -4,10 +4,15 @@ import com.justpickup.orderservice.global.dto.Result; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestHeader; -@FeignClient(name = "STORE-SERVICE", url = "127.0.0.1:8001/store-service") +@FeignClient("STORE-SERVICE") public interface StoreClient { @GetMapping("/item/{itemId}") Result getItem(@PathVariable("itemId") Long itemId); + + @GetMapping("/api/owner/store/") + Result getStoreByUserId(@RequestHeader(value="user-id") Long userId); + } diff --git a/order-service/src/main/java/com/justpickup/orderservice/global/client/user/UserClient.java b/order-service/src/main/java/com/justpickup/orderservice/global/client/user/UserClient.java index 4a81250..4a212d2 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/global/client/user/UserClient.java +++ b/order-service/src/main/java/com/justpickup/orderservice/global/client/user/UserClient.java @@ -5,9 +5,9 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; -@FeignClient(name = "USER-SERVICE", url = "127.0.0.1:8001/user-service") +@FeignClient("USER-SERVICE") public interface UserClient { @GetMapping("/customer/{userId}") - Result getUser(@PathVariable("userId") Long userId); + Result getCustomerById(@PathVariable("userId") Long userId); }