From 3ecb8d7613eb1044a1900fbe30e94b54afee03bd Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Thu, 6 Aug 2026 15:36:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/InboundOrderRepositoryTest.java | 6 +++--- .../order/repository/OrderRepository.java | 1 + .../order/service/UnifiedOrderQueryService.java | 10 +++++++++- order/src/main/resources/openapi/order-v1.yaml | 2 +- .../service/UnifiedOrderQueryServiceTest.java | 17 ++++++++++++++++- 5 files changed, 30 insertions(+), 6 deletions(-) diff --git a/firstleg/src/test/java/com/baiyue/firstleg/repository/InboundOrderRepositoryTest.java b/firstleg/src/test/java/com/baiyue/firstleg/repository/InboundOrderRepositoryTest.java index c7523ba68..8fa57849c 100644 --- a/firstleg/src/test/java/com/baiyue/firstleg/repository/InboundOrderRepositoryTest.java +++ b/firstleg/src/test/java/com/baiyue/firstleg/repository/InboundOrderRepositoryTest.java @@ -23,6 +23,9 @@ import jakarta.annotation.Resource; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; +import java.time.LocalDate; +import java.util.List; + import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; @@ -30,9 +33,6 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.times; import static org.mockito.Mockito.when; -import java.time.LocalDate; -import java.util.List; - @SpringJUnitConfig(InboundOrderRepository.class) class InboundOrderRepositoryTest { @MockBean private InboundOrderMapper orders; diff --git a/order/src/main/java/com/baiyue/order/repository/OrderRepository.java b/order/src/main/java/com/baiyue/order/repository/OrderRepository.java index 95a58f973..c2d9b2eab 100644 --- a/order/src/main/java/com/baiyue/order/repository/OrderRepository.java +++ b/order/src/main/java/com/baiyue/order/repository/OrderRepository.java @@ -189,6 +189,7 @@ public class OrderRepository { QueryWrapper wrapper = new QueryWrapper() .select("DISTINCT order_id") .eq(tenantId != null, "tenant_id", tenantId) + .eq("deleted", 0) .like("sku_no", fbaCode); return cargoMapper.selectObjs(wrapper).stream().map(value -> ((Number) value).longValue()).toList(); } diff --git a/order/src/main/java/com/baiyue/order/service/UnifiedOrderQueryService.java b/order/src/main/java/com/baiyue/order/service/UnifiedOrderQueryService.java index d64df8f7c..e45b24dd9 100644 --- a/order/src/main/java/com/baiyue/order/service/UnifiedOrderQueryService.java +++ b/order/src/main/java/com/baiyue/order/service/UnifiedOrderQueryService.java @@ -31,6 +31,7 @@ import java.util.stream.Collectors; public class UnifiedOrderQueryService { private static final Set MAIN_STATUSES = Set.of( "PENDING_REVIEW", "WAIT_MEASURE", "INBOUNDED", "WAIT_SPLIT", "LOADING", "LOADED", "DELIVERED"); + private static final Set REVIEW_STATUSES = Set.of("UNRECORDED", "PENDING", "APPROVED", "REJECTED"); private static final List ACTIVE_ORDER_STATUSES = List.copyOf(EnumSet.of( OrderStatus.SUBMITTED, OrderStatus.APPROVED, OrderStatus.ACCEPTED, OrderStatus.PROCESSING, OrderStatus.COMPLETED)); @@ -201,10 +202,17 @@ public class UnifiedOrderQueryService { throw new BizException(ResultCode.BAD_REQUEST, "订单内部状态不合法"); } } + if (StringUtils.hasText(query.feeReviewStatus()) && !REVIEW_STATUSES.contains(query.feeReviewStatus())) { + throw new BizException(ResultCode.BAD_REQUEST, "费用审核状态不合法"); + } + if (StringUtils.hasText(query.measurementReviewStatus()) + && !REVIEW_STATUSES.contains(query.measurementReviewStatus())) { + throw new BizException(ResultCode.BAD_REQUEST, "测量审核状态不合法"); + } } private boolean requiresFirstlegQuery(UnifiedOrderQuery query) { - return StringUtils.hasText(query.mainStatus()) && !"PENDING_REVIEW".equals(query.mainStatus()) + return (StringUtils.hasText(query.mainStatus()) && !"PENDING_REVIEW".equals(query.mainStatus())) || StringUtils.hasText(query.inboundCode()) || query.expectedArrivalDate() != null || StringUtils.hasText(query.feeReviewStatus()) || StringUtils.hasText(query.containerNo()) || StringUtils.hasText(query.cabinetNo()) || query.sailingDate() != null || query.loaded() != null diff --git a/order/src/main/resources/openapi/order-v1.yaml b/order/src/main/resources/openapi/order-v1.yaml index 8042d7a4e..8587de123 100644 --- a/order/src/main/resources/openapi/order-v1.yaml +++ b/order/src/main/resources/openapi/order-v1.yaml @@ -2,7 +2,7 @@ openapi: 3.0.3 info: title: 柏悦头程订单 API description: 业务成功和失败均使用 HTTP 200;仅响应体 code 为字符串 "200" 时表示成功,其他 code 表示失败。 - version: 1.2.0 + version: 1.3.0 security: - bearerAuth: [] paths: diff --git a/order/src/test/java/com/baiyue/order/service/UnifiedOrderQueryServiceTest.java b/order/src/test/java/com/baiyue/order/service/UnifiedOrderQueryServiceTest.java index d57a14cc1..246bcec01 100644 --- a/order/src/test/java/com/baiyue/order/service/UnifiedOrderQueryServiceTest.java +++ b/order/src/test/java/com/baiyue/order/service/UnifiedOrderQueryServiceTest.java @@ -2,6 +2,7 @@ package com.baiyue.order.service; import com.baiyue.common.core.api.ApiResponse; import com.baiyue.common.core.api.PageResult; +import com.baiyue.common.core.exception.BizException; import com.baiyue.order.client.FirstlegUnifiedOrderClient; import com.baiyue.order.dto.UnifiedOrderQuery; import com.baiyue.order.entity.OrderEntity; @@ -14,11 +15,12 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; -import java.time.LocalDateTime; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.never; @@ -99,6 +101,19 @@ class UnifiedOrderQueryServiceTest { }); } + @Test + void rejectsUnknownReviewStatusesBeforeQueryingEitherService() { + UnifiedOrderQuery query = new UnifiedOrderQuery( + null, null, null, null, null, null, null, null, + null, "UNKNOWN", null, null, null, null, null, null, "INVALID", null, + null, null, 1, 20); + + assertThatThrownBy(() -> service.page(10001L, query)) + .isInstanceOf(BizException.class); + verify(orders, never()).unifiedPage(any(), any(), any()); + verify(firstleg, never()).page(any(), any()); + } + private UnifiedOrderQuery query(String status) { return new UnifiedOrderQuery(null, null, status, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,