-- OMS Admin schema -- Target database: MySQL 8.0+ -- Notes: -- 1. Physical foreign keys are intentionally omitted. The project uses logical foreign keys plus indexes to reduce import friction, -- avoid circular dependency issues, and better fit soft-delete based business flows. -- 2. The source spec references `t_sales_product_allocation_rule`, but no concrete table definition exists. The actual design stores -- allocation scheme on `t_sales_product` and provider rows on `t_sales_product_allocation_provider`. -- 3. `t_order` keeps SenderId/RecipientId/DeclarationId for compatibility with the original spec, while child tables also keep OrderId. SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; DROP TABLE IF EXISTS `t_warehouse_address`; DROP TABLE IF EXISTS `t_notice_read`; DROP TABLE IF EXISTS `t_notice`; DROP TABLE IF EXISTS `t_dict`; DROP TABLE IF EXISTS `t_country`; DROP TABLE IF EXISTS `t_recharge_record`; DROP TABLE IF EXISTS `t_customer`; DROP TABLE IF EXISTS `t_label_print_record`; DROP TABLE IF EXISTS `t_outbound_record`; DROP TABLE IF EXISTS `t_inbound_record`; DROP TABLE IF EXISTS `t_label_template`; DROP TABLE IF EXISTS `t_auto_trigger`; DROP TABLE IF EXISTS `t_weight_rounding_info`; DROP TABLE IF EXISTS `t_weight_rounding`; DROP TABLE IF EXISTS `t_weight_rule_info`; DROP TABLE IF EXISTS `t_weight_rule`; DROP TABLE IF EXISTS `t_kpi_area_info`; DROP TABLE IF EXISTS `t_kpi_area`; DROP TABLE IF EXISTS `t_service_channel_publish_record`; DROP TABLE IF EXISTS `t_service_channel_price_detail`; DROP TABLE IF EXISTS `t_service_channel_price_factor`; DROP TABLE IF EXISTS `t_service_channel_price`; DROP TABLE IF EXISTS `t_service_channel`; DROP TABLE IF EXISTS `t_service_channel_group`; DROP TABLE IF EXISTS `t_sales_product_publish_record`; DROP TABLE IF EXISTS `t_sales_product_allocation_provider`; DROP TABLE IF EXISTS `t_sales_product_price_detail`; DROP TABLE IF EXISTS `t_sales_product_price_factor`; DROP TABLE IF EXISTS `t_sales_product_price`; DROP TABLE IF EXISTS `t_sales_product`; DROP TABLE IF EXISTS `t_order_fee`; DROP TABLE IF EXISTS `t_order_weight`; DROP TABLE IF EXISTS `t_order_declaration`; DROP TABLE IF EXISTS `t_order_recipient`; DROP TABLE IF EXISTS `t_order_sender`; DROP TABLE IF EXISTS `t_order_task_fail`; DROP TABLE IF EXISTS `t_order_task`; DROP TABLE IF EXISTS `t_order_template`; DROP TABLE IF EXISTS `t_order`; CREATE TABLE `t_order` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `RequestId` VARCHAR(64) NULL COMMENT '请求幂等ID', `ServiceNo` VARCHAR(64) NOT NULL COMMENT '运单号', `ClientNo` VARCHAR(64) NULL COMMENT '客户单号', `TrackNo` VARCHAR(64) NULL COMMENT '跟踪号', `ProductCode` VARCHAR(128) NULL COMMENT '产品编码', `ChannelCode` VARCHAR(128) NULL COMMENT '渠道编码', `ConsigneeCountry` VARCHAR(8) NULL COMMENT '国家二字码', `CargoAttribute` VARCHAR(32) NULL COMMENT '货物属性:general/electronics/sensitive', `ExportCustomsMode` VARCHAR(32) NULL COMMENT '出口报关方式', `PredeclareFailReason` VARCHAR(512) NULL COMMENT '预报失败原因', `SalesProductRulesVersion` VARCHAR(64) NULL COMMENT '销售产品规则快照版本', `SalesProductPriceVersion` VARCHAR(64) NULL COMMENT '销售产品价格快照版本', `OrderStatus` VARCHAR(32) NOT NULL COMMENT '订单状态', `WarehouseId` INT NULL COMMENT '仓库ID', `CustomerId` INT NULL COMMENT '客户ID', `SenderId` INT NULL COMMENT '发件人ID', `RecipientId` INT NULL COMMENT '收件人ID', `DeclarationId` INT NULL COMMENT '申报信息ID', `ReceiveTime` DATETIME NULL COMMENT '收货时间', `ShipTime` DATETIME NULL COMMENT '发货时间', `PayTime` DATETIME NULL COMMENT '支付时间', `SignTime` DATETIME NULL COMMENT '签收时间', `IsCod` TINYINT NOT NULL DEFAULT 0 COMMENT '是否COD:0-否,1-是', `CodCurrency` VARCHAR(16) NULL COMMENT 'COD币种', `CodSum` DECIMAL(18,4) NULL COMMENT 'COD金额', `DeclaredCurrency` VARCHAR(16) NULL COMMENT '申报币种', `DeclaredSum` DECIMAL(18,4) NULL COMMENT '申报金额', `Quantity` INT NULL COMMENT '包裹数量', `IsIntercept` TINYINT NOT NULL DEFAULT 0 COMMENT '是否拦截:0-否,1-是', `IsRemote` 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`), UNIQUE KEY `uk_ord_service_no` (`ServiceNo`), UNIQUE KEY `uk_ord_request_id` (`RequestId`), KEY `idx_ord_customer_status_ctime` (`CustomerId`, `OrderStatus`, `CreateTime`), KEY `idx_ord_track_no` (`TrackNo`), KEY `idx_ord_client_no` (`ClientNo`), KEY `idx_ord_product_channel` (`ProductCode`, `ChannelCode`), KEY `idx_ord_warehouse_status` (`WarehouseId`, `OrderStatus`), KEY `idx_ord_sender` (`SenderId`), KEY `idx_ord_recipient` (`RecipientId`), KEY `idx_ord_declaration` (`DeclarationId`) ) COMMENT='订单表'; CREATE TABLE `t_order_template` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `Name` VARCHAR(64) NOT NULL COMMENT '模板名称', `Type` VARCHAR(16) NOT NULL COMMENT 'standard/custom', `TemplateKey` VARCHAR(64) NULL COMMENT '模板标识', `CustomerId` INT NULL COMMENT '客户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`), UNIQUE KEY `uk_ord_tpl_type_key` (`Type`, `TemplateKey`), KEY `idx_ord_tpl_customer_type` (`CustomerId`, `Type`) ) COMMENT='下单模板表'; CREATE TABLE `t_order_task` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `TaskName` VARCHAR(128) NOT NULL COMMENT '任务名称', `Quantity` INT NULL COMMENT '数量', `SuccessCount` INT NULL COMMENT '成功数', `FailCount` INT NULL COMMENT '失败数', `Status` VARCHAR(16) NOT NULL COMMENT '任务状态:processing/completed/pending', `TemplateId` INT NULL COMMENT '模板ID', `CustomerId` INT NULL COMMENT '客户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_ord_task_customer_status_ctime` (`CustomerId`, `Status`, `CreateTime`), KEY `idx_ord_task_template` (`TemplateId`) ) COMMENT='下单任务表'; CREATE TABLE `t_order_task_fail` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `TaskId` INT NOT NULL COMMENT '任务ID', `RowNumber` INT NOT NULL COMMENT 'Excel行号', `Reason` VARCHAR(512) NOT NULL COMMENT '失败原因', `RawDataJson` JSON NULL COMMENT '原始行数据', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_ord_task_fail_task` (`TaskId`), KEY `idx_ord_task_fail_row` (`TaskId`, `RowNumber`) ) COMMENT='下单任务失败明细表'; CREATE TABLE `t_order_sender` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `OrderId` INT NOT NULL COMMENT '订单ID', `SenderName` VARCHAR(50) NULL COMMENT '姓名', `Company` VARCHAR(255) NULL COMMENT '公司', `Country` INT NULL COMMENT '国家', `Province` VARCHAR(50) NULL COMMENT '州省', `City` VARCHAR(50) NULL COMMENT '城市', `ZipCode` VARCHAR(50) NULL COMMENT '邮编', `StreetAddress1` VARCHAR(500) NULL COMMENT '地址1', `StreetAddress2` VARCHAR(500) NULL COMMENT '地址2', `StreetAddress3` VARCHAR(500) NULL COMMENT '地址3', `HouseNumber` VARCHAR(50) NULL COMMENT '门牌号', `Phone` VARCHAR(50) NULL COMMENT '手机', `TelePhone` VARCHAR(50) NULL COMMENT '电话', `Email` VARCHAR(60) NULL COMMENT '邮箱', `IsDefault` TINYINT NOT NULL DEFAULT 0 COMMENT '是否默认:0-否,1-是', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_ord_sender_order` (`OrderId`), KEY `idx_ord_sender_phone` (`Phone`) ) COMMENT='订单发件人表'; CREATE TABLE `t_order_recipient` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `OrderId` INT NOT NULL COMMENT '订单ID', `RecipientsName` VARCHAR(30) NULL COMMENT '收件人名称', `CompanyName` VARCHAR(60) NULL COMMENT '收件人公司名称', `Country` INT NULL COMMENT '国家', `Phone` VARCHAR(20) NULL COMMENT '收件人手机', `TelePhone` VARCHAR(20) NULL COMMENT '收件人电话', `ZipCode` VARCHAR(15) NULL COMMENT '收件人邮编', `Province` VARCHAR(25) NULL COMMENT '收件人省/州', `City` VARCHAR(25) NULL COMMENT '收件人城市', `StreetNumber` VARCHAR(20) NULL COMMENT '收件人门牌号', `StreetAddress1` VARCHAR(255) NULL COMMENT '收件人地址1', `StreetAddress2` VARCHAR(255) NULL COMMENT '收件人地址2', `StreetAddress3` VARCHAR(255) NULL COMMENT '收件人地址3', `Email` VARCHAR(60) NULL COMMENT '收件人邮箱', `TaxType` INT NULL COMMENT '税号类型', `TaxNo` VARCHAR(35) NULL COMMENT '税号', `CertificateType` INT NULL COMMENT '证件类型', `CertificateNo` VARCHAR(30) NULL COMMENT '证件号码', `Eori` VARCHAR(255) NULL COMMENT 'EORI', `Vat` VARCHAR(255) NULL COMMENT 'Vat', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_ord_rec_order` (`OrderId`), KEY `idx_ord_rec_phone` (`Phone`), KEY `idx_ord_rec_zip` (`ZipCode`) ) COMMENT='订单收件人表'; CREATE TABLE `t_order_declaration` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `OrderId` INT NOT NULL COMMENT '订单ID', `CnName` VARCHAR(500) NULL COMMENT '品名-中文', `EnName` VARCHAR(500) NULL COMMENT '品名-英文', `Sku` VARCHAR(255) NULL COMMENT 'SKU', `Unit` VARCHAR(5) NULL COMMENT '单位', `UnitPrice` DECIMAL(10,2) NULL COMMENT '单价', `UnitWeight` DECIMAL(11,3) NULL COMMENT '单重', `Quantity` INT NULL COMMENT '数量', `Amount` DECIMAL(11,2) NULL COMMENT '总金额', `Weight` DECIMAL(11,3) NULL COMMENT '总重量', `HsCode` VARCHAR(50) NULL COMMENT 'HsCode', `ImHsCode` VARCHAR(50) NULL COMMENT '进口HsCode', `ExHsCode` VARCHAR(50) NULL COMMENT '出口HsCode', `SkuImage` VARCHAR(255) NULL COMMENT '图片', `Category` VARCHAR(20) NULL COMMENT '类别', `Brand` VARCHAR(50) NULL COMMENT '品牌', `BrandType` VARCHAR(50) NULL COMMENT '品牌类型', `IsMagnetic` TINYINT NOT NULL DEFAULT 0 COMMENT '是否带磁带电:0-否,1-是', `Distribution` VARCHAR(255) NULL COMMENT '配货信息', `Material` VARCHAR(50) NULL COMMENT '材质', `EnMaterial` VARCHAR(64) NULL COMMENT '英文材质', `Purpose` VARCHAR(50) NULL COMMENT '用途', `Attributes` VARCHAR(50) NULL COMMENT '属性', `OriginCountry` VARCHAR(50) NULL COMMENT '原产国', `SalesLink` VARCHAR(255) NULL COMMENT '销售链接', `Model` VARCHAR(64) NULL COMMENT '型号', `Specifications` VARCHAR(50) NULL COMMENT '规格', `Comment` VARCHAR(500) NULL COMMENT '备注', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_ord_decl_order` (`OrderId`), KEY `idx_ord_decl_sku` (`Sku`) ) COMMENT='订单申报信息表'; CREATE TABLE `t_order_weight` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `OrderId` INT NOT NULL COMMENT '订单ID', `Type` VARCHAR(16) NOT NULL COMMENT '类型:forecast/receive/ship/downstream', `Length` DECIMAL(10,2) NULL COMMENT '长(cm)', `Width` DECIMAL(10,2) NULL COMMENT '宽(cm)', `Height` DECIMAL(10,2) NULL COMMENT '高(cm)', `ActualWeight` DECIMAL(10,3) NULL COMMENT '实重(kg)', `VolumetricWeight` DECIMAL(10,3) NULL COMMENT '体积重(kg)', `ChargeableWeight` DECIMAL(10,3) NULL COMMENT '计费重(kg)', `Cubic` DECIMAL(12,6) NULL COMMENT '立方(m³)', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_ord_wgt_order_type` (`OrderId`, `Type`) ) COMMENT='订单件重尺表'; CREATE TABLE `t_order_fee` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `OrderId` INT NOT NULL COMMENT '订单ID', `Type` VARCHAR(16) NOT NULL COMMENT '类型:receivable/payable', `CostItem` VARCHAR(64) NOT NULL COMMENT '费用项', `Amount` DECIMAL(18,4) NOT NULL COMMENT '金额', `Currency` VARCHAR(16) NOT NULL COMMENT '币种:RMB/USD/EUR', `DownstreamProvider` VARCHAR(128) NULL COMMENT '下游服务商', `PriceNo` VARCHAR(64) NULL COMMENT '价格编号', `PriceEffectiveTime` DATETIME NULL COMMENT '价格编号生效时间', `ChargingStage` VARCHAR(16) NULL COMMENT '计费阶段:forecast/inbound/outbound', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_ord_fee_order_type` (`OrderId`, `Type`), KEY `idx_ord_fee_order_item` (`OrderId`, `CostItem`), KEY `idx_ord_fee_price_no` (`PriceNo`) ) COMMENT='订单费用表'; CREATE TABLE `t_sales_product` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `ProductCode` VARCHAR(64) NOT NULL COMMENT '产品编码', `ProductName` VARCHAR(128) NOT NULL COMMENT '产品名称', `ProductGroup` VARCHAR(32) NULL COMMENT '分组(专线/快递/邮政)', `MinTimeliness` INT NULL COMMENT '最小时效(天)', `MaxTimeliness` INT NULL COMMENT '最大时效(天)', `CustomerWaybill` VARCHAR(32) NULL COMMENT '系统面单/客户面单', `BlacklistAreaId` INT NULL COMMENT '黑名单区ID', `RemoteAreaId` INT NULL COMMENT '偏远分区ID', `PriceAreaId` INT NULL COMMENT '价格分区ID', `WeightRuleId` INT NULL COMMENT '计重规则ID', `WeightRoundingId` INT NULL COMMENT '计重进位ID', `ProductDescription` TEXT COMMENT '产品描述', `PreStorageScript` TEXT COMMENT '入库前脚本', `IsActive` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用', `Scheme` VARCHAR(32) NOT NULL COMMENT '排货方案:costLowest/timeFastest/overallBest', `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_sp_code` (`ProductCode`), KEY `idx_sp_group_active` (`ProductGroup`, `IsActive`), KEY `idx_sp_scheme` (`Scheme`), KEY `idx_sp_weight_rule` (`WeightRuleId`), KEY `idx_sp_weight_rounding` (`WeightRoundingId`) ) COMMENT='销售产品表'; CREATE TABLE `t_sales_product_price` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `SalesProductId` INT NOT NULL COMMENT '销售产品ID', `SerialNumber` INT NOT NULL COMMENT '序号', `Status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-启用', `PriceName` VARCHAR(64) NOT NULL COMMENT '价格名称', `CostItem` VARCHAR(64) NOT NULL COMMENT '费用项', `CostUnit` VARCHAR(16) NOT NULL COMMENT '费用单位:kg/票/件', `Currency` VARCHAR(16) NOT NULL COMMENT '币种:RMB/USD/EUR', `ChargingTime` VARCHAR(32) NULL COMMENT '收费时机:预报/出库/签收', `ChargingCondition` VARCHAR(64) NULL COMMENT '收费条件', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_spp_sp_serial` (`SalesProductId`, `SerialNumber`), KEY `idx_spp_sp_status` (`SalesProductId`, `Status`) ) COMMENT='产品卖价表'; CREATE TABLE `t_sales_product_price_factor` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `PriceId` INT NOT NULL COMMENT '产品卖价ID', `SerialNumber` INT NOT NULL COMMENT '序号(决定因素排序)', `Factor` VARCHAR(64) NOT NULL COMMENT '因素:货物类型/分区/重量/仓库/客户', `FactorValues` JSON NULL COMMENT '因素值数组', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_sppf_price_serial` (`PriceId`, `SerialNumber`) ) COMMENT='产品卖价计费因素表'; CREATE TABLE `t_sales_product_price_detail` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `PriceId` INT NOT NULL COMMENT '产品卖价ID', `FactorValuesJson` JSON NULL COMMENT '非客户因素组合', `CalculationFormula` VARCHAR(32) NOT NULL COMMENT '计算公式:总价/单价/续单价', `CalculatedValue` DECIMAL(18,4) NULL COMMENT '计算值', `CustomerGroupValues` JSON NULL COMMENT '客户组对应价格', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_sppd_price` (`PriceId`) ) COMMENT='产品卖价价格明细表'; CREATE TABLE `t_sales_product_allocation_provider` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `SalesProductId` INT NOT NULL COMMENT '销售产品ID', `SerialNumber` INT NOT NULL COMMENT '序号', `ProviderName` VARCHAR(128) NOT NULL COMMENT '服务商名称', `ServiceChannelId` INT NULL COMMENT '服务渠道ID', `Weight` INT NOT NULL COMMENT '权重(评分用)', `CustomerIds` JSON NULL COMMENT '指定客户ID数组,空表示全部', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_spap_sp_serial` (`SalesProductId`, `SerialNumber`), KEY `idx_spap_channel` (`ServiceChannelId`) ) COMMENT='排货规则服务商表'; CREATE TABLE `t_sales_product_publish_record` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `SalesProductId` INT NOT NULL COMMENT '销售产品ID', `Version` VARCHAR(32) NOT NULL COMMENT '版本号,如 20231227112339', `OperatorType` VARCHAR(16) NOT NULL COMMENT '操作类型:price/rules', `Status` VARCHAR(16) NOT NULL COMMENT '状态:生效/回滚/无效', `PublishUser` VARCHAR(64) NOT NULL COMMENT '发布人', `PublishTime` DATETIME NOT NULL COMMENT '发布时间', `Description` VARCHAR(512) NULL COMMENT '版本备注', `Content` JSON NULL COMMENT '发布内容JSON快照', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_sppr_prod_op_ver` (`SalesProductId`, `OperatorType`, `Version`), KEY `idx_sppr_prod_op_time` (`SalesProductId`, `OperatorType`, `PublishTime`) ) COMMENT='销售产品发布记录表'; CREATE TABLE `t_service_channel_group` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `Name` VARCHAR(128) NOT NULL COMMENT '渠道组名称', `AppId` INT NOT NULL COMMENT '应用ID', `ApiServiceProviderId` INT NOT NULL COMMENT 'API服务商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`), UNIQUE KEY `uk_scg_name` (`Name`), KEY `idx_scg_app_provider` (`AppId`, `ApiServiceProviderId`) ) COMMENT='服务渠道组表'; CREATE TABLE `t_service_channel` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `GroupId` INT NULL COMMENT '渠道组ID', `ChannelCode` VARCHAR(64) NOT NULL COMMENT '渠道编码', `ChannelName` VARCHAR(128) NOT NULL COMMENT '渠道名称', `MinTime` INT NULL COMMENT '最小时效(天)', `MaxTime` INT NULL COMMENT '最大时效(天)', `ForecastType` VARCHAR(32) NULL COMMENT '预报单号类型(customer/waybill/tracking)', `ForecastCode` VARCHAR(128) NULL COMMENT '预报单号', `Description` TEXT COMMENT '描述', `PreScript` TEXT COMMENT '入库前脚本', `IsActive` TINYINT NOT NULL DEFAULT 1 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_sc_code` (`ChannelCode`), KEY `idx_sc_group_active` (`GroupId`, `IsActive`), KEY `idx_sc_name` (`ChannelName`) ) COMMENT='服务渠道表'; CREATE TABLE `t_service_channel_price` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `ServiceChannelId` INT NOT NULL COMMENT '服务渠道ID', `SerialNumber` INT NOT NULL COMMENT '序号', `Status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-启用', `PriceName` VARCHAR(64) NOT NULL COMMENT '价格名称', `CostItem` VARCHAR(64) NOT NULL COMMENT '费用项', `CostUnit` VARCHAR(16) NOT NULL COMMENT '费用单位:kg/票/件', `Currency` VARCHAR(16) NOT NULL COMMENT '币种:RMB/USD/EUR', `ChargingTime` VARCHAR(32) NULL COMMENT '收费时机:预报/出库/签收', `ChargingCondition` VARCHAR(64) NULL COMMENT '收费条件', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_scp_sc_serial` (`ServiceChannelId`, `SerialNumber`), KEY `idx_scp_sc_status` (`ServiceChannelId`, `Status`) ) COMMENT='渠道买价表'; CREATE TABLE `t_service_channel_price_factor` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `PriceId` INT NOT NULL COMMENT '渠道买价ID', `SerialNumber` INT NOT NULL COMMENT '序号', `Factor` VARCHAR(64) NOT NULL COMMENT '因素:货物类型/分区/重量/仓库/客户', `FactorValues` JSON NULL COMMENT '因素值数组', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_scpf_price_serial` (`PriceId`, `SerialNumber`) ) COMMENT='渠道买价计费因素表'; CREATE TABLE `t_service_channel_price_detail` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `PriceId` INT NOT NULL COMMENT '渠道买价ID', `FactorValuesJson` JSON NULL COMMENT '非客户因素组合', `CalculationFormula` VARCHAR(32) NOT NULL COMMENT '计算公式:总价/单价/续单价', `CalculatedValue` DECIMAL(18,4) NULL COMMENT '计算值', `CustomerGroupValues` JSON NULL COMMENT '客户组对应价格', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_scpd_price` (`PriceId`) ) COMMENT='渠道买价价格明细表'; CREATE TABLE `t_service_channel_publish_record` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `ServiceChannelId` INT NOT NULL COMMENT '服务渠道ID', `Version` VARCHAR(32) NOT NULL COMMENT '版本号', `OperatorType` VARCHAR(16) NOT NULL COMMENT '操作类型:price/rules', `Status` VARCHAR(16) NOT NULL COMMENT '状态:生效/回滚/无效', `PublishUser` VARCHAR(64) NOT NULL COMMENT '发布人', `PublishTime` DATETIME NOT NULL COMMENT '发布时间', `Description` VARCHAR(512) NULL COMMENT '版本备注', `Content` JSON NULL COMMENT '发布内容JSON快照', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_scpr_chan_op_ver` (`ServiceChannelId`, `OperatorType`, `Version`), KEY `idx_scpr_chan_op_time` (`ServiceChannelId`, `OperatorType`, `PublishTime`) ) COMMENT='服务渠道发布记录表'; CREATE TABLE `t_kpi_area` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `AppKey` VARCHAR(64) NOT NULL COMMENT '应用标识', `AreaType` VARCHAR(32) NOT NULL COMMENT '类型:blacklist/remote/warning', `Name` VARCHAR(128) NOT NULL COMMENT '分区名称', `SystemName` VARCHAR(128) 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_kpi_area_app_type` (`AppKey`, `AreaType`), KEY `idx_kpi_area_name` (`Name`) ) COMMENT='分区表'; CREATE TABLE `t_kpi_area_info` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `AreaId` INT NOT NULL COMMENT '分区ID', `CountryCode` VARCHAR(8) NULL COMMENT '国家二字码', `CountryName` VARCHAR(64) NULL COMMENT '国家名称', `Province` VARCHAR(128) NULL COMMENT '省份', `City` VARCHAR(128) NULL COMMENT '城市', `LeftPostcode` VARCHAR(32) NULL COMMENT '左侧邮编', `RightPostcode` VARCHAR(32) NULL COMMENT '右侧邮编', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_kpi_info_area` (`AreaId`), KEY `idx_kpi_info_area_country` (`AreaId`, `CountryCode`) ) COMMENT='分区明细表'; CREATE TABLE `t_weight_rule` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `AppKey` VARCHAR(64) NOT NULL COMMENT '应用标识', `Name` VARCHAR(128) NOT 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_wr_app_name` (`AppKey`, `Name`) ) COMMENT='计重规则表'; CREATE TABLE `t_weight_rule_info` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `RuleId` INT NOT NULL COMMENT '计重规则ID', `Client` VARCHAR(128) NOT NULL COMMENT '客户/客户组', `Condition` VARCHAR(256) NOT NULL COMMENT '条件表达式', `BillableWeight` VARCHAR(64) NOT NULL COMMENT '计费重取值', `VolumetricFactor` VARCHAR(32) NOT NULL COMMENT '材积系数', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_wri_rule_client` (`RuleId`, `Client`) ) COMMENT='计重规则明细表'; CREATE TABLE `t_weight_rounding` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `AppKey` VARCHAR(64) NOT NULL COMMENT '应用标识', `Name` VARCHAR(128) NOT 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_wrd_app_name` (`AppKey`, `Name`) ) COMMENT='计重进位表'; CREATE TABLE `t_weight_rounding_info` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `RoundingId` INT NOT NULL COMMENT '计重进位ID', `StartValue` DECIMAL(18,4) NOT NULL COMMENT '起始值(kg)', `EndValue` DECIMAL(18,4) NOT NULL COMMENT '结束值(kg)', `Public` VARCHAR(32) NULL COMMENT '公共进位值', `CustomerGroup1` VARCHAR(32) NULL COMMENT '客户组1进位值', `CustomerGroup2` VARCHAR(32) NULL COMMENT '客户组2进位值', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `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_wrdi_round_range` (`RoundingId`, `StartValue`, `EndValue`) ) COMMENT='计重进位明细表'; CREATE TABLE `t_auto_trigger` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `Status` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用', `Operation` VARCHAR(32) NULL COMMENT '操作:拦截/警告/问题件', `TriggerTiming` VARCHAR(32) NULL COMMENT '触发时机:下单/入库/出库', `TriggerCondition` TEXT COMMENT '触发条件', `PromptMessage` VARCHAR(512) NULL COMMENT '提示信息', `Notifier` VARCHAR(128) 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_at_status_timing` (`Status`, `TriggerTiming`), KEY `idx_at_operation` (`Operation`) ) COMMENT='自动触发表'; CREATE TABLE `t_label_template` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `Name` VARCHAR(128) NOT NULL COMMENT '模板名称', `TemplateJson` JSON NULL COMMENT 'vg-print 模板 JSON', `TemplateType` VARCHAR(32) 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_lt_name_type` (`Name`, `TemplateType`) ) COMMENT='标签模板表'; CREATE TABLE `t_inbound_record` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `WaybillNo` VARCHAR(64) NOT NULL COMMENT '运单号', `Weight` DECIMAL(10,2) NULL COMMENT '实重(kg)', `Length` DECIMAL(10,2) NULL COMMENT '长(cm)', `Width` DECIMAL(10,2) NULL COMMENT '宽(cm)', `Height` DECIMAL(10,2) NULL COMMENT '高(cm)', `SalesProductId` INT NULL COMMENT '销售产品ID', `DestinationCountry` VARCHAR(8) NULL COMMENT '目的国', `WarehouseId` INT NULL COMMENT '仓库ID', `OperateTime` DATETIME NOT NULL COMMENT '操作时间', `OperatorId` INT NULL COMMENT '操作人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_inb_waybill_time` (`WaybillNo`, `OperateTime`), KEY `idx_inb_warehouse_time` (`WarehouseId`, `OperateTime`), KEY `idx_inb_product_time` (`SalesProductId`, `OperateTime`) ) COMMENT='入库记录表'; CREATE TABLE `t_outbound_record` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `WaybillNo` VARCHAR(64) NOT NULL COMMENT '运单号', `WarehouseId` INT NULL COMMENT '仓库ID', `OperateTime` DATETIME NOT NULL COMMENT '操作时间', `OperatorId` INT NULL COMMENT '操作人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_out_waybill_time` (`WaybillNo`, `OperateTime`), KEY `idx_out_warehouse_time` (`WarehouseId`, `OperateTime`) ) COMMENT='出库记录表'; CREATE TABLE `t_label_print_record` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `WaybillNo` VARCHAR(64) NOT NULL COMMENT '运单号', `CustomerOrderNo` VARCHAR(64) NULL COMMENT '客户单号', `TrackingNo` VARCHAR(64) NULL COMMENT '跟踪号', `OtherNumber` VARCHAR(64) NULL COMMENT '其他单号', `LabelTemplateId` INT NULL COMMENT '标签模板ID', `PrintSuccess` TINYINT NOT NULL DEFAULT 0 COMMENT '是否打印成功', `PrintTime` DATETIME NOT NULL COMMENT '打印时间', `OperatorId` INT NULL COMMENT '操作人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_lpr_waybill_time` (`WaybillNo`, `PrintTime`), KEY `idx_lpr_template` (`LabelTemplateId`), KEY `idx_lpr_operator_time` (`OperatorId`, `PrintTime`) ) COMMENT='标签打印记录表'; CREATE TABLE `t_customer` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `ParentCustomerId` INT NULL COMMENT '父客户ID,NULL表示主客户', `UserId` INT NOT NULL COMMENT '关联用户表自增userid', `CustomerCode` VARCHAR(32) NOT NULL COMMENT '客户编号,规则:前缀w+年份+序号', `CustomerName` VARCHAR(128) NOT NULL COMMENT '客户名称', `WechatAvatar` VARCHAR(255) NULL COMMENT '微信头像URL', `WechatNickname` VARCHAR(64) NULL COMMENT '微信昵称', `Email` VARCHAR(64) NULL COMMENT '邮箱,用于登录/找回密码', `Phone` VARCHAR(16) NOT NULL COMMENT '手机号,用于登录/验证', `Balance` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '账户余额', `TotalQuota` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '总额度', `UsedQuota` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '已用额度', `Status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-正常,2-冻结', `Remark` VARCHAR(512) NULL COMMENT '备注信息', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人(系统/管理员账号)', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', `Salesman` VARCHAR(32) NULL COMMENT '所属销售员账号', `CustomerService` VARCHAR(32) NULL COMMENT '所属客服账号', `CustomerGroup` TINYINT NULL COMMENT '客户分组:0-普通客户,1-VIP1,2-VIP2,3-VIP3,4-VIP4,5-VIP5', `LastLoginIp` VARCHAR(64) NULL COMMENT '最后在线IP', `LastLoginTime` DATETIME NULL COMMENT '最后在线时间', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳', `WechatOpenid` VARCHAR(64) NULL COMMENT '微信OpenID', `Password` VARCHAR(64) NOT NULL COMMENT '密码(MD5加密存储)', PRIMARY KEY (`Id`), UNIQUE KEY `uk_cus_code` (`CustomerCode`), UNIQUE KEY `uk_cus_user` (`UserId`), UNIQUE KEY `uk_cus_phone` (`Phone`), UNIQUE KEY `uk_cus_email` (`Email`), UNIQUE KEY `uk_cus_openid` (`WechatOpenid`), KEY `idx_cus_parent_status` (`ParentCustomerId`, `Status`), KEY `idx_cus_status_group` (`Status`, `CustomerGroup`), KEY `idx_cus_sales_service` (`Salesman`, `CustomerService`) ) COMMENT='客户表'; CREATE TABLE `t_recharge_record` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `CustomerId` INT NOT NULL COMMENT '客户ID(主账号/子账号关联主账号ID)', `SerialNumber` VARCHAR(64) NOT NULL COMMENT '流水号', `RechargeTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '充值提交时间', `PayType` TINYINT NOT NULL COMMENT '支付方式:1-微信,2-支付宝', `RechargeAmount` DECIMAL(18,2) NOT NULL COMMENT '充值金额,>=0.01', `RechargeScreenshot` VARCHAR(255) NULL COMMENT '充值截图URL', `RechargeStatus` TINYINT NOT NULL DEFAULT 0 COMMENT '充值状态:0-待审核,1-审核通过,2-审核驳回', `Remark` VARCHAR(512) NULL COMMENT '备注(客户/审核人填写)', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', `AuditTime` DATETIME NULL COMMENT '审核时间', `AuditBy` VARCHAR(32) NULL COMMENT '审核人(管理员账号)', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳', PRIMARY KEY (`Id`), UNIQUE KEY `uk_rr_serial` (`SerialNumber`), KEY `idx_rr_customer_status_time` (`CustomerId`, `RechargeStatus`, `RechargeTime`), KEY `idx_rr_audit_time` (`AuditTime`) ) COMMENT='充值记录表'; CREATE TABLE `t_country` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `ChineseName` VARCHAR(128) NOT NULL COMMENT '国家中文名', `EnglishName` VARCHAR(128) NOT NULL COMMENT '国家英文名', `CountryCode` VARCHAR(2) NOT NULL COMMENT 'ISO 3166-1 alpha-2 国家二字码', `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_country_code` (`CountryCode`), KEY `idx_country_name` (`EnglishName`, `ChineseName`) ) COMMENT='国家表'; CREATE TABLE `t_dict` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `DictType` VARCHAR(64) NOT NULL COMMENT '字典类型', `DictSort` INT NOT NULL DEFAULT 0 COMMENT '排序值', `DictCode` VARCHAR(64) NOT NULL COMMENT '字典编码', `DictName` VARCHAR(128) NOT 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_dict_type_code` (`DictType`, `DictCode`), KEY `idx_dict_type_sort` (`DictType`, `DictSort`, `Id`) ) COMMENT='系统字典表'; CREATE TABLE `t_notice` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `NoticeType` VARCHAR(16) NOT NULL COMMENT '通知类型:notice/message', `Title` VARCHAR(200) NOT NULL COMMENT '通知标题', `Content` TEXT NOT NULL COMMENT '通知内容', `IsPopup` TINYINT NOT NULL DEFAULT 0 COMMENT '是否弹窗:0-否,1-是', `ReceiverType` VARCHAR(16) NOT NULL COMMENT '接收对象:user/customer', `ReceiverIds` JSON NOT NULL COMMENT '接收对象ID列表(JSON数组)', `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_notice_type_receiver_time` (`NoticeType`, `ReceiverType`, `CreateTime`), KEY `idx_notice_title` (`Title`) ) COMMENT='公告通知表'; CREATE TABLE `t_notice_read` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `NoticeId` INT NOT NULL COMMENT '通知ID', `ReceiverType` VARCHAR(16) NOT NULL COMMENT '接收对象:user/customer', `ReceiverId` INT NOT NULL COMMENT '接收主体ID', `ReadTime` DATETIME NOT 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_notice_read_identity` (`NoticeId`, `ReceiverType`, `ReceiverId`), KEY `idx_notice_read_receiver` (`ReceiverType`, `ReceiverId`, `ReadTime`) ) COMMENT='通知已读明细表'; INSERT INTO `t_country` (`ChineseName`, `EnglishName`, `CountryCode`, `IsDeleted`, `CreateUserId`, `CreateTime`, `UpdateUserId`, `UpdateTime`) VALUES ('中国', 'China', 'CN', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('中国香港', 'Hong Kong SAR China', 'HK', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('中国澳门', 'Macao SAR China', 'MO', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('中国台湾', 'Taiwan', 'TW', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('美国', 'United States', 'US', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('加拿大', 'Canada', 'CA', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('英国', 'United Kingdom', 'GB', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('爱尔兰', 'Ireland', 'IE', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('德国', 'Germany', 'DE', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('法国', 'France', 'FR', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('意大利', 'Italy', 'IT', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('西班牙', 'Spain', 'ES', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('葡萄牙', 'Portugal', 'PT', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('荷兰', 'Netherlands', 'NL', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('比利时', 'Belgium', 'BE', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('卢森堡', 'Luxembourg', 'LU', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('瑞士', 'Switzerland', 'CH', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('奥地利', 'Austria', 'AT', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('瑞典', 'Sweden', 'SE', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('挪威', 'Norway', 'NO', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('芬兰', 'Finland', 'FI', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('丹麦', 'Denmark', 'DK', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('波兰', 'Poland', 'PL', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('捷克', 'Czechia', 'CZ', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('匈牙利', 'Hungary', 'HU', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('罗马尼亚', 'Romania', 'RO', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('俄罗斯', 'Russia', 'RU', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('乌克兰', 'Ukraine', 'UA', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('土耳其', 'Turkey', 'TR', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('希腊', 'Greece', 'GR', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('以色列', 'Israel', 'IL', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('阿联酋', 'United Arab Emirates', 'AE', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('沙特阿拉伯', 'Saudi Arabia', 'SA', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('日本', 'Japan', 'JP', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('韩国', 'South Korea', 'KR', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('新加坡', 'Singapore', 'SG', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('马来西亚', 'Malaysia', 'MY', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('泰国', 'Thailand', 'TH', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('越南', 'Vietnam', 'VN', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('印度尼西亚', 'Indonesia', 'ID', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('菲律宾', 'Philippines', 'PH', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('印度', 'India', 'IN', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('巴基斯坦', 'Pakistan', 'PK', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('孟加拉国', 'Bangladesh', 'BD', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('澳大利亚', 'Australia', 'AU', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('新西兰', 'New Zealand', 'NZ', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('南非', 'South Africa', 'ZA', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('尼日利亚', 'Nigeria', 'NG', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('肯尼亚', 'Kenya', 'KE', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('埃及', 'Egypt', 'EG', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('巴西', 'Brazil', 'BR', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('阿根廷', 'Argentina', 'AR', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('智利', 'Chile', 'CL', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('哥伦比亚', 'Colombia', 'CO', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('秘鲁', 'Peru', 'PE', 0, 0, CURRENT_TIMESTAMP, NULL, NULL), ('墨西哥', 'Mexico', 'MX', 0, 0, CURRENT_TIMESTAMP, NULL, NULL); CREATE TABLE `t_warehouse_address` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `WarehouseName` VARCHAR(128) NOT NULL COMMENT '仓库名称', `WarehouseType` VARCHAR(32) NOT NULL COMMENT 'main/transit/return/other', `Recipient` VARCHAR(64) NULL COMMENT '收件人', `ContactPhone` VARCHAR(32) NULL COMMENT '联系电话', `ShippingAddress` TEXT COMMENT '收货地址', `ServicePhone` VARCHAR(32) NULL COMMENT '客服电话', `ServiceWechat` VARCHAR(64) NULL COMMENT '客服微信', `ServiceWechatFiles` 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_wa_name` (`WarehouseName`), KEY `idx_wa_type` (`WarehouseType`) ) COMMENT='仓库地址表'; SET FOREIGN_KEY_CHECKS = 1;