From 4771a008116cd1127e45be4ffc8124d311dce3c3 Mon Sep 17 00:00:00 2001 From: HongGit Date: Tue, 14 Jan 2025 14:30:06 +0900 Subject: [PATCH] =?UTF-8?q?[FEAT]=20=EC=A3=BC=EB=AC=B8=20=EA=B2=80?= =?UTF-8?q?=EC=83=89=20=ED=95=84=ED=84=B0=EB=A7=81=20=EB=B3=B4=EB=82=B4?= =?UTF-8?q?=EB=8A=94=EB=B6=84,=20=EB=B0=9B=EB=8A=94=EB=B6=84,=20=EC=A3=BC?= =?UTF-8?q?=EB=AC=B8=EB=B2=88=ED=98=B8=20=ED=95=84=ED=84=B0=EB=A7=81=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 --- .../api/controller/OrdersController.java | 10 +++++++-- .../repository/OrdersCustomRepository.java | 4 +++- .../api/repository/OrdersRepositoryImpl.java | 22 +++++++++++++++---- .../server/api/service/OrdersService.java | 9 +++++--- 4 files changed, 35 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/rootandfruit/server/api/controller/OrdersController.java b/src/main/java/com/rootandfruit/server/api/controller/OrdersController.java index 1c251a9..b5ee10f 100644 --- a/src/main/java/com/rootandfruit/server/api/controller/OrdersController.java +++ b/src/main/java/com/rootandfruit/server/api/controller/OrdersController.java @@ -95,7 +95,10 @@ public ResponseEntity searchFieldPositionByCursor( @RequestParam(required = false) final LocalDate deliveryDate, @RequestParam(required = false) final String productName, @RequestParam(required = false) final String deliveryStatus, - @RequestParam(required = false) Long cursorOrderId + @RequestParam(required = false) Long cursorOrderId, + @RequestParam(required = false) final String senderName, + @RequestParam(required = false) final String recipientName, + @RequestParam(required = false) final Integer orderNumber ) { return ResponseEntity.ok(ordersService.searchOrderByCursor( @@ -103,7 +106,10 @@ public ResponseEntity searchFieldPositionByCursor( deliveryDate, productName, deliveryStatus, - cursorOrderId + cursorOrderId, + senderName, + recipientName, + orderNumber )); } } diff --git a/src/main/java/com/rootandfruit/server/api/repository/OrdersCustomRepository.java b/src/main/java/com/rootandfruit/server/api/repository/OrdersCustomRepository.java index 83daf20..0a03d04 100644 --- a/src/main/java/com/rootandfruit/server/api/repository/OrdersCustomRepository.java +++ b/src/main/java/com/rootandfruit/server/api/repository/OrdersCustomRepository.java @@ -2,6 +2,7 @@ import com.rootandfruit.server.api.domain.DeliveryStatus; import com.rootandfruit.server.api.domain.Orders; +import jakarta.persistence.criteria.CriteriaBuilder.In; import java.time.LocalDate; import java.util.List; @@ -10,5 +11,6 @@ List searchOrders(LocalDate orderReceivedDate, LocalDate deliveryDate, S DeliveryStatus deliveryStatus); List searchOrdersWithCursor(LocalDate orderReceivedDate, LocalDate deliveryDate, String productName, - DeliveryStatus deliveryStatus, Long cursorOrderId); + DeliveryStatus deliveryStatus, Long cursorOrderId, String senderName, + String recipientName, Integer orderNumber); } diff --git a/src/main/java/com/rootandfruit/server/api/repository/OrdersRepositoryImpl.java b/src/main/java/com/rootandfruit/server/api/repository/OrdersRepositoryImpl.java index ec8e6f5..f4f551e 100644 --- a/src/main/java/com/rootandfruit/server/api/repository/OrdersRepositoryImpl.java +++ b/src/main/java/com/rootandfruit/server/api/repository/OrdersRepositoryImpl.java @@ -42,7 +42,8 @@ public List searchOrders(LocalDate orderReceivedDate, LocalDate delivery @Override public List searchOrdersWithCursor(LocalDate orderReceivedDate, LocalDate deliveryDate, String productName, - DeliveryStatus deliveryStatus, Long cursorOrderId) { + DeliveryStatus deliveryStatus, Long cursorOrderId, String senderName, + String recipientName, Integer orderNumber) { int limit = 50; JPAQuery query = queryFactory .selectFrom(orders) @@ -55,15 +56,28 @@ public List searchOrdersWithCursor(LocalDate orderReceivedDate, LocalDat ltDeliveryDate(deliveryDate), eqProductName(productName), eqDeliveryStatus(deliveryStatus), - cursorCondition(cursorOrderId) // 커서 조건 + cursorCondition(cursorOrderId), + eqSenderName(senderName), + eqRecipientName(recipientName), + eqOrderNumber(orderNumber) ) .orderBy(orders.id.desc()) .limit(limit); - System.out.println("========================"); - System.out.println(query.toString()); return query.fetch(); } + private BooleanExpression eqSenderName(String senderName) { + return senderName != null ? QDeliveryInfo.deliveryInfo.senderName.eq(senderName) : null; + } + + private BooleanExpression eqRecipientName(String recipientName) { + return recipientName != null ? QDeliveryInfo.deliveryInfo.recipientName.eq(recipientName) : null; + } + + private BooleanExpression eqOrderNumber(Integer orderNumber) { + return orderNumber != null ? orders.orderNumber.eq(orderNumber) : null; + } + private BooleanExpression cursorCondition(Long cursorOrderId) { return cursorOrderId != null ? orders.id.lt(cursorOrderId) : null; } diff --git a/src/main/java/com/rootandfruit/server/api/service/OrdersService.java b/src/main/java/com/rootandfruit/server/api/service/OrdersService.java index de107a9..5e5339f 100644 --- a/src/main/java/com/rootandfruit/server/api/service/OrdersService.java +++ b/src/main/java/com/rootandfruit/server/api/service/OrdersService.java @@ -210,15 +210,18 @@ public void patchNote(NoteRequestDto noteRequestDto) { } @Transactional(readOnly = true) - public OrderCursorResponseDto searchOrderByCursor(LocalDate orderReceivedDate, LocalDate deliveryDate, String productName, - String deliveryStatus, Long cursorOrderId) { + public OrderCursorResponseDto searchOrderByCursor(LocalDate orderReceivedDate, LocalDate deliveryDate, + String productName, + String deliveryStatus, Long cursorOrderId, String senderName, + String recipientName, Integer orderNumber) { DeliveryStatus status = null; if (deliveryStatus != null) { status = DeliveryStatus.fromString(deliveryStatus); } // 주문 목록 조회 - List orderList = ordersRepository.searchOrdersWithCursor(orderReceivedDate, deliveryDate, productName, status, cursorOrderId); + List orderList = ordersRepository.searchOrdersWithCursor(orderReceivedDate, deliveryDate, productName, + status, cursorOrderId, senderName, recipientName, orderNumber); // 배송 정보별로 주문을 그룹화 Map> ordersByDeliveryInfo = orderList.stream()