-- 仓储模块 + 店铺订单表结构(v0.3) -- 设计文档:E:\oms0414\docs\仓储模块设计方案.md -- 仓储表前缀:C_ ;店铺表前缀:t_sales_ -- 幂等:CREATE TABLE IF NOT EXISTS -- --------------------------------------------------------------------------- -- 仓储域(C_*) -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `C_sku` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '客户ID → t_customer.Id', `SkuCode` VARCHAR(64) NOT NULL COMMENT '库内SKU编码', `SkuName` VARCHAR(256) NOT NULL COMMENT 'SKU名称', `SkuImageUrl` VARCHAR(512) NULL COMMENT '图片URL', `WeightG` DECIMAL(10,2) NULL COMMENT '重量(g)', `LengthCm` DECIMAL(10,2) NULL COMMENT '长(cm)', `WidthCm` DECIMAL(10,2) NULL COMMENT '宽(cm)', `HeightCm` DECIMAL(10,2) NULL COMMENT '高(cm)', `Remark` VARCHAR(512) NULL COMMENT '备注', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`Id`), UNIQUE KEY `uk_c_sku_code` (`CustomerId`, `SkuCode`), KEY `idx_c_sku_customer` (`CustomerId`, `IsDeleted`) ) COMMENT='仓储-SKU主数据'; CREATE TABLE IF NOT EXISTS `C_bin_location` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `WarehouseId` INT NOT NULL COMMENT '仓库ID → t_warehouse_address.Id', `BinCode` VARCHAR(32) NOT NULL COMMENT '库位编码', `BinName` VARCHAR(64) NULL COMMENT '库位展示名', `ZoneCode` VARCHAR(32) NULL COMMENT '库区编码', `IsEnabled` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用:0-否,1-是', `Remark` VARCHAR(512) NULL COMMENT '备注', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`Id`), UNIQUE KEY `uk_c_bin_wh_code` (`WarehouseId`, `BinCode`), KEY `idx_c_bin_warehouse` (`WarehouseId`, `IsEnabled`) ) COMMENT='仓储-库位主数据'; CREATE TABLE IF NOT EXISTS `C_inventory` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '客户ID', `WarehouseId` INT NOT NULL COMMENT '仓库ID', `SkuId` INT NOT NULL COMMENT 'SKU ID → C_sku.Id', `BinLocationId` INT NOT NULL COMMENT '库位ID → C_bin_location.Id', `Qty` INT NOT NULL DEFAULT 0 COMMENT '可用库存数量', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`Id`), UNIQUE KEY `uk_c_inventory` (`CustomerId`, `WarehouseId`, `SkuId`, `BinLocationId`), KEY `idx_c_inv_sku_wh` (`CustomerId`, `SkuId`, `WarehouseId`) ) COMMENT='仓储-库存余额(按库位)'; CREATE TABLE IF NOT EXISTS `C_inbound_notice` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '客户ID', `WarehouseId` INT NOT NULL COMMENT '仓库ID', `NoticeNo` VARCHAR(32) NOT NULL COMMENT '入库单号 IN+雪花', `MarkReference` VARCHAR(64) NULL COMMENT '唛头参考号', `InboundType` VARCHAR(16) NOT NULL DEFAULT 'normal' COMMENT 'normal/return', `ReceiptStatus` VARCHAR(16) NOT NULL DEFAULT 'forecasted' COMMENT 'forecasted/received/completed', `ExpectedArrivalTime` DATETIME NULL COMMENT '预计到货时间', `ActualArrivalTime` DATETIME NULL COMMENT '实际到货时间', `Remark` VARCHAR(512) NULL COMMENT '备注', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`Id`), UNIQUE KEY `uk_c_inbound_notice_no` (`NoticeNo`), KEY `idx_c_inbound_customer_status` (`CustomerId`, `ReceiptStatus`, `CreateTime`) ) COMMENT='仓储-入库预报主表'; CREATE TABLE IF NOT EXISTS `C_inbound_box` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `InboundNoticeId` INT NOT NULL COMMENT '入库预报ID → C_inbound_notice.Id', `BoxSeqNo` VARCHAR(16) NOT NULL COMMENT '箱序号', `MarkBoxNo` VARCHAR(64) NULL COMMENT '箱唛号/箱号', `WeightG` DECIMAL(10,2) NULL COMMENT '箱重(g)', `LengthCm` DECIMAL(10,2) NULL COMMENT '长(cm)', `WidthCm` DECIMAL(10,2) NULL COMMENT '宽(cm)', `HeightCm` DECIMAL(10,2) NULL COMMENT '高(cm)', `IsReceived` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已收货:0-否,1-是', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`Id`), KEY `idx_c_inbound_box_notice` (`InboundNoticeId`, `IsDeleted`) ) COMMENT='仓储-入库预报箱'; CREATE TABLE IF NOT EXISTS `C_inbound_box_line` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `InboundBoxId` INT NOT NULL COMMENT '入库箱ID → C_inbound_box.Id', `SkuId` INT NOT NULL COMMENT 'SKU ID → C_sku.Id', `SkuCode` VARCHAR(64) NOT NULL COMMENT '冗余SKU编码', `PlannedQty` INT NOT NULL DEFAULT 0 COMMENT '计划入库数量', `ReceivedQty` INT NULL COMMENT '实收数量', `BinLocationId` INT NULL COMMENT '上架库位ID → C_bin_location.Id', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`Id`), KEY `idx_c_inbound_box_line_box` (`InboundBoxId`, `IsDeleted`), KEY `idx_c_inbound_box_line_sku` (`SkuId`) ) COMMENT='仓储-入库箱内SKU行'; CREATE TABLE IF NOT EXISTS `C_parcel` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '客户ID', `WarehouseId` INT NOT NULL COMMENT '仓库ID', `TrackingNo` VARCHAR(64) NOT NULL COMMENT '快递单号', `CarrierName` VARCHAR(64) NULL COMMENT '快递公司', `LifecycleStatus` VARCHAR(16) NOT NULL DEFAULT 'inTransit' COMMENT 'inTransit/arrived/stored', `ArrivalTime` DATETIME NULL COMMENT '到仓时间', `Remark` VARCHAR(512) NULL COMMENT '备注', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`Id`), UNIQUE KEY `uk_c_parcel_tracking` (`CustomerId`, `TrackingNo`, `WarehouseId`), KEY `idx_c_parcel_status` (`CustomerId`, `LifecycleStatus`) ) COMMENT='仓储-客户包裹'; CREATE TABLE IF NOT EXISTS `C_parcel_item` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `ParcelId` INT NOT NULL COMMENT '包裹ID → C_parcel.Id', `ProductName` VARCHAR(512) NULL COMMENT '商品名称', `Quantity` INT NOT NULL DEFAULT 0 COMMENT '数量', `SkuId` INT NULL COMMENT '库内SKU ID → C_sku.Id', `SkuCode` VARCHAR(64) NULL COMMENT '冗余SKU编码', `BinLocationId` INT NULL COMMENT '上架库位ID', `Remark` VARCHAR(512) NULL COMMENT '备注', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`Id`), KEY `idx_c_parcel_item_parcel` (`ParcelId`, `IsDeleted`) ) COMMENT='仓储-包裹明细'; CREATE TABLE IF NOT EXISTS `C_sku_platform_map` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '客户ID', `StoreId` INT NOT NULL COMMENT '店铺ID → t_sales_store.Id', `PlatformSku` VARCHAR(128) NOT NULL COMMENT '平台listing SKU', `SkuId` INT NOT NULL COMMENT '库内SKU ID → C_sku.Id', `SkuCode` VARCHAR(64) NOT NULL COMMENT '冗余SKU编码', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`Id`), UNIQUE KEY `uk_c_sku_map` (`StoreId`, `PlatformSku`), KEY `idx_c_sku_map_customer` (`CustomerId`, `SkuId`) ) COMMENT='仓储-平台SKU映射'; -- --------------------------------------------------------------------------- -- 订单域 — 店铺(t_sales_*,接口阶段使用) -- --------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `t_sales_store` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '客户ID', `PlatformCode` VARCHAR(32) NOT NULL COMMENT 'lazada/shopee/tiktok/temu/manual', `StoreNickname` VARCHAR(128) NOT NULL COMMENT '店铺昵称', `PlatformStoreId` VARCHAR(64) NULL COMMENT '平台侧店铺ID', `PlatformAccount` VARCHAR(128) NULL COMMENT '平台账号', `SiteCountry` VARCHAR(8) NULL COMMENT '开户站点国家码', `SellerId` VARCHAR(64) NULL COMMENT '平台卖家ID', `AuthStatus` VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT 'active/expired/revoked', `AuthTime` DATETIME NULL COMMENT '授权时间', `TokenExpireTime` DATETIME NULL COMMENT 'AccessToken过期时间', `RefreshExpireTime` DATETIME NULL COMMENT 'RefreshToken过期时间', `AccessToken` VARCHAR(2048) NULL COMMENT 'AccessToken(加密存储)', `RefreshToken` VARCHAR(2048) NULL COMMENT 'RefreshToken(加密存储)', `TokenExtraJson` JSON NULL COMMENT '平台扩展Token信息', `IsAutoFulfill` TINYINT NOT NULL DEFAULT 0 COMMENT '是否自动发货:0-否,1-是', `Remark` VARCHAR(512) NULL COMMENT '备注', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`Id`), KEY `idx_sales_store_customer` (`CustomerId`, `IsDeleted`), KEY `idx_sales_store_platform` (`CustomerId`, `PlatformCode`, `AuthStatus`) ) COMMENT='销售店铺授权'; CREATE TABLE IF NOT EXISTS `t_sales_store_order` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '客户ID', `StoreId` INT NOT NULL COMMENT '店铺ID → t_sales_store.Id', `PlatformCode` VARCHAR(32) NOT NULL COMMENT '平台编码', `PlatformOrderNo` VARCHAR(64) NOT NULL COMMENT '平台订单号', `OrderCountry` VARCHAR(8) NULL COMMENT '订单国家', `ItemCount` INT NULL COMMENT '商品行数', `TotalAmount` DECIMAL(18,4) NULL COMMENT '订单总额', `Currency` VARCHAR(8) NULL COMMENT '币种', `PlatformOrderTime` DATETIME NULL COMMENT '平台下单时间', `FulfillStatus` VARCHAR(32) NOT NULL DEFAULT 'pending' COMMENT '履约状态', `PlatformStatus` VARCHAR(64) NULL COMMENT '平台原始状态码', `PlatformStatusLabel` VARCHAR(128) NULL COMMENT '平台状态展示文案', `ShippingLabelNo` VARCHAR(64) NULL COMMENT '面单号', `ShippingLabelUrl` VARCHAR(512) NULL COMMENT '面单URL', `IsMultiLabel` TINYINT NOT NULL DEFAULT 0 COMMENT '是否多面单', `CustomTags` VARCHAR(512) NULL COMMENT '自定义标签', `IsSuspended` TINYINT NOT NULL DEFAULT 0 COMMENT '是否搁置', `WarehouseId` INT NULL COMMENT '发货仓库ID', `LinkedOrderId` INT NULL COMMENT '关联小包订单 t_order.Id', `LastSyncTime` DATETIME NULL COMMENT '最近同步时间', `PlatformExtraJson` JSON NULL COMMENT '平台扩展字段', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`Id`), UNIQUE KEY `uk_store_order_no` (`StoreId`, `PlatformOrderNo`), KEY `idx_store_order_customer_status` (`CustomerId`, `FulfillStatus`, `PlatformOrderTime`) ) COMMENT='销售店铺订单'; CREATE TABLE IF NOT EXISTS `t_sales_store_order_line` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `StoreOrderId` INT NOT NULL COMMENT '店铺订单ID → t_sales_store_order.Id', `PlatformLineId` VARCHAR(64) NULL COMMENT '平台行ID', `PlatformSku` VARCHAR(128) NULL COMMENT '平台SKU', `ProductName` VARCHAR(512) NULL COMMENT '商品名称', `ProductImageUrl` VARCHAR(512) NULL COMMENT '商品图片', `VariantText` VARCHAR(256) NULL COMMENT '规格属性', `UnitPrice` DECIMAL(18,4) NULL COMMENT '单价', `Quantity` INT NOT NULL DEFAULT 0 COMMENT '数量', `Currency` VARCHAR(8) NULL COMMENT '币种', `IsShipExcluded` TINYINT NOT NULL DEFAULT 0 COMMENT '是否拒绝发货', `MappedSkuId` INT NULL COMMENT '映射库内SKU → C_sku.Id', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`Id`), KEY `idx_store_order_line_order` (`StoreOrderId`, `IsDeleted`) ) COMMENT='销售店铺订单明细';