优化
This commit is contained in:
+3
-3
@@ -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;
|
||||
|
||||
@@ -189,6 +189,7 @@ public class OrderRepository {
|
||||
QueryWrapper<OrderCargoEntity> wrapper = new QueryWrapper<OrderCargoEntity>()
|
||||
.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();
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ import java.util.stream.Collectors;
|
||||
public class UnifiedOrderQueryService {
|
||||
private static final Set<String> MAIN_STATUSES = Set.of(
|
||||
"PENDING_REVIEW", "WAIT_MEASURE", "INBOUNDED", "WAIT_SPLIT", "LOADING", "LOADED", "DELIVERED");
|
||||
private static final Set<String> REVIEW_STATUSES = Set.of("UNRECORDED", "PENDING", "APPROVED", "REJECTED");
|
||||
private static final List<OrderStatus> 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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user