fix: bind overseas receiving to shared warehouse

This commit is contained in:
2026-08-24 21:46:19 +08:00
parent 3607bebbfd
commit 8cc4c6f6da
61 changed files with 774 additions and 118 deletions
@@ -4,8 +4,11 @@ import com.baiyue.lastleg.inventory.entity.InventoryBalance;
import com.baiyue.lastleg.inventory.entity.InventoryLedger;
import com.baiyue.lastleg.inventory.entity.InventoryOperation;
import com.baiyue.lastleg.inventory.entity.InventoryPosition;
import com.baiyue.lastleg.inventory.query.dto.InventoryQueryRequests;
import com.baiyue.lastleg.inventory.query.mapper.InventoryQueryMapper;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import org.apache.ibatis.annotations.Select;
import org.junit.jupiter.api.Test;
import java.io.IOException;
@@ -69,6 +72,16 @@ class InventorySchemaContractTest {
}
}
@Test
void positionQuerySqlReferencesOnlyFieldsExposedByThePositionQueryDto() throws NoSuchMethodException {
Select select = InventoryQueryMapper.class.getMethod("positions", String.class, long.class,
InventoryQueryRequests.PositionQuery.class).getAnnotation(Select.class);
String sql = String.join(" ", select.value());
assertFalse(sql.contains("q.skuCode"));
assertFalse(sql.contains("q.warehouseLocationCode"));
assertFalse(sql.contains("sku_code"));
}
@Test
void incrementalMigrationIsAdditiveAndRerunnable() throws IOException {
String migration = Files.readString(Path.of("..", "scripts", "db", "incremental.sql"), StandardCharsets.UTF_8)
@@ -22,19 +22,25 @@ class InventoryQueryControllerTest {
@Test
void platformBalancePageQueriesAllCustomers() {
controller.balances(user(0L, "PLATFORM"), query);
controller.balances(user(0L, "PLATFORM"), null, query);
verify(service).balances(eq(null), eq(query));
}
@Test
void platformBalancePageUsesExplicitCustomerScope() {
controller.balances(user(0L, "PLATFORM"), " 10001 ", query);
verify(service).balances(eq("10001"), eq(query));
}
@Test
void merchantCannotUsePlatformInventoryController() {
assertThrows(ResponseStatusException.class,
() -> controller.summary(user(100L, "MERCHANT"), query));
() -> controller.summary(user(100L, "MERCHANT"), null, query));
}
@Test
void platformSummaryQueriesAllCustomers() {
controller.summary(user(0L, "PLATFORM"), query);
controller.summary(user(0L, "PLATFORM"), null, query);
verify(service).dashboard(eq(null), eq(query));
}
@@ -43,7 +49,7 @@ class InventoryQueryControllerTest {
InventoryQueryRequests.PositionQuery positionQuery =
new InventoryQueryRequests.PositionQuery(null, null, null);
assertThrows(ResponseStatusException.class,
() -> controller.positions(null, 1L, positionQuery));
() -> controller.positions(null, 1L, null, positionQuery));
}
private static AuthenticatedUser user(long customerId, String appCode) {