From 4895c4f73874560fca8bd0ed32cf7f83f869a13d Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Mon, 7 Sep 2026 19:59:31 +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 --- .../DeliveryTransferController.java | 4 +-- .../delivery/dto/DeliveryRequests.java | 5 --- .../service/DeliveryTransferService.java | 3 +- .../PlatformDispatchOutboundContractTest.java | 35 +++++++++++++++++-- .../service/DeliveryTransferServiceTest.java | 6 ++-- 5 files changed, 37 insertions(+), 16 deletions(-) diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/controller/DeliveryTransferController.java b/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/controller/DeliveryTransferController.java index 838bf0905..d690de932 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/controller/DeliveryTransferController.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/controller/DeliveryTransferController.java @@ -55,9 +55,9 @@ public class DeliveryTransferController { @PreAuthorize("hasAuthority('" + OverseasPermissions.OUTBOUND_LIST + "')") public ApiResponse outboundDetail( @AuthenticationPrincipal AuthenticatedUser user, - @PathVariable String outboundNo, @Valid DeliveryRequests.PalletQuery query) { + @PathVariable String outboundNo) { requirePlatform(user); - return ApiResponse.success(service.outboundDetail(outboundNo, query)); + return ApiResponse.success(service.outboundDetail(outboundNo)); } @PostMapping("/outbound-orders/{outboundNo}/cancel") diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/dto/DeliveryRequests.java b/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/dto/DeliveryRequests.java index 5b78e009d..5716aaafd 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/dto/DeliveryRequests.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/dto/DeliveryRequests.java @@ -43,11 +43,6 @@ public final class DeliveryRequests { public Query { if (page == 0) page = 1; if (size == 0) size = 20; } } - public record PalletQuery(@Min(1) long page, @Min(1) @Max(200) long size, - String destinationWarehouseCode) { - public PalletQuery { if (page == 0) page = 1; if (size == 0) size = 20; } - } - public record OneClickOutbound(@NotBlank @Size(max=1000) String recipient, @NotNull @Size(min=1, max=200) List<@Valid OneClickItem> items, @Size(max=1000) String remark, diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/service/DeliveryTransferService.java b/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/service/DeliveryTransferService.java index 8dfbc5587..976899c5b 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/service/DeliveryTransferService.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/service/DeliveryTransferService.java @@ -476,8 +476,7 @@ public class DeliveryTransferService { return page(page, page.getRecords().stream().map(this::outboundRow).toList()); } - public DeliveryResponses.OutboundDetail outboundDetail(String outboundNo, - DeliveryRequests.PalletQuery query) { + public DeliveryResponses.OutboundDetail outboundDetail(String outboundNo) { OutboundOrder outbound = outboundOrders.findGlobalByNo(trim(outboundNo)); if (outbound == null) throw notFound("Outbound order not found"); String customerId = outbound.getCustomerId(); diff --git a/lastleg-service/src/test/java/com/baiyue/lastleg/delivery/PlatformDispatchOutboundContractTest.java b/lastleg-service/src/test/java/com/baiyue/lastleg/delivery/PlatformDispatchOutboundContractTest.java index 963d52f15..798549ed2 100644 --- a/lastleg-service/src/test/java/com/baiyue/lastleg/delivery/PlatformDispatchOutboundContractTest.java +++ b/lastleg-service/src/test/java/com/baiyue/lastleg/delivery/PlatformDispatchOutboundContractTest.java @@ -11,6 +11,12 @@ import com.baiyue.lastleg.security.OverseasPermissions; import org.apache.ibatis.annotations.Select; import org.junit.jupiter.api.Test; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.web.method.annotation.AuthenticationPrincipalArgumentResolver; +import org.springframework.test.util.ReflectionTestUtils; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.server.ResponseStatusException; @@ -25,8 +31,31 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.mock; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; class PlatformDispatchOutboundContractTest { + @Test + void outboundDetailAcceptsTheDocumentUrlWithoutPagingParameters() throws Exception { + DeliveryTransferController controller = new DeliveryTransferController(); + ReflectionTestUtils.setField(controller, "service", + mock(com.baiyue.lastleg.delivery.service.DeliveryTransferService.class)); + MockMvc mockMvc = MockMvcBuilders.standaloneSetup(controller) + .setCustomArgumentResolvers(new AuthenticationPrincipalArgumentResolver()) + .build(); + AuthenticatedUser platform = new AuthenticatedUser(1000001L, 0L, 0L, 1L, "platform_admin", + "PLATFORM", "WEB", Set.of(OverseasPermissions.OUTBOUND_LIST)); + SecurityContextHolder.getContext().setAuthentication( + new UsernamePasswordAuthenticationToken(platform, null, Set.of())); + try { + mockMvc.perform(get("/api/platform/v1/last-leg/outbound-orders/OB-WH-20260907-030529")) + .andExpect(status().isOk()); + } finally { + SecurityContextHolder.clearContext(); + } + } + @Test void platformActionsHaveIndependentPermissionsAndNoCustomerParameter() throws Exception { Method update = DispatchController.class.getMethod("update", AuthenticatedUser.class, @@ -35,7 +64,7 @@ class PlatformDispatchOutboundContractTest { Method transfer = DeliveryTransferController.class.getMethod("transfer", AuthenticatedUser.class, String.class, DeliveryRequests.Transfer.class); Method outboundDetail = DeliveryTransferController.class.getMethod("outboundDetail", - AuthenticatedUser.class, String.class, DeliveryRequests.PalletQuery.class); + AuthenticatedUser.class, String.class); Method outboundCancel = DeliveryTransferController.class.getMethod("cancelOutbound", AuthenticatedUser.class, String.class, DeliveryRequests.Cancel.class); @@ -43,6 +72,7 @@ class PlatformDispatchOutboundContractTest { assertPermission(cancel, OverseasPermissions.DISPATCH_CANCEL); assertPermission(transfer, OverseasPermissions.DISPATCH_TRANSFER_DELIVERY); assertPermission(outboundDetail, OverseasPermissions.OUTBOUND_LIST); + assertEquals(2, outboundDetail.getParameterCount()); assertPermission(outboundCancel, OverseasPermissions.OUTBOUND_CANCEL); for (Method method : Set.of(update, cancel, transfer, outboundDetail, outboundCancel)) { assertTrue(Arrays.stream(method.getParameters()) @@ -91,8 +121,7 @@ class PlatformDispatchOutboundContractTest { () -> dispatchController.cancel(merchant, "DSP-101")); ResponseStatusException outboundRejected = org.junit.jupiter.api.Assertions.assertThrows( ResponseStatusException.class, - () -> deliveryController.outboundDetail(merchant, "OUT-101", - new DeliveryRequests.PalletQuery(1, 20, null))); + () -> deliveryController.outboundDetail(merchant, "OUT-101")); assertEquals(403, dispatchRejected.getStatusCode().value()); assertEquals(403, outboundRejected.getStatusCode().value()); diff --git a/lastleg-service/src/test/java/com/baiyue/lastleg/delivery/service/DeliveryTransferServiceTest.java b/lastleg-service/src/test/java/com/baiyue/lastleg/delivery/service/DeliveryTransferServiceTest.java index 062bf7bb8..9b914dce4 100644 --- a/lastleg-service/src/test/java/com/baiyue/lastleg/delivery/service/DeliveryTransferServiceTest.java +++ b/lastleg-service/src/test/java/com/baiyue/lastleg/delivery/service/DeliveryTransferServiceTest.java @@ -276,8 +276,7 @@ class DeliveryTransferServiceTest { when(outboundOrders.findGlobalByNo("OUT-301")).thenReturn(outbound); when(deliveryOrders.lockByOutbound("TENANT-A", 301L)).thenReturn(delivery); - DeliveryResponses.OutboundDetail detail = service.outboundDetail("OUT-301", - new DeliveryRequests.PalletQuery(1, 20, null)); + DeliveryResponses.OutboundDetail detail = service.outboundDetail("OUT-301"); assertEquals("OUT-301", detail.outbound().outboundNo()); assertEquals("DEL-401", detail.delivery().deliveryNo()); @@ -293,8 +292,7 @@ class DeliveryTransferServiceTest { when(outboundOrders.findGlobalByNo("OUT-301")).thenReturn(outbound); when(deliveryOrders.lockByOutbound("TENANT-A", 301L)).thenReturn(delivery); - DeliveryResponses.OutboundDetail detail = service.outboundDetail("OUT-301", - new DeliveryRequests.PalletQuery(1, 20, null)); + DeliveryResponses.OutboundDetail detail = service.outboundDetail("OUT-301"); assertEquals("OUT-301", detail.outbound().outboundNo()); verify(deliveryOrders).lockByOutbound("TENANT-A", 301L);