From 5729508227dc7b5d190429b128d29d610d59b16e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=95=88=EC=A0=95=ED=9B=84?= Date: Sun, 4 Aug 2024 19:36:19 +0900 Subject: [PATCH 1/9] =?UTF-8?q?fix:=20order=20status=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 2 +- .../order/presentation/OrderController.java | 7 +++---- .../apimodule/payment/service/PaymentService.java | 13 ++++--------- .../coremodule/VisitList/domain/VisitList.java | 4 ++++ .../coremodule/VisitList/domain/VisitStatus.java | 2 +- .../market/service/MarketQueryService.java | 6 +++--- 6 files changed, 16 insertions(+), 18 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 65900bd..b3112cf 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -2,7 +2,7 @@ name: Backend CD # actions 이름 on: push: - branches: [ feat/toss-payment ] + branches: [ feat/customer ] jobs: deploy: diff --git a/api-module/src/main/java/com/likelion/apimodule/order/presentation/OrderController.java b/api-module/src/main/java/com/likelion/apimodule/order/presentation/OrderController.java index 2cecfc1..cc25838 100644 --- a/api-module/src/main/java/com/likelion/apimodule/order/presentation/OrderController.java +++ b/api-module/src/main/java/com/likelion/apimodule/order/presentation/OrderController.java @@ -5,7 +5,6 @@ import com.likelion.apimodule.order.dto.OrderDetail; import com.likelion.apimodule.order.dto.OrderInfo; import com.likelion.apimodule.payment.dto.request.ApprovalRequest; -import com.likelion.apimodule.payment.dto.response.ApprovalResponse; import com.likelion.apimodule.payment.service.PaymentService; import com.likelion.commonmodule.exception.common.ApplicationResponse; import com.likelion.commonmodule.security.util.AuthConsts; @@ -104,13 +103,13 @@ public ApplicationResponse findMyOrderDetail( } ) @Operation(summary = "주문하기(방문리스트 준비중 추가) + 토스 결제 API", description = "주문하기(방문리스트 준비중 추가) + 토스 결제 API 입니다.") - public ApplicationResponse tossPayment( + public ApplicationResponse tossPayment( @RequestHeader(AuthConsts.ACCESS_TOKEN_HEADER) String accessToken, @RequestBody ApprovalRequest request ) { - final ApprovalResponse approval = paymentService.approval(accessToken, request); - return ApplicationResponse.ok(approval); + paymentService.approval(accessToken, request); + return ApplicationResponse.ok("주문 완료"); } // 주문 삭제 diff --git a/api-module/src/main/java/com/likelion/apimodule/payment/service/PaymentService.java b/api-module/src/main/java/com/likelion/apimodule/payment/service/PaymentService.java index 58fff7a..7e5ebec 100644 --- a/api-module/src/main/java/com/likelion/apimodule/payment/service/PaymentService.java +++ b/api-module/src/main/java/com/likelion/apimodule/payment/service/PaymentService.java @@ -1,8 +1,6 @@ package com.likelion.apimodule.payment.service; import com.likelion.apimodule.payment.dto.request.ApprovalRequest; -import com.likelion.apimodule.payment.dto.response.ApprovalResponse; -import com.likelion.apimodule.payment.dto.response.TossPaymentResponse; import com.likelion.apimodule.security.util.JwtUtil; import com.likelion.coremodule.market.service.MarketQueryService; import com.likelion.coremodule.menu.domain.Menu; @@ -29,7 +27,6 @@ @RequiredArgsConstructor public class PaymentService { - private final PaymentClient paymentClient; private final OrderQueryService orderQueryService; private final StoreQueryService storeQueryService; private final MarketQueryService marketQueryService; @@ -41,17 +38,17 @@ public class PaymentService { private static final SecureRandom random = new SecureRandom(); private final MenuQueryService menuQueryService; - public ApprovalResponse approval(String accessToken, ApprovalRequest request) { + public void approval(String accessToken, ApprovalRequest request) { String email = jwtUtil.getEmail(accessToken); User user = userQueryService.findByEmail(email); Store store = storeQueryService.findStoreById(request.menuIds().get(0)); // 토스 페이 결제 승인 - TossPaymentResponse tossPaymentResponse = paymentClient.confirmPayment(request); +// TossPaymentResponse tossPaymentResponse = paymentClient.confirmPayment(request); - // 방문 리스트 준비 중으로 저장 + 주문 테이블 저장 - marketQueryService.saveVisitListToPreparing(store.getId(), user.getEmail()); + // 방문 리스트 결제 완료로 저장 + 주문 테이블 저장 + marketQueryService.saveVisitListToPayment(store.getId(), user.getEmail()); final Order order = Order.builder().orderNum(request.orderNum()).user(user). phoneNum(request.phoneNum()).pickUpRoute(request.pickUpRoute()). @@ -66,8 +63,6 @@ public ApprovalResponse approval(String accessToken, ApprovalRequest request) { final OrderItem orderItem = OrderItem.builder().order(order).menu(menu).quantity(request.amount()).build(); orderQueryService.saveOrderItem(orderItem); } - - return ApprovalResponse.of(tossPaymentResponse); } public String generateOrderNumber(LocalDateTime createdAt) { diff --git a/core-module/src/main/java/com/likelion/coremodule/VisitList/domain/VisitList.java b/core-module/src/main/java/com/likelion/coremodule/VisitList/domain/VisitList.java index b6503dc..ec4c5f2 100644 --- a/core-module/src/main/java/com/likelion/coremodule/VisitList/domain/VisitList.java +++ b/core-module/src/main/java/com/likelion/coremodule/VisitList/domain/VisitList.java @@ -32,6 +32,10 @@ public class VisitList extends BaseEntity { private VisitStatus visit_status; + public void updateToPayment() { + this.visit_status = VisitStatus.PAYMENT; + } + public void updateToPreparing() { this.visit_status = VisitStatus.PREPARING; } diff --git a/core-module/src/main/java/com/likelion/coremodule/VisitList/domain/VisitStatus.java b/core-module/src/main/java/com/likelion/coremodule/VisitList/domain/VisitStatus.java index e80e198..6f9091b 100644 --- a/core-module/src/main/java/com/likelion/coremodule/VisitList/domain/VisitStatus.java +++ b/core-module/src/main/java/com/likelion/coremodule/VisitList/domain/VisitStatus.java @@ -2,5 +2,5 @@ public enum VisitStatus { - BEFORE, PREPARING, PREPARED, VISITED + BEFORE, PAYMENT, PREPARING, PREPARED, VISITED } diff --git a/core-module/src/main/java/com/likelion/coremodule/market/service/MarketQueryService.java b/core-module/src/main/java/com/likelion/coremodule/market/service/MarketQueryService.java index acd414c..87eca5c 100644 --- a/core-module/src/main/java/com/likelion/coremodule/market/service/MarketQueryService.java +++ b/core-module/src/main/java/com/likelion/coremodule/market/service/MarketQueryService.java @@ -51,7 +51,7 @@ public Integer findMyMarketVisit(Long marketId, Long userId) { } @Transactional - public void saveVisitListToPreparing(Long storeId, String email) { + public void saveVisitListToPayment(Long storeId, String email) { User user = userQueryService.findByEmail(email); Store store = storeQueryService.findStoreById(storeId); @@ -62,12 +62,12 @@ public void saveVisitListToPreparing(Long storeId, String email) { // 오늘 동일한 사용자가 동일한 가게를 방문한 기록이 있는지 확인 if (visitListRepository.findVisitListByUserUserIdAndStoreIdAndVisitedDate(user.getUserId(), storeId, today) != null) { VisitList visitList = visitListRepository.findVisitListByUserUserIdAndStoreIdAndVisitedDate(user.getUserId(), storeId, today); - visitList.updateToPreparing(); + visitList.updateToPayment(); } else { final VisitList visitList = VisitList.builder() .store(store) .user(user) - .visit_status(VisitStatus.PREPARING) + .visit_status(VisitStatus.PAYMENT) .visitedDate(today) .build(); visitListRepository.save(visitList); From cc4feda063ff6f68667f18297b33d7262c248c59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=95=88=EC=A0=95=ED=9B=84?= Date: Sun, 4 Aug 2024 21:04:55 +0900 Subject: [PATCH 2/9] =?UTF-8?q?feat:=20=EC=A3=BC=EB=AC=B8=20=EC=A0=84?= =?UTF-8?q?=EC=B2=B4=20=EC=A1=B0=ED=9A=8C=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cart/application/CartSaveUseCase.java | 2 +- .../application/CustomerFIndUseCase.java | 87 +++++++++++++++++++ .../application/CustomerSaveUseCase.java | 9 ++ .../apimodule/customer/dto/OrderMenu.java | 7 ++ .../apimodule/customer/dto/TotalOrder.java | 18 ++++ .../presentation/CustomerController.java | 57 ++++++++++++ .../service/CustomerQueryService.java | 9 ++ .../coremodule/order/domain/OrderItem.java | 3 +- 8 files changed, 189 insertions(+), 3 deletions(-) create mode 100644 api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerFIndUseCase.java create mode 100644 api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java create mode 100644 api-module/src/main/java/com/likelion/apimodule/customer/dto/OrderMenu.java create mode 100644 api-module/src/main/java/com/likelion/apimodule/customer/dto/TotalOrder.java create mode 100644 api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java create mode 100644 core-module/src/main/java/com/likelion/coremodule/customer/service/CustomerQueryService.java diff --git a/api-module/src/main/java/com/likelion/apimodule/cart/application/CartSaveUseCase.java b/api-module/src/main/java/com/likelion/apimodule/cart/application/CartSaveUseCase.java index cbea8b2..70bb4ff 100644 --- a/api-module/src/main/java/com/likelion/apimodule/cart/application/CartSaveUseCase.java +++ b/api-module/src/main/java/com/likelion/apimodule/cart/application/CartSaveUseCase.java @@ -39,7 +39,7 @@ public String saveMyCart(String accessToken, CartSaveReq saveReq) { if (findMyCartCount(user.getUserId(), menu.getId()) >= 1) { Cart cart = cartQueryService.findCartByUserIdAndMenuId(user.getUserId(), menu.getId()); - cart.setCartQuantity(saveReq.quantity()); + cart.setCartQuantity(saveReq.quantity() + cart.getQuantity()); return "추가"; } else { diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerFIndUseCase.java b/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerFIndUseCase.java new file mode 100644 index 0000000..fe0e8fc --- /dev/null +++ b/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerFIndUseCase.java @@ -0,0 +1,87 @@ +package com.likelion.apimodule.customer.application; + +import com.likelion.apimodule.customer.dto.TotalOrder; +import com.likelion.apimodule.order.dto.MenuOrder; +import com.likelion.coremodule.customer.service.CustomerQueryService; +import com.likelion.coremodule.menu.domain.Menu; +import com.likelion.coremodule.menu.service.MenuQueryService; +import com.likelion.coremodule.order.domain.Order; +import com.likelion.coremodule.order.domain.OrderItem; +import com.likelion.coremodule.order.service.OrderQueryService; +import com.likelion.coremodule.user.application.UserQueryService; +import com.likelion.coremodule.user.domain.User; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class CustomerFIndUseCase { + + private final CustomerQueryService customerQueryService; + private final MenuQueryService menuQueryService; + private final OrderQueryService orderQueryService; + private final UserQueryService userQueryService; + + public List getTotalOrder(Long storeId) { + + List menus = menuQueryService.findMenusByStoreId(storeId); + List items = new ArrayList<>(); + for (Menu menu : menus) { + List item = orderQueryService.findOrderItemsByMenuId(menu.getId()); + items.addAll(item); + } + + Map> groupedItems = new HashMap<>(); + for (OrderItem item : items) { + groupedItems.computeIfAbsent(item.getOrder().getId(), k -> new ArrayList<>()).add(item); + } + + List totalOrders = new ArrayList<>(); + + for (Map.Entry> entry : groupedItems.entrySet()) { + + List orderItems = entry.getValue(); + Order order = orderQueryService.findOrderById(orderItems.get(0).getOrder().getId()); + User user = userQueryService.findById(order.getUser().getUserId()); + + List menuOrders = orderItems.stream() + .map(item -> { + + Menu menu = menuQueryService.findMenuById(item.getMenu().getId()); + + return new MenuOrder( + menu.getName(), + menu.getImageUrl(), + item.getQuantity(), + menu.getPrice() * item.getQuantity() + ); + }) + .collect(Collectors.toList()); + + Integer totalPrice = menuOrders.stream() + .mapToInt(MenuOrder::totalPrice) + .sum(); + + TotalOrder totalOrder = new TotalOrder( + order.getPickUpRoute(), + order.getVisitHour().toString(), + order.getVisitMin().toString(), + user.getName(), + order.getCreatedAt(), + order.getOrderNum(), + menuOrders, + totalPrice + ); + + totalOrders.add(totalOrder); + } + + return totalOrders; + } +} diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java b/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java new file mode 100644 index 0000000..74ff2bf --- /dev/null +++ b/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java @@ -0,0 +1,9 @@ +package com.likelion.apimodule.customer.application; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class CustomerSaveUseCase { +} diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/dto/OrderMenu.java b/api-module/src/main/java/com/likelion/apimodule/customer/dto/OrderMenu.java new file mode 100644 index 0000000..86eb3e6 --- /dev/null +++ b/api-module/src/main/java/com/likelion/apimodule/customer/dto/OrderMenu.java @@ -0,0 +1,7 @@ +package com.likelion.apimodule.customer.dto; + +public record OrderMenu( + Long menuId, + String menuName +) { +} diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/dto/TotalOrder.java b/api-module/src/main/java/com/likelion/apimodule/customer/dto/TotalOrder.java new file mode 100644 index 0000000..0e4eb72 --- /dev/null +++ b/api-module/src/main/java/com/likelion/apimodule/customer/dto/TotalOrder.java @@ -0,0 +1,18 @@ +package com.likelion.apimodule.customer.dto; + +import com.likelion.apimodule.order.dto.MenuOrder; + +import java.time.LocalDateTime; +import java.util.List; + +public record TotalOrder( + String pickUpRoute, + String visitHour, + String visitMin, + String userName, + LocalDateTime createdAt, + String orderNum, + List menu, + Integer totalPrice +) { +} diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java b/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java new file mode 100644 index 0000000..cf4cf5c --- /dev/null +++ b/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java @@ -0,0 +1,57 @@ +package com.likelion.apimodule.customer.presentation; + +import com.likelion.apimodule.customer.application.CustomerFIndUseCase; +import com.likelion.apimodule.customer.application.CustomerSaveUseCase; +import com.likelion.apimodule.customer.dto.TotalOrder; +import com.likelion.commonmodule.exception.common.ApplicationResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RequiredArgsConstructor +@RestController +@RequestMapping("/v1/customer") +@Validated +@Tag(name = "Customer", description = "Customer 관련 API") +public class CustomerController { + + private final CustomerFIndUseCase customerFIndUseCase; + private final CustomerSaveUseCase customerSaveUseCase; + + // 주문 전체 조회 (정후) + @GetMapping("/{storeId}") + @ApiResponses( + value = { + @ApiResponse( + responseCode = "200", + description = "주문 전체 조회", + useReturnTypeSchema = true + ) + } + ) + @Operation(summary = "주문 전체 조회 API", description = "주문 전체 조회 API 입니다.") + public ApplicationResponse> getTotalOrder( + @PathVariable Long storeId + ) { + + List orders = customerFIndUseCase.getTotalOrder(storeId); + return ApplicationResponse.ok(orders); + } + + // 접수하는 API (정후) + + // 준비 완료 시키는 API (정후) + + // 메뉴 조회 API (소연) + + // 메뉴 추가 API (소연) +} diff --git a/core-module/src/main/java/com/likelion/coremodule/customer/service/CustomerQueryService.java b/core-module/src/main/java/com/likelion/coremodule/customer/service/CustomerQueryService.java new file mode 100644 index 0000000..353ed39 --- /dev/null +++ b/core-module/src/main/java/com/likelion/coremodule/customer/service/CustomerQueryService.java @@ -0,0 +1,9 @@ +package com.likelion.coremodule.customer.service; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class CustomerQueryService { +} diff --git a/core-module/src/main/java/com/likelion/coremodule/order/domain/OrderItem.java b/core-module/src/main/java/com/likelion/coremodule/order/domain/OrderItem.java index 125a02d..08112b6 100644 --- a/core-module/src/main/java/com/likelion/coremodule/order/domain/OrderItem.java +++ b/core-module/src/main/java/com/likelion/coremodule/order/domain/OrderItem.java @@ -2,7 +2,6 @@ import com.likelion.commonmodule.exception.common.BaseEntity; import com.likelion.coremodule.menu.domain.Menu; -import com.likelion.coremodule.order.domain.Order; import jakarta.persistence.*; import lombok.*; @@ -22,7 +21,7 @@ public class OrderItem extends BaseEntity { @JoinColumn(name = "order_id") private Order order; - @ManyToOne(fetch = FetchType.LAZY) + @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "menu_id") private Menu menu; From 2bfeec1240d2013afa773b018c491ea9abf88932 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=95=88=EC=A0=95=ED=9B=84?= Date: Sun, 4 Aug 2024 22:10:12 +0900 Subject: [PATCH 3/9] =?UTF-8?q?fix:=20cart=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cart/application/CartSaveUseCase.java | 10 ++++++++- .../application/CustomerFIndUseCase.java | 5 +++++ .../application/CustomerSaveUseCase.java | 17 ++++++++++++++ .../apimodule/customer/dto/TotalOrder.java | 2 ++ .../presentation/CustomerController.java | 22 +++++++++++++++---- .../repository/VisitListRepository.java | 2 ++ .../service/VisitListQueryService.java | 4 ++++ 7 files changed, 57 insertions(+), 5 deletions(-) diff --git a/api-module/src/main/java/com/likelion/apimodule/cart/application/CartSaveUseCase.java b/api-module/src/main/java/com/likelion/apimodule/cart/application/CartSaveUseCase.java index 70bb4ff..21c67df 100644 --- a/api-module/src/main/java/com/likelion/apimodule/cart/application/CartSaveUseCase.java +++ b/api-module/src/main/java/com/likelion/apimodule/cart/application/CartSaveUseCase.java @@ -40,15 +40,23 @@ public String saveMyCart(String accessToken, CartSaveReq saveReq) { Cart cart = cartQueryService.findCartByUserIdAndMenuId(user.getUserId(), menu.getId()); cart.setCartQuantity(saveReq.quantity() + cart.getQuantity()); + cartQueryService.saveCart(cart); return "추가"; } else { - final Cart cart = Cart.builder().user(user).menu(menu).quantity(saveReq.quantity()).build(); + + final Cart cart = Cart.builder() + .user(user) + .menu(menu) + .quantity(saveReq.quantity()) + .build(); cartQueryService.saveCart(cart); + return "신규"; } } + public void updateMyCart(String accessToken, List updateReqs) { String email = jwtUtil.getEmail(accessToken); diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerFIndUseCase.java b/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerFIndUseCase.java index fe0e8fc..eba3711 100644 --- a/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerFIndUseCase.java +++ b/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerFIndUseCase.java @@ -2,6 +2,8 @@ import com.likelion.apimodule.customer.dto.TotalOrder; import com.likelion.apimodule.order.dto.MenuOrder; +import com.likelion.coremodule.VisitList.domain.VisitList; +import com.likelion.coremodule.VisitList.service.VisitListQueryService; import com.likelion.coremodule.customer.service.CustomerQueryService; import com.likelion.coremodule.menu.domain.Menu; import com.likelion.coremodule.menu.service.MenuQueryService; @@ -27,6 +29,7 @@ public class CustomerFIndUseCase { private final MenuQueryService menuQueryService; private final OrderQueryService orderQueryService; private final UserQueryService userQueryService; + private final VisitListQueryService visitListQueryService; public List getTotalOrder(Long storeId) { @@ -49,6 +52,7 @@ public List getTotalOrder(Long storeId) { List orderItems = entry.getValue(); Order order = orderQueryService.findOrderById(orderItems.get(0).getOrder().getId()); User user = userQueryService.findById(order.getUser().getUserId()); + VisitList visitList = visitListQueryService.findVisitListByStoreIdAndUserId(storeId, user.getUserId()); List menuOrders = orderItems.stream() .map(item -> { @@ -73,6 +77,7 @@ public List getTotalOrder(Long storeId) { order.getVisitHour().toString(), order.getVisitMin().toString(), user.getName(), + visitList.getVisit_status(), order.getCreatedAt(), order.getOrderNum(), menuOrders, diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java b/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java index 74ff2bf..d63b69d 100644 --- a/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java +++ b/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java @@ -1,9 +1,26 @@ package com.likelion.apimodule.customer.application; +import com.likelion.coremodule.VisitList.service.VisitListQueryService; +import com.likelion.coremodule.order.domain.Order; +import com.likelion.coremodule.order.service.OrderQueryService; +import com.likelion.coremodule.user.application.UserQueryService; +import com.likelion.coremodule.user.domain.User; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor public class CustomerSaveUseCase { + + private final VisitListQueryService visitListQueryService; + private final OrderQueryService orderQueryService; + private final UserQueryService userQueryService; + + public void changeToPreparing(Long orderId) { + + Order order = orderQueryService.findOrderById(orderId); + User user = userQueryService.findById(order.getUser().getUserId()); + + + } } diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/dto/TotalOrder.java b/api-module/src/main/java/com/likelion/apimodule/customer/dto/TotalOrder.java index 0e4eb72..f6d4bf3 100644 --- a/api-module/src/main/java/com/likelion/apimodule/customer/dto/TotalOrder.java +++ b/api-module/src/main/java/com/likelion/apimodule/customer/dto/TotalOrder.java @@ -1,6 +1,7 @@ package com.likelion.apimodule.customer.dto; import com.likelion.apimodule.order.dto.MenuOrder; +import com.likelion.coremodule.VisitList.domain.VisitStatus; import java.time.LocalDateTime; import java.util.List; @@ -10,6 +11,7 @@ public record TotalOrder( String visitHour, String visitMin, String userName, + VisitStatus orderStatus, LocalDateTime createdAt, String orderNum, List menu, diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java b/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java index cf4cf5c..9e46dec 100644 --- a/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java +++ b/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java @@ -10,10 +10,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -48,6 +45,23 @@ public ApplicationResponse> getTotalOrder( } // 접수하는 API (정후) + @PostMapping("/{orderId}") + @ApiResponses( + value = { + @ApiResponse( + responseCode = "200", + description = "주문 접숙하기", + useReturnTypeSchema = true + ) + } + ) + @Operation(summary = "주문 접수 API", description = "주문 접수 API 입니다.") + public ApplicationResponse changeToPreparing( + @PathVariable Long orderId + ) { + + return ApplicationResponse.ok("주문을 접수했습니다."); + } // 준비 완료 시키는 API (정후) diff --git a/core-module/src/main/java/com/likelion/coremodule/VisitList/repository/VisitListRepository.java b/core-module/src/main/java/com/likelion/coremodule/VisitList/repository/VisitListRepository.java index 79ac35c..48d1c2d 100644 --- a/core-module/src/main/java/com/likelion/coremodule/VisitList/repository/VisitListRepository.java +++ b/core-module/src/main/java/com/likelion/coremodule/VisitList/repository/VisitListRepository.java @@ -11,4 +11,6 @@ public interface VisitListRepository extends JpaRepository { VisitList findVisitListByUserUserIdAndStoreIdAndVisitedDate(Long userId, Long storeId, LocalDate today); List findVisitListsByUserUserId(Long userId); + + VisitList findVisitListByStoreIdAndUserUserId(Long storeId, Long userId); } diff --git a/core-module/src/main/java/com/likelion/coremodule/VisitList/service/VisitListQueryService.java b/core-module/src/main/java/com/likelion/coremodule/VisitList/service/VisitListQueryService.java index 3b93204..3c827df 100644 --- a/core-module/src/main/java/com/likelion/coremodule/VisitList/service/VisitListQueryService.java +++ b/core-module/src/main/java/com/likelion/coremodule/VisitList/service/VisitListQueryService.java @@ -26,4 +26,8 @@ public VisitList findVisitListById(Long id) { public List findVisitListsByUserId(Long userId) { return visitListRepository.findVisitListsByUserUserId(userId); } + + public VisitList findVisitListByStoreIdAndUserId(Long storeId, Long userId) { + return visitListRepository.findVisitListByStoreIdAndUserUserId(storeId, userId); + } } From bbaff36afd05ce14d1c03e9a0df53a4c9ac1e058 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=95=88=EC=A0=95=ED=9B=84?= Date: Sun, 4 Aug 2024 22:17:25 +0900 Subject: [PATCH 4/9] =?UTF-8?q?feat:=20=EC=A3=BC=EB=AC=B8=20=EC=A0=91?= =?UTF-8?q?=EC=88=98,=20=EC=A4=80=EB=B9=84=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/CustomerSaveUseCase.java | 15 ++++++++++-- .../presentation/CustomerController.java | 23 +++++++++++++++++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java b/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java index d63b69d..1a2f1f4 100644 --- a/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java +++ b/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java @@ -1,5 +1,6 @@ package com.likelion.apimodule.customer.application; +import com.likelion.coremodule.VisitList.domain.VisitList; import com.likelion.coremodule.VisitList.service.VisitListQueryService; import com.likelion.coremodule.order.domain.Order; import com.likelion.coremodule.order.service.OrderQueryService; @@ -16,11 +17,21 @@ public class CustomerSaveUseCase { private final OrderQueryService orderQueryService; private final UserQueryService userQueryService; - public void changeToPreparing(Long orderId) { + public void changeToPreparing(Long storeId, Long orderId) { Order order = orderQueryService.findOrderById(orderId); User user = userQueryService.findById(order.getUser().getUserId()); - + VisitList visitList = visitListQueryService.findVisitListByStoreIdAndUserId(storeId, user.getUserId()); + visitList.updateToPreparing(); + } + + public void changeToPrepared(Long storeId, Long orderId) { + + Order order = orderQueryService.findOrderById(orderId); + User user = userQueryService.findById(order.getUser().getUserId()); + + VisitList visitList = visitListQueryService.findVisitListByStoreIdAndUserId(storeId, user.getUserId()); + visitList.updateToPrepared(); } } diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java b/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java index 9e46dec..bcb6080 100644 --- a/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java +++ b/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java @@ -45,7 +45,7 @@ public ApplicationResponse> getTotalOrder( } // 접수하는 API (정후) - @PostMapping("/{orderId}") + @PostMapping("/{storeId}/{orderId}") @ApiResponses( value = { @ApiResponse( @@ -57,15 +57,34 @@ public ApplicationResponse> getTotalOrder( ) @Operation(summary = "주문 접수 API", description = "주문 접수 API 입니다.") public ApplicationResponse changeToPreparing( + @PathVariable Long storeId, @PathVariable Long orderId ) { + customerSaveUseCase.changeToPreparing(storeId, orderId); return ApplicationResponse.ok("주문을 접수했습니다."); } // 준비 완료 시키는 API (정후) + @PostMapping("/{storeId}/{orderId}") + @ApiResponses( + value = { + @ApiResponse( + responseCode = "200", + description = "주문 접숙하기", + useReturnTypeSchema = true + ) + } + ) + @Operation(summary = "주문 접수 API", description = "주문 접수 API 입니다.") + public ApplicationResponse changeToPrepared( + @PathVariable Long storeId, + @PathVariable Long orderId + ) { - // 메뉴 조회 API (소연) + customerSaveUseCase.changeToPrepared(storeId, orderId); + return ApplicationResponse.ok("주문을 접수했습니다."); + } // 메뉴 추가 API (소연) } From 7df5566c8c4533198312cbcbdef020234a0b405c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=95=88=EC=A0=95=ED=9B=84?= Date: Sun, 4 Aug 2024 22:52:01 +0900 Subject: [PATCH 5/9] fix: customer related errors --- .../customer/application/CustomerSaveUseCase.java | 2 ++ .../customer/presentation/CustomerController.java | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java b/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java index 1a2f1f4..884d0f7 100644 --- a/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java +++ b/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java @@ -8,9 +8,11 @@ import com.likelion.coremodule.user.domain.User; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; @Service @RequiredArgsConstructor +@Transactional public class CustomerSaveUseCase { private final VisitListQueryService visitListQueryService; diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java b/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java index bcb6080..6f184df 100644 --- a/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java +++ b/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java @@ -45,7 +45,7 @@ public ApplicationResponse> getTotalOrder( } // 접수하는 API (정후) - @PostMapping("/{storeId}/{orderId}") + @PostMapping("/{storeId}/{orderId}/preparing") @ApiResponses( value = { @ApiResponse( @@ -66,24 +66,24 @@ public ApplicationResponse changeToPreparing( } // 준비 완료 시키는 API (정후) - @PostMapping("/{storeId}/{orderId}") + @PostMapping("/{storeId}/{orderId}/prepared") @ApiResponses( value = { @ApiResponse( responseCode = "200", - description = "주문 접숙하기", + description = "주문 준비 완료", useReturnTypeSchema = true ) } ) - @Operation(summary = "주문 접수 API", description = "주문 접수 API 입니다.") + @Operation(summary = "주문 준비 완료 API", description = "주문 준비 완료 API 입니다.") public ApplicationResponse changeToPrepared( @PathVariable Long storeId, @PathVariable Long orderId ) { customerSaveUseCase.changeToPrepared(storeId, orderId); - return ApplicationResponse.ok("주문을 접수했습니다."); + return ApplicationResponse.ok("주문을 준비 완료했습니다."); } // 메뉴 추가 API (소연) From d1b56ec909043869b5f20ef012961a897e216db2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=95=88=EC=A0=95=ED=9B=84?= Date: Sun, 4 Aug 2024 23:08:31 +0900 Subject: [PATCH 6/9] test: test for deploy --- .../apimodule/customer/presentation/CustomerController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java b/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java index 6f184df..b77515f 100644 --- a/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java +++ b/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java @@ -86,5 +86,6 @@ public ApplicationResponse changeToPrepared( return ApplicationResponse.ok("주문을 준비 완료했습니다."); } + // 메뉴 추가 API (소연) } From aef33c73d2b4483870f11f42f2bbe2a40935aa4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=95=88=EC=A0=95=ED=9B=84?= Date: Mon, 5 Aug 2024 00:24:49 +0900 Subject: [PATCH 7/9] =?UTF-8?q?feat:=20menu=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/CustomerSaveUseCase.java | 20 ++++++++++++++++ .../apimodule/customer/dto/AddMenu.java | 8 +++++++ .../presentation/CustomerController.java | 23 ++++++++++++++++++- .../menu/service/MenuQueryService.java | 4 ++++ 4 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 api-module/src/main/java/com/likelion/apimodule/customer/dto/AddMenu.java diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java b/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java index 884d0f7..9979074 100644 --- a/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java +++ b/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java @@ -1,14 +1,21 @@ package com.likelion.apimodule.customer.application; +import com.likelion.apimodule.customer.dto.AddMenu; +import com.likelion.commonmodule.image.service.AwsS3Service; import com.likelion.coremodule.VisitList.domain.VisitList; import com.likelion.coremodule.VisitList.service.VisitListQueryService; +import com.likelion.coremodule.menu.domain.Menu; +import com.likelion.coremodule.menu.service.MenuQueryService; import com.likelion.coremodule.order.domain.Order; import com.likelion.coremodule.order.service.OrderQueryService; +import com.likelion.coremodule.store.domain.Store; +import com.likelion.coremodule.store.service.StoreQueryService; import com.likelion.coremodule.user.application.UserQueryService; import com.likelion.coremodule.user.domain.User; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; @Service @RequiredArgsConstructor @@ -18,6 +25,9 @@ public class CustomerSaveUseCase { private final VisitListQueryService visitListQueryService; private final OrderQueryService orderQueryService; private final UserQueryService userQueryService; + private final StoreQueryService storeQueryService; + private final AwsS3Service awsS3Service; + private final MenuQueryService menuQueryService; public void changeToPreparing(Long storeId, Long orderId) { @@ -36,4 +46,14 @@ public void changeToPrepared(Long storeId, Long orderId) { VisitList visitList = visitListQueryService.findVisitListByStoreIdAndUserId(storeId, user.getUserId()); visitList.updateToPrepared(); } + + public void addMenuInfo(Long storeId, AddMenu addMenu, MultipartFile multipartFile) { + + Store store = storeQueryService.findStoreById(storeId); + String imageUrl = awsS3Service.uploadFile(multipartFile); + + final Menu menu = Menu.builder().store(store).name(addMenu.name()).content(addMenu.content()). + imageUrl(imageUrl).price(addMenu.price()).build(); + menuQueryService.saveMenu(menu); + } } diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/dto/AddMenu.java b/api-module/src/main/java/com/likelion/apimodule/customer/dto/AddMenu.java new file mode 100644 index 0000000..e3ad809 --- /dev/null +++ b/api-module/src/main/java/com/likelion/apimodule/customer/dto/AddMenu.java @@ -0,0 +1,8 @@ +package com.likelion.apimodule.customer.dto; + +public record AddMenu( + String name, + Integer price, + String content +) { +} diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java b/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java index b77515f..23d51c0 100644 --- a/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java +++ b/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java @@ -2,6 +2,7 @@ import com.likelion.apimodule.customer.application.CustomerFIndUseCase; import com.likelion.apimodule.customer.application.CustomerSaveUseCase; +import com.likelion.apimodule.customer.dto.AddMenu; import com.likelion.apimodule.customer.dto.TotalOrder; import com.likelion.commonmodule.exception.common.ApplicationResponse; import io.swagger.v3.oas.annotations.Operation; @@ -11,6 +12,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -86,6 +88,25 @@ public ApplicationResponse changeToPrepared( return ApplicationResponse.ok("주문을 준비 완료했습니다."); } - // 메뉴 추가 API (소연) + @PostMapping("/{storeId}/addmenu") + @ApiResponses( + value = { + @ApiResponse( + responseCode = "200", + description = "메뉴 추가 완료", + useReturnTypeSchema = true + ) + } + ) + @Operation(summary = "메뉴 추가 완료 API", description = "메뉴 추가 완료 API 입니다.") + public ApplicationResponse addMenuInfo( + @PathVariable Long storeId, + @RequestPart(value = "dto") AddMenu addMenu, + @RequestPart(value = "file") MultipartFile multipartFile) { + + customerSaveUseCase.addMenuInfo(storeId, addMenu, multipartFile); + return ApplicationResponse.ok("메뉴 추가가 완료 되었습니다."); + } + } diff --git a/core-module/src/main/java/com/likelion/coremodule/menu/service/MenuQueryService.java b/core-module/src/main/java/com/likelion/coremodule/menu/service/MenuQueryService.java index d7c9f51..85719d4 100644 --- a/core-module/src/main/java/com/likelion/coremodule/menu/service/MenuQueryService.java +++ b/core-module/src/main/java/com/likelion/coremodule/menu/service/MenuQueryService.java @@ -19,6 +19,10 @@ public List findAllMenus() { return menuRepository.findAll(); } + public void saveMenu(Menu menu) { + menuRepository.save(menu); + } + public Menu findMenuById(Long menuId) { return menuRepository.findById(menuId).orElseThrow(() -> new MenuException(MenuErrorCode.NO_MENU_INFO)); } From ea101bdf363b65d9e62a193d95525f57cc6b3a01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=95=88=EC=A0=95=ED=9B=84?= Date: Mon, 5 Aug 2024 01:13:03 +0900 Subject: [PATCH 8/9] feat: order error fix --- .../payment/dto/request/ApprovalRequest.java | 2 +- .../payment/service/PaymentService.java | 19 ++++++++++++++++--- .../cart/service/CartQueryService.java | 6 ++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/api-module/src/main/java/com/likelion/apimodule/payment/dto/request/ApprovalRequest.java b/api-module/src/main/java/com/likelion/apimodule/payment/dto/request/ApprovalRequest.java index 866af1e..5a6703d 100644 --- a/api-module/src/main/java/com/likelion/apimodule/payment/dto/request/ApprovalRequest.java +++ b/api-module/src/main/java/com/likelion/apimodule/payment/dto/request/ApprovalRequest.java @@ -3,7 +3,7 @@ import java.util.List; public record ApprovalRequest( - List menuIds, + List cartIds, String orderNum, String paymentKey, Integer amount, diff --git a/api-module/src/main/java/com/likelion/apimodule/payment/service/PaymentService.java b/api-module/src/main/java/com/likelion/apimodule/payment/service/PaymentService.java index 7e5ebec..d84775a 100644 --- a/api-module/src/main/java/com/likelion/apimodule/payment/service/PaymentService.java +++ b/api-module/src/main/java/com/likelion/apimodule/payment/service/PaymentService.java @@ -2,6 +2,7 @@ import com.likelion.apimodule.payment.dto.request.ApprovalRequest; import com.likelion.apimodule.security.util.JwtUtil; +import com.likelion.coremodule.cart.service.CartQueryService; import com.likelion.coremodule.market.service.MarketQueryService; import com.likelion.coremodule.menu.domain.Menu; import com.likelion.coremodule.menu.service.MenuQueryService; @@ -20,6 +21,8 @@ import java.security.SecureRandom; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; @Slf4j @Service @@ -37,12 +40,22 @@ public class PaymentService { private static final String ALPHANUMERIC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; private static final SecureRandom random = new SecureRandom(); private final MenuQueryService menuQueryService; + private final CartQueryService cartQueryService; public void approval(String accessToken, ApprovalRequest request) { String email = jwtUtil.getEmail(accessToken); User user = userQueryService.findByEmail(email); - Store store = storeQueryService.findStoreById(request.menuIds().get(0)); + + List menuList = new ArrayList<>(); + for (Long id : request.cartIds()) { + Menu menu = menuQueryService.findMenuById(id); + menuList.add(menu); + + cartQueryService.deleteCartByUserIdAndCartId(user.getUserId(), id); + } + + Store store = storeQueryService.findStoreById(menuList.get(0).getId()); // 토스 페이 결제 승인 // TossPaymentResponse tossPaymentResponse = paymentClient.confirmPayment(request); @@ -55,9 +68,9 @@ public void approval(String accessToken, ApprovalRequest request) { visitHour(request.visitHour()).visitMin(request.visitMin()).build(); orderQueryService.saveOrder(order); - for (int i = 0; i < request.menuIds().size(); i++) { + for (Menu value : menuList) { - Long m = request.menuIds().get(i); + Long m = value.getId(); Menu menu = menuQueryService.findMenuById(m); final OrderItem orderItem = OrderItem.builder().order(order).menu(menu).quantity(request.amount()).build(); diff --git a/core-module/src/main/java/com/likelion/coremodule/cart/service/CartQueryService.java b/core-module/src/main/java/com/likelion/coremodule/cart/service/CartQueryService.java index a277d25..b585cb7 100644 --- a/core-module/src/main/java/com/likelion/coremodule/cart/service/CartQueryService.java +++ b/core-module/src/main/java/com/likelion/coremodule/cart/service/CartQueryService.java @@ -1,6 +1,8 @@ package com.likelion.coremodule.cart.service; import com.likelion.coremodule.cart.domain.Cart; +import com.likelion.coremodule.cart.exception.CartErrorCode; +import com.likelion.coremodule.cart.exception.CartException; import com.likelion.coremodule.cart.repository.CartRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -17,6 +19,10 @@ public void saveCart(Cart cart) { cartRepository.save(cart); } + public Cart findCartById(Long cartId) { + return cartRepository.findById(cartId).orElseThrow(() -> new CartException(CartErrorCode.NO_CART_INFO)); + } + public List findCartsByUserId(Long userId) { return cartRepository.findCartsByUserUserId(userId); } From e61235d35f406e554421c16ff6c94714446f500d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=95=88=EC=A0=95=ED=9B=84?= Date: Mon, 5 Aug 2024 01:36:13 +0900 Subject: [PATCH 9/9] fix: payment error --- .../apimodule/customer/presentation/CustomerController.java | 2 +- .../likelion/apimodule/payment/service/PaymentService.java | 4 +++- .../main/java/com/likelion/coremodule/cart/domain/Cart.java | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java b/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java index 23d51c0..109482d 100644 --- a/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java +++ b/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java @@ -88,7 +88,7 @@ public ApplicationResponse changeToPrepared( return ApplicationResponse.ok("주문을 준비 완료했습니다."); } - // 메뉴 추가 API (소연) + // 메뉴 추가 API @PostMapping("/{storeId}/addmenu") @ApiResponses( value = { diff --git a/api-module/src/main/java/com/likelion/apimodule/payment/service/PaymentService.java b/api-module/src/main/java/com/likelion/apimodule/payment/service/PaymentService.java index d84775a..036567c 100644 --- a/api-module/src/main/java/com/likelion/apimodule/payment/service/PaymentService.java +++ b/api-module/src/main/java/com/likelion/apimodule/payment/service/PaymentService.java @@ -2,6 +2,7 @@ import com.likelion.apimodule.payment.dto.request.ApprovalRequest; import com.likelion.apimodule.security.util.JwtUtil; +import com.likelion.coremodule.cart.domain.Cart; import com.likelion.coremodule.cart.service.CartQueryService; import com.likelion.coremodule.market.service.MarketQueryService; import com.likelion.coremodule.menu.domain.Menu; @@ -49,7 +50,8 @@ public void approval(String accessToken, ApprovalRequest request) { List menuList = new ArrayList<>(); for (Long id : request.cartIds()) { - Menu menu = menuQueryService.findMenuById(id); + Cart cart = cartQueryService.findCartById(id); + Menu menu = menuQueryService.findMenuById(cart.getMenu().getId()); menuList.add(menu); cartQueryService.deleteCartByUserIdAndCartId(user.getUserId(), id); diff --git a/core-module/src/main/java/com/likelion/coremodule/cart/domain/Cart.java b/core-module/src/main/java/com/likelion/coremodule/cart/domain/Cart.java index 2a838f9..459ace5 100644 --- a/core-module/src/main/java/com/likelion/coremodule/cart/domain/Cart.java +++ b/core-module/src/main/java/com/likelion/coremodule/cart/domain/Cart.java @@ -6,6 +6,8 @@ import jakarta.persistence.*; import lombok.*; +import java.util.List; + @Builder @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED)