-- 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. -- 4. Incremental `sql/migrate_*.sql` scripts are retired; this file is the single source of truth for OMS DDL. -- 5. Data-permission tables (`user_org_perm` etc.) live here when RBAC and OMS share one MySQL database. SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; DROP TABLE IF EXISTS `data_perm_access_log`; DROP TABLE IF EXISTS `data_perm_change_log`; DROP TABLE IF EXISTS `data_perm_template_item`; DROP TABLE IF EXISTS `data_perm_template`; DROP TABLE IF EXISTS `data_perm_field_mask`; DROP TABLE IF EXISTS `data_resource`; DROP TABLE IF EXISTS `user_filter_rule`; DROP TABLE IF EXISTS `role_filter_rule`; DROP TABLE IF EXISTS `user_secret_perm`; DROP TABLE IF EXISTS `role_secret_perm`; DROP TABLE IF EXISTS `user_biz_perm`; DROP TABLE IF EXISTS `role_biz_perm`; DROP TABLE IF EXISTS `user_data_scope`; DROP TABLE IF EXISTS `role_data_scope`; DROP TABLE IF EXISTS `role_org_perm`; DROP TABLE IF EXISTS `user_org_perm`; DROP TABLE IF EXISTS `t_xhs_media`; DROP TABLE IF EXISTS `t_kb_article`; DROP TABLE IF EXISTS `t_kb_category`; DROP TABLE IF EXISTS `t_mcp_tool`; DROP TABLE IF EXISTS `t_pickup_order_line`; DROP TABLE IF EXISTS `t_pickup_order`; DROP TABLE IF EXISTS `t_ai_skill`; DROP TABLE IF EXISTS `t_ai_provider`; DROP TABLE IF EXISTS `t_xhs_ai_provider`; DROP TABLE IF EXISTS `t_xhs_human_config`; DROP TABLE IF EXISTS `t_xhs_skill`; DROP TABLE IF EXISTS `t_xhs_analysis_session`; DROP TABLE IF EXISTS `t_xhs_publish_record`; DROP TABLE IF EXISTS `t_xhs_task`; DROP TABLE IF EXISTS `t_xhs_agent`; DROP TABLE IF EXISTS `c_inbound_box_line`; DROP TABLE IF EXISTS `c_inbound_box`; DROP TABLE IF EXISTS `c_inbound_notice`; DROP TABLE IF EXISTS `c_parcel_item`; DROP TABLE IF EXISTS `c_parcel_arrival`; DROP TABLE IF EXISTS `c_parcel`; DROP TABLE IF EXISTS `c_inventory`; DROP TABLE IF EXISTS `c_sku_platform_map`; DROP TABLE IF EXISTS `c_sku`; DROP TABLE IF EXISTS `c_bin_location`; DROP TABLE IF EXISTS `t_sales_store_order_line`; DROP TABLE IF EXISTS `t_sales_store_order`; DROP TABLE IF EXISTS `t_sales_store`; DROP TABLE IF EXISTS `t_customer_account_flow`; DROP TABLE IF EXISTS `t_system_batch_email_record`; DROP TABLE IF EXISTS `t_system_batch_email_account`; DROP TABLE IF EXISTS `t_system_batch_email_template`; DROP TABLE IF EXISTS `t_system_other_config`; 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_employee`; DROP TABLE IF EXISTS `t_dict_type`; 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_issue_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_batch_job_item`; DROP TABLE IF EXISTS `t_order_batch_job`; DROP TABLE IF EXISTS `t_order_template`; DROP TABLE IF EXISTS `t_order_exception_event`; 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 '跟踪号', `DownstreamServiceNo` VARCHAR(64) NULL COMMENT '服务商单号(下游 createOrderOne Data.serviceNo)', `ProductCode` VARCHAR(128) NULL COMMENT '产品编码', `ChannelCode` VARCHAR(128) NULL COMMENT '渠道编码', `DownstreamSupplierCode` VARCHAR(64) NULL COMMENT '下游 API 服务商编码 supplierCode', `DownstreamAppKey` VARCHAR(128) NULL COMMENT '下游 itfx 应用 AppKey', `DownstreamAppId` INT NULL COMMENT '下游 itfx 应用 Id', `ChannelForecastCode` VARCHAR(128) NULL COMMENT '渠道预报编码 ForecastCode', `ConsigneeCountry` VARCHAR(8) NULL COMMENT '国家二字码', `ConsigneeCountryName` VARCHAR(64) NULL COMMENT '国家中文名称', `CargoAttribute` VARCHAR(32) NULL COMMENT '货物属性:general/electronics/sensitive', `ExportCustomsMode` VARCHAR(32) NULL COMMENT '出口报关方式', `PredeclareFailReason` VARCHAR(512) NULL COMMENT '预报失败原因', `AllocationPendingReason` VARCHAR(512) NULL COMMENT '待排货原因(排货或渠道买价未匹配)', `AllocationScheme` VARCHAR(32) NULL COMMENT '最近一次排货方案 costLowest/timeFastest/overallBest/designated', `AllocationTraceJson` JSON NULL COMMENT '最近一次排货过程快照 JSON', `AllocationTraceTime` DATETIME NULL COMMENT '排货快照写入时间', `SalesProductRulesVersion` VARCHAR(64) NULL COMMENT '销售产品规则快照版本', `SalesProductPriceVersion` VARCHAR(64) NULL COMMENT '销售产品价格快照版本', `OrderStatus` VARCHAR(32) NOT NULL COMMENT '订单状态', `HandleStatus` VARCHAR(16) NULL COMMENT '处理子状态:pending/processed', `IssueType` VARCHAR(32) NULL COMMENT '问题类型', `IssueTitle` VARCHAR(128) NULL COMMENT '问题标题', `IssueContent` TEXT NULL COMMENT '问题内容', `IssueTemplateId` INT NULL COMMENT '问题模板Id', `IssueRemark` VARCHAR(512) NULL COMMENT '问题备注', `IssueTime` DATETIME NULL COMMENT '标记问题件时间', `ClaimType` VARCHAR(32) NULL COMMENT '理赔类型', `ClaimAmount` DECIMAL(18,4) NULL COMMENT '索赔金额', `ClaimCurrency` VARCHAR(16) NULL COMMENT '索赔币种', `ClaimReason` VARCHAR(512) NULL COMMENT '理赔原因', `ClaimTime` DATETIME NULL COMMENT '创建理赔件时间', `PreviousOrderStatus` VARCHAR(32) NULL COMMENT '进入异常状态前的订单状态', `WarehouseId` INT NULL COMMENT '仓库ID', `CustomerId` INT NULL COMMENT '客户ID', `MemberLevelId` INT NULL COMMENT '下单时会员等级Id快照', `PriceTierKey` VARCHAR(64) NULL COMMENT '下单时价区键快照', `ReceivableSubtotal` DECIMAL(18,4) NULL COMMENT '应收小计(折扣前)', `ForecastReceivableAmount` DECIMAL(18,4) NULL COMMENT '预报应收快照(创建预报后固化,入库不覆盖)', `ForecastPayableAmount` DECIMAL(18,4) NULL COMMENT '预报应付快照(创建预报后固化,入库不覆盖)', `LevelDiscountAmount` DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '会员等级折扣金额', `CouponInstanceId` INT NULL COMMENT '使用的优惠券实例Id', `CouponDiscountAmount` DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '优惠券抵扣金额', `PayableAmount` DECIMAL(18,4) NULL COMMENT '应付金额(对客应收)', `OrderSource` VARCHAR(32) NULL COMMENT '订单来源:manual/pickup/upload/batch/platform', `PickupTime` DATETIME NULL COMMENT '预约揽收时间', `CustomerSenderAddressId` INT NULL COMMENT '发件地址簿 Id', `InboundMethod` VARCHAR(16) NULL COMMENT '到仓方式 selfShip/doorPickup', `PickupOrderId` INT NULL COMMENT '关联揽收单Id(冗余)', `OrganizationId` CHAR(36) NULL COMMENT '数据归属组织', `SecretLevel` TINYINT NOT NULL DEFAULT 2 COMMENT '数据密级 1-4', `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 '支付时间', `IsPaid` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已支付:0-否,1-是', `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-是', `AdditionalServices` VARCHAR(512) NULL COMMENT '客户勾选附加服务字典code JSON数组', `FulfillmentType` VARCHAR(16) NULL DEFAULT 'direct' COMMENT '履约类型 direct/warehouse', `FulfillmentSource` VARCHAR(32) NULL COMMENT '代发来源 storeFulfill/postBind', `LabelTemplateId` 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_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`), KEY `idx_ord_org_secret_ctime` (`OrganizationId`, `SecretLevel`, `CreateTime`), KEY `idx_ord_source_ctime` (`OrderSource`, `CreateTime`), KEY `idx_order_pickup` (`PickupOrderId`), KEY `idx_order_inbound_method` (`InboundMethod`), KEY `idx_ord_fulfillment_customer` (`FulfillmentType`, `CustomerId`, `OrderStatus`) ) COMMENT='订单表'; -- 存量库升级脚本见:sql/migrate_t_order_fulfillment_type.sql(勿复制带 ... 的示例) CREATE TABLE `t_order_file` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增', `OrderId` INT NOT NULL COMMENT '订单Id', `FileType` VARCHAR(32) NOT NULL COMMENT '附件类型:tradeProof交易证明/systemLabel系统面单/downstreamLabel下游面单/lastMileLabel末端面单/infraredImage红外图片', `FileName` VARCHAR(255) NULL COMMENT '原始文件名', `FileUrl` VARCHAR(512) NOT NULL COMMENT '文件地址(相对路径或外链)', `ContentType` VARCHAR(128) NULL COMMENT '文件MIME类型', `FileSize` BIGINT NULL COMMENT '文件大小(字节)', `Sort` INT NOT NULL DEFAULT 0 COMMENT '同类型内排序', `Source` VARCHAR(32) NOT NULL DEFAULT 'upload' COMMENT '来源:upload上传/systemGenerate系统生成/downstream下游回传/migrate迁移', `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_ord_file_order_type` (`OrderId`, `FileType`, `IsDeleted`) ) COMMENT='订单附件表'; CREATE TABLE `t_customer_sender_address` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '归属客户 t_customer.Id', `AddressType` VARCHAR(16) NOT NULL DEFAULT 'sender' COMMENT '地址类型:sender发件/return退件/receiver收件', `AddressName` VARCHAR(64) NULL COMMENT '地址别名', `SenderName` VARCHAR(50) NOT NULL COMMENT '联系人姓名', `Company` VARCHAR(255) NULL COMMENT '公司', `Country` INT NULL COMMENT '国家 t_country.Id', `Province` VARCHAR(50) NULL COMMENT '州省', `City` VARCHAR(50) NULL COMMENT '城市', `ZipCode` VARCHAR(50) NULL COMMENT '邮编', `StreetAddress1` VARCHAR(500) NOT 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-是', `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_csa_customer` (`CustomerId`, `IsDeleted`, `Id`), KEY `idx_csa_customer_type` (`CustomerId`, `AddressType`, `IsDeleted`, `Id`), KEY `idx_csa_customer_default` (`CustomerId`, `AddressType`, `IsDefault`) ) 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_batch_job` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `Action` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '批量操作类型:pay/pre-declare/intercept/parcel-create 等', `Status` VARCHAR(32) NOT NULL DEFAULT 'pending' COMMENT '任务状态:pending/running/completed/failed/cancelled', `Total` INT NOT NULL DEFAULT 0 COMMENT '子项总数', `SuccessCount` INT NOT NULL DEFAULT 0 COMMENT '成功数', `FailCount` INT NOT NULL DEFAULT 0 COMMENT '失败数', `CustomerId` INT NULL COMMENT '客户ID', `PayloadJson` JSON NULL COMMENT '任务级扩展参数(JSON)', `RequestId` VARCHAR(64) NULL COMMENT '请求幂等ID', `StartedAt` DATETIME NULL COMMENT '开始执行时间', `FinishedAt` DATETIME 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 COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`Id`), KEY `idx_order_batch_job_request` (`RequestId`), KEY `idx_order_batch_job_status` (`Status`) ) COMMENT='订单批量异步任务表'; CREATE TABLE `t_order_batch_job_item` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `JobId` INT NOT NULL COMMENT '批量任务ID', `OrderId` INT NOT NULL COMMENT '订单ID', `ServiceNo` VARCHAR(64) NULL COMMENT '运单号', `ClientNo` VARCHAR(64) NULL COMMENT '客户单号', `Action` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '子项操作类型,通常与任务 Action 一致', `Status` VARCHAR(32) NOT NULL DEFAULT 'pending' COMMENT '子项状态:pending/running/success/failed/cancelled', `MessageId` VARCHAR(128) NULL COMMENT 'RabbitMQ 消息ID,用于幂等与去重', `FailReason` TEXT NULL COMMENT '失败原因', `PayloadJson` TEXT NULL COMMENT '子项入参快照(JSON)', `ResultJson` TEXT NULL COMMENT '子项执行结果快照(JSON)', `RetryCount` INT NOT NULL DEFAULT 0 COMMENT '系统重试次数', `StartedAt` DATETIME NULL COMMENT '开始执行时间', `FinishedAt` DATETIME 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 COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`Id`), UNIQUE KEY `uk_order_batch_job_item_message` (`MessageId`), KEY `idx_order_batch_job_item_job` (`JobId`), KEY `idx_order_batch_job_item_order` (`OrderId`) ) 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_order_exception_event` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `OrderId` INT NOT NULL COMMENT '订单Id', `EventType` VARCHAR(32) NOT NULL COMMENT 'mark_problematic/mark_claimed/handle_processed', `FromStatus` VARCHAR(32) NULL COMMENT '变更前OrderStatus', `ToStatus` VARCHAR(32) NULL COMMENT '变更后OrderStatus', `FromHandleStatus` VARCHAR(16) NULL COMMENT '变更前HandleStatus', `ToHandleStatus` VARCHAR(16) NULL COMMENT '变更后HandleStatus', `IssueType` VARCHAR(32) NULL COMMENT '问题类型', `Title` VARCHAR(128) NULL COMMENT '标题快照', `Content` TEXT NULL COMMENT '内容快照', `IssueTemplateId` INT NULL COMMENT '模板Id', `NotifyMethod` VARCHAR(64) NULL COMMENT '通知方式快照', `HandlerNames` VARCHAR(256) NULL COMMENT '处理人快照', `HandlerType` VARCHAR(16) NULL COMMENT '处理人类型', `HandlerUserId` INT NULL COMMENT '处理人用户Id(customer 时为订单客户账号)', `ClaimType` VARCHAR(32) NULL COMMENT '理赔类型', `ClaimAmount` DECIMAL(18,4) NULL COMMENT '索赔金额', `ClaimCurrency` VARCHAR(16) NULL COMMENT '索赔币种', `ClaimReason` VARCHAR(512) 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`), KEY `idx_oee_order_time` (`OrderId`, `CreateTime`) ) 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 '最大时效(天)', `TradeTerms` VARCHAR(16) NULL COMMENT '贸易条款:DDP/DDU', `AdditionalServices` VARCHAR(512) NULL COMMENT '可选附加服务字典code JSON数组', `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 '入库前脚本', `CustomerGuideMarkdown` MEDIUMTEXT COMMENT '对客说明 Markdown', `IsActive` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用', `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 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用', `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', `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` TINYINT NOT NULL DEFAULT 1 COMMENT 'EsSnapshotStatus:0=None未设置,1=Active生效,2=Inactive失效', `PublishUser` VARCHAR(64) NOT NULL COMMENT '发布人', `PublishTime` DATETIME NOT NULL COMMENT '发布时间', `Description` VARCHAR(512) NULL COMMENT '版本备注', `AiAnalysisReport` MEDIUMTEXT NULL COMMENT '价格发布AI风险分析报告', `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 '描述', `RemoteAreaId` INT NULL COMMENT '偏远分区KPI AreaId', `PreScript` TEXT COMMENT '入库前脚本', `IsActive` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用', `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 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用', `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', `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` TINYINT NOT NULL DEFAULT 1 COMMENT 'EsSnapshotStatus:0=None未设置,1=Active生效,2=Inactive失效', `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 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用', `RuleName` VARCHAR(128) NULL COMMENT '规则名称', `Priority` INT NOT NULL DEFAULT 100 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_issue_template` ( `Id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `OrganizationId` CHAR(36) NULL COMMENT '归属组织 GUID;NULL=平台通用', `IssueType` VARCHAR(32) NOT NULL COMMENT '问题类型 code', `Title` VARCHAR(128) NOT NULL COMMENT '问题标题', `Content` TEXT NOT NULL COMMENT '问题内容', `NotifyMethod` VARCHAR(64) NOT NULL COMMENT '通知方式,逗号分隔', `HandlerType` VARCHAR(16) NULL COMMENT '处理人类型:customer=订单所属客户 user=指定用户', `HandlerUserId` INT NULL COMMENT '指定处理人用户Id(HandlerType=user 时必填)', `Status` TINYINT NOT NULL DEFAULT 2 COMMENT 'EnableStatus:0=None未设置,1=Disabled禁用,2=Enabled启用', `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_issue_tpl_org_type` (`OrganizationId`, `IssueType`, `IsDeleted`), KEY `idx_issue_tpl_status` (`Status`, `IsDeleted`) ) 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 '运单号', `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 '目的国', `ServiceChannelId` INT NULL COMMENT '服务渠道ID', `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`), KEY `idx_out_product_time` (`SalesProductId`, `OperateTime`), KEY `idx_out_channel_time` (`ServiceChannelId`, `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) NULL COMMENT '手机号,用于联系;可空,唯一(NULL 可多条)', `MemberLevelId` INT NULL COMMENT '会员等级Id', `PriceTierKey` VARCHAR(64) NULL COMMENT '价区键(卖价 CustomerGroupValues JSON 键)', `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 2 COMMENT 'CustomerStatus:0=None未设置,1=Disabled禁用,2=Normal正常,3=Frozen冻结', `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 'CustomerGroup:0=None未设置,1=Normal普通,2=Vip1…6=Vip5', `OrganizationId` CHAR(36) NULL COMMENT '归属销售组织 FK organization.Id', `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`), KEY `idx_cus_organization` (`OrganizationId`) ) COMMENT='客户表'; CREATE TABLE `t_recharge_record` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `CustomerId` INT NOT NULL COMMENT '客户ID(主账号/子账号关联主账号ID)', `SecretLevel` TINYINT NOT NULL DEFAULT 3 COMMENT '数据密级 1-4', `SerialNumber` VARCHAR(64) NOT NULL COMMENT '流水号', `RechargeTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '充值提交时间', `PayType` TINYINT NOT NULL COMMENT 'PayType:0=None未设置,1=Wechat微信,2=Alipay支付宝', `RechargeAmount` DECIMAL(18,2) NOT NULL COMMENT '充值金额,>=0.01', `RechargeScreenshot` VARCHAR(255) NULL COMMENT '充值截图URL', `RechargeStatus` TINYINT NOT NULL DEFAULT 1 COMMENT 'RechargeStatus:0=None未设置,1=Pending待审核,2=Approved通过,3=Rejected驳回', `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 '字典编码:字符串类存语义码(camelCase);数值类存整数字符串如1/2,与对应枚举值一致(0=None不入库)', `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_dict_type` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `DictType` VARCHAR(64) NOT NULL COMMENT '字典类型编码', `Remark` VARCHAR(512) NULL COMMENT '字典类型备注', `TypeSort` 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_dict_type_code` (`DictType`) ) COMMENT='字典类型元数据表'; CREATE TABLE `t_system_other_config` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `ConfigCode` VARCHAR(64) NOT NULL COMMENT '配置编码,如 track_service', `ConfigName` VARCHAR(128) NOT NULL COMMENT '配置名称', `Enabled` TINYINT NOT NULL DEFAULT 0 COMMENT '是否启用:0-否,1-是', `BaseUrl` VARCHAR(512) NULL COMMENT '服务地址', `AppKey` VARCHAR(128) NULL COMMENT 'AppKey', `AppSecret` VARCHAR(256) NULL COMMENT 'AppSecret', `TimeoutSeconds` INT NOT NULL DEFAULT 30 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_system_other_config_code` (`ConfigCode`), KEY `idx_system_other_config_enabled` (`Enabled`, `Id`) ) COMMENT='系统其他配置表'; CREATE TABLE `t_system_batch_email_template` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `OwnerUserId` INT NOT NULL DEFAULT 0 COMMENT '所属 RBAC 用户 Id', `TemplateName` VARCHAR(128) NOT NULL COMMENT '模板名称', `Subject` VARCHAR(512) NOT NULL DEFAULT '' COMMENT '邮件主题', `Content` TEXT NOT NULL COMMENT '邮件正文', `SortOrder` 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_batch_email_tpl_owner_name` (`OwnerUserId`, `TemplateName`), KEY `idx_batch_email_tpl_owner` (`OwnerUserId`, `SortOrder`, `Id`) ) COMMENT='批量发送邮件模板'; CREATE TABLE `t_system_batch_email_account` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `OwnerUserId` INT NOT NULL DEFAULT 0 COMMENT '所属 RBAC 用户 Id', `SmtpUsername` VARCHAR(256) NOT NULL COMMENT 'SMTP 账号', `SmtpPassword` VARCHAR(512) NOT NULL COMMENT 'SMTP 密码/授权码', `ServerType` VARCHAR(32) NOT NULL DEFAULT 'qiye' COMMENT 'SMTP 类型', `FromName` 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`), UNIQUE KEY `uk_batch_email_account_owner` (`OwnerUserId`) ) COMMENT='批量发送邮件 SMTP 账号配置'; CREATE TABLE `t_system_batch_email_record` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `OwnerUserId` INT NOT NULL DEFAULT 0 COMMENT '所属 RBAC 用户 Id', `ToEmail` VARCHAR(256) NOT NULL COMMENT '收件邮箱', `Subject` VARCHAR(512) NOT NULL DEFAULT '' COMMENT '邮件主题', `Content` TEXT NOT NULL COMMENT '邮件正文', `SendTime` DATETIME NOT NULL COMMENT '发送时间', `Sender` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '发送人', `SenderEmail` VARCHAR(256) 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_batch_email_record_owner_time` (`OwnerUserId`, `SendTime`, `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_employee` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增,步长 1', `UserId` CHAR(36) NOT NULL COMMENT '关联 RBAC user.Id(工号/手机/邮箱见 user 表)', `RealName` VARCHAR(64) NOT NULL COMMENT '姓名(人事档案用)', `Gender` TINYINT NOT NULL DEFAULT 0 COMMENT 'Gender:0=Unknown未知,1=Male男,2=Female女', `Birthday` DATE NULL COMMENT '出生日期', `IdCardNo` VARCHAR(32) NULL COMMENT '身份证号', `HireDate` DATE NULL COMMENT '入职日期', `ProbationEndDate` DATE NULL COMMENT '试用期结束日期', `RegularizationDate` DATE NULL COMMENT '转正日期', `EmploymentStatus` TINYINT NOT NULL DEFAULT 1 COMMENT 'EmploymentStatus:0=None,1=Probation试用,2=Regular正式,3=Suspended停职,4=Resigned离职', `ResignationDate` DATE NULL COMMENT '离职日期', `Department` VARCHAR(128) NULL COMMENT '部门', `Position` VARCHAR(128) NULL COMMENT '岗位/职位', `JobLevel` VARCHAR(64) NULL COMMENT '职级', `EmploymentType` TINYINT NOT NULL DEFAULT 1 COMMENT 'EmploymentType:0=None,1=FullTime全职,2=PartTime兼职,3=Intern实习,4=Outsourced外包', `WorkLocation` VARCHAR(128) NULL COMMENT '工作地点', `ManagerUserId` CHAR(36) NULL COMMENT '直属上级 user.Id', `ContractStartDate` DATE NULL COMMENT '合同开始日期', `ContractEndDate` DATE NULL COMMENT '合同结束日期', `ContractType` VARCHAR(64) NULL COMMENT '合同类型', `EmergencyContact` VARCHAR(64) NULL COMMENT '紧急联系人', `EmergencyPhone` VARCHAR(32) NULL COMMENT '紧急联系人电话', `Address` VARCHAR(256) NULL COMMENT '住址', `Education` VARCHAR(64) 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_employee_user` (`UserId`), KEY `idx_employee_status_dept` (`EmploymentStatus`, `Department`), KEY `idx_employee_manager` (`ManagerUserId`) ) 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 '收货地址', `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='仓库地址表'; -- --------------------------------------------------------------------------- -- 客户账户资金流水 -- --------------------------------------------------------------------------- CREATE TABLE `t_customer_account_flow` ( `Id` int NOT NULL AUTO_INCREMENT, `CustomerId` int NOT NULL COMMENT '客户 ID', `SerialNumber` varchar(64) NOT NULL COMMENT '流水号', `BizType` varchar(32) NOT NULL COMMENT '业务类型 recharge/orderPay', `BizId` int DEFAULT NULL COMMENT '关联业务主键', `BizNo` varchar(64) DEFAULT NULL COMMENT '关联业务单号', `Amount` decimal(18,2) NOT NULL COMMENT '变动金额,正入账负出账', `BalanceBefore` decimal(18,2) NOT NULL COMMENT '变动前余额', `BalanceAfter` decimal(18,2) NOT NULL COMMENT '变动后余额', `Currency` varchar(8) NOT NULL DEFAULT 'CNY' COMMENT '币种', `Remark` varchar(512) DEFAULT NULL COMMENT '备注', `IsDeleted` tinyint(1) NOT NULL DEFAULT '0', `ConcurrencyStamp` char(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳', `CreateUserId` int NOT NULL DEFAULT '0', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` int DEFAULT NULL, `UpdateTime` datetime DEFAULT NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_customer_account_flow_serial` (`SerialNumber`), KEY `idx_customer_account_flow_customer_time` (`CustomerId`, `CreateTime`), KEY `idx_customer_account_flow_biz` (`BizType`, `BizId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户账户资金流水'; -- --------------------------------------------------------------------------- -- 仓储模块(c_*)+ 店铺订单(t_sales_store*) -- --------------------------------------------------------------------------- CREATE TABLE `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名称', `SkuNameEn` VARCHAR(256) NULL COMMENT 'SKU英文名称', `SkuImageUrl` VARCHAR(512) NULL COMMENT '图片URL', `UnitPrice` DECIMAL(12,4) NULL COMMENT '单价', `ExHsCode` VARCHAR(64) NULL COMMENT '出口HSCode', `ImHsCode` VARCHAR(64) NULL COMMENT '进口HSCode', `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 `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 `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 `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 `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 `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 `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 `c_parcel_arrival` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '客户ID', `WarehouseId` INT NOT NULL COMMENT '仓库ID', `ParcelId` INT NULL COMMENT '关联包裹 c_parcel.Id', `TrackingNo` VARCHAR(64) 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`), KEY `idx_c_parcel_arrival_tracking` (`CustomerId`, `TrackingNo`, `WarehouseId`), KEY `idx_c_parcel_arrival_ctime` (`CreateTime`) ) COMMENT='仓储-快递到仓记录'; CREATE TABLE `c_parcel_item` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `ParcelId` INT NOT NULL COMMENT '包裹ID → c_parcel.Id', `ProductName` VARCHAR(512) NULL COMMENT '商品名称', `AttributeText` VARCHAR(256) NULL COMMENT '规格属性', `ImageUrl` VARCHAR(1024) NULL COMMENT '商品图片URL', `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 `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 `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 `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 '订单国家', `RecipientName` VARCHAR(64) NULL COMMENT '收件人姓名', `RecipientCompany` VARCHAR(128) NULL COMMENT '收件人公司', `RecipientPhone` VARCHAR(32) NULL COMMENT '收件人手机', `RecipientTelePhone` VARCHAR(32) NULL COMMENT '收件人电话', `RecipientEmail` VARCHAR(64) NULL COMMENT '收件人邮箱', `RecipientCountry` VARCHAR(8) NULL COMMENT '收件国家码', `RecipientProvince` VARCHAR(64) NULL COMMENT '收件省/州', `RecipientCity` VARCHAR(64) NULL COMMENT '收件城市', `RecipientZipCode` VARCHAR(32) NULL COMMENT '收件邮编', `RecipientAddress1` VARCHAR(512) NULL COMMENT '收件地址1', `RecipientAddress2` VARCHAR(512) NULL COMMENT '收件地址2', `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 `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='销售店铺订单明细'; -- 小红书(LIKE AI → OMS)模块,详见设计文档 docs/小红书模块设计-063001.md CREATE TABLE `t_xhs_agent` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '客户ID → t_customer.Id', `DeviceId` VARCHAR(64) NOT NULL COMMENT 'Agent 本机设备标识', `DeviceName` VARCHAR(128) NULL COMMENT '用户自定义名称', `AgentVersion` VARCHAR(32) NULL COMMENT 'Agent 版本号', `BridgePort` INT NOT NULL DEFAULT 9333 COMMENT 'Bridge WebSocket 端口', `Status` VARCHAR(16) NOT NULL DEFAULT 'offline' COMMENT 'online/offline', `EngineRunning` TINYINT NOT NULL DEFAULT 0 COMMENT 'Bridge 引擎是否运行', `ExtensionConnected` TINYINT NOT NULL DEFAULT 0 COMMENT 'Chrome 扩展是否连上 Bridge', `XhsLoggedIn` TINYINT NOT NULL DEFAULT 0 COMMENT '小红书是否已登录', `LastHeartbeatTime` DATETIME NULL COMMENT '最后心跳时间', `LastError` VARCHAR(512) NULL COMMENT '最近一次 Agent 上报错误摘要', `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_xhs_agent_device` (`DeviceId`), KEY `idx_xhs_agent_customer` (`CustomerId`, `Status`) ) COMMENT='小红书本地 Agent 设备表'; CREATE TABLE `t_xhs_task` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '客户ID', `AgentId` INT NULL COMMENT '指定执行的 Agent;NULL 表示任意在线 Agent', `TaskType` VARCHAR(32) NOT NULL COMMENT '任务类型', `ToolName` VARCHAR(64) NULL COMMENT 'LIKE AI 工具名', `Priority` INT NOT NULL DEFAULT 0 COMMENT '越大越优先', `Status` VARCHAR(16) NOT NULL DEFAULT 'pending' COMMENT 'pending/claimed/running/succeeded/failed/cancelled', `ArgumentsJson` JSON NOT NULL COMMENT '工具参数 JSON', `ProgressText` VARCHAR(512) NULL COMMENT '执行过程摘要', `ResultJson` JSON NULL COMMENT '成功时结构化结果', `ErrorMessage` VARCHAR(1024) NULL COMMENT '失败原因', `Source` VARCHAR(32) NOT NULL DEFAULT 'web' COMMENT 'web/schedule/skill', `SourceRefId` VARCHAR(64) NULL COMMENT '来源关联 ID', `ScheduledTime` DATETIME NULL COMMENT '计划执行时间', `ClaimedAt` DATETIME NULL COMMENT 'Agent 认领时间', `StartedAt` DATETIME NULL COMMENT '开始执行', `FinishedAt` DATETIME NULL COMMENT '结束时间', `IsDeleted` TINYINT NOT NULL DEFAULT 0, `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()), `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), KEY `idx_xhs_task_poll` (`CustomerId`, `Status`, `ScheduledTime`, `Priority`), KEY `idx_xhs_task_agent` (`AgentId`, `Status`), KEY `idx_xhs_task_source` (`Source`, `SourceRefId`) ) COMMENT='小红书 Agent 任务队列表'; CREATE TABLE `t_xhs_publish_record` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '客户ID', `TaskId` INT NULL COMMENT '关联 t_xhs_task.Id', `ToolName` VARCHAR(64) NOT NULL COMMENT 'publish_content / publish_with_video', `Title` VARCHAR(256) NOT NULL COMMENT '笔记标题', `ContentPreview` VARCHAR(512) NULL COMMENT '正文摘要', `ContentFull` TEXT NULL COMMENT '完整正文', `MediaJson` JSON NULL COMMENT '图片/视频 URL 列表', `TagsJson` JSON NULL COMMENT '标签数组', `Visibility` VARCHAR(32) NULL COMMENT '可见范围', `Status` VARCHAR(16) NOT NULL DEFAULT 'draft' COMMENT 'draft/scheduled/publishing/succeeded/failed/cancelled', `Success` TINYINT NULL COMMENT '最终是否成功', `ResultSummary` VARCHAR(1024) NULL COMMENT 'Agent 回传结果摘要', `ScheduledTime` DATETIME NULL COMMENT '定时发布时间', `PublishedTime` DATETIME NULL COMMENT '实际发布完成时间', `SkillId` INT NULL COMMENT '若来自技能卡片', `IsDeleted` TINYINT NOT NULL DEFAULT 0, `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()), `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), KEY `idx_xhs_publish_customer_time` (`CustomerId`, `CreateTime`), KEY `idx_xhs_publish_status_sched` (`CustomerId`, `Status`, `ScheduledTime`), KEY `idx_xhs_publish_task` (`TaskId`) ) COMMENT='小红书发布记录表'; CREATE TABLE `t_xhs_analysis_session` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '客户ID', `SessionName` VARCHAR(128) NULL COMMENT '用户备注名', `AnalysisType` VARCHAR(32) NOT NULL COMMENT 'home_feed/search/my_feeds/feed_detail', `Keyword` VARCHAR(128) NULL COMMENT '搜索关键词', `TaskId` INT NULL COMMENT '采集任务 ID', `FeedsJson` JSON NULL COMMENT '采集笔记列表', `SelectedFeedId` VARCHAR(64) NULL COMMENT '当前选中笔记 ID', `AiAnalysisMarkdown` MEDIUMTEXT NULL COMMENT 'AI 分析结果', `SkillId` INT NULL COMMENT '技能配方 ID', `IsDeleted` TINYINT NOT NULL DEFAULT 0, `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()), `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), KEY `idx_xhs_analysis_customer` (`CustomerId`, `CreateTime`) ) COMMENT='小红书内容分析会话表'; CREATE TABLE `t_xhs_skill` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '客户ID;0 表示系统预置', `ExternalId` VARCHAR(32) NOT NULL COMMENT '对外稳定 ID', `Title` VARCHAR(256) NOT NULL COMMENT '技能名称', `SkillType` VARCHAR(32) NOT NULL DEFAULT 'ai_create' COMMENT '技能类型', `PresetId` VARCHAR(64) NULL COMMENT '内置预设标识', `RecipeJson` JSON NOT NULL COMMENT '配方 JSON', `SortOrder` INT NOT NULL DEFAULT 0 COMMENT '排序', `IsDeleted` TINYINT NOT NULL DEFAULT 0, `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()), `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_xhs_skill_external` (`CustomerId`, `ExternalId`), KEY `idx_xhs_skill_customer` (`CustomerId`, `SortOrder`) ) COMMENT='小红书技能卡片表'; CREATE TABLE `t_xhs_human_config` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '客户ID', `BehaviorJson` JSON NOT NULL COMMENT 'human_behavior 配置', `GuardJson` JSON NOT NULL COMMENT 'human_guard 配置', `Version` INT NOT NULL DEFAULT 1 COMMENT '配置版本', `IsDeleted` TINYINT NOT NULL DEFAULT 0, `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()), `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_xhs_human_customer` (`CustomerId`) ) COMMENT='小红书拟人行为与防封配置表'; CREATE TABLE `t_ai_provider` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '客户ID;0 表示全局', `ProviderKey` VARCHAR(32) NOT NULL COMMENT 'ai_chatgpt / ai_zhipu 等', `ProviderType` VARCHAR(32) NOT NULL COMMENT 'chatgpt/doubao/deepseek/zhipu', `DisplayName` VARCHAR(64) NOT NULL COMMENT '展示名', `BaseUrl` VARCHAR(512) NOT NULL COMMENT 'API Base URL', `ApiKeyEnc` VARCHAR(512) NULL COMMENT 'API Key(暂明文,后续可加密)', `ApiSecretEnc` VARCHAR(512) NULL COMMENT 'Secret/模型名', `IsDefault` TINYINT NOT NULL DEFAULT 0 COMMENT '是否默认', `Enabled` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用', `IsDeleted` TINYINT NOT NULL DEFAULT 0, `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()), `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_ai_provider` (`CustomerId`, `ProviderKey`), KEY `idx_ai_customer` (`CustomerId`, `Enabled`) ) COMMENT='全局 AI 提供商配置表(CustomerId=0 表示平台级)'; CREATE TABLE `t_ai_skill` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `SkillKey` VARCHAR(64) NOT NULL COMMENT '稳定键', `Scene` VARCHAR(32) NOT NULL COMMENT '场景 pricePublish/autoTriggerFormula/receiverAddressParse/itfxPrefixScript', `Name` VARCHAR(128) NOT NULL COMMENT '展示名', `Description` VARCHAR(512) NULL COMMENT '简介', `Content` LONGTEXT NOT NULL COMMENT '发给模型的正文', `SortOrder` INT NOT NULL DEFAULT 0 COMMENT '排序', `Enabled` TINYINT NOT NULL DEFAULT 1 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_ai_skill_key` (`SkillKey`), KEY `idx_ai_skill_scene` (`Scene`, `Enabled`, `SortOrder`) ) COMMENT='平台级 AI Skill(提示词/规范)'; CREATE TABLE `t_mcp_tool` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增', `ToolKey` VARCHAR(64) NOT NULL COMMENT '工具编码,如 oms.price_check', `DisplayName` VARCHAR(128) NOT NULL COMMENT '显示名称', `Description` VARCHAR(1000) NOT NULL COMMENT '给 AI 的工具描述', `Enabled` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用:0-否,1-是', `SortOrder` INT NOT NULL DEFAULT 0 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_mcp_tool_key` (`ToolKey`), KEY `idx_mcp_tool_enabled` (`Enabled`, `SortOrder`, `Id`) ) COMMENT='MCP 工具配置表'; CREATE TABLE `t_pickup_order` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增', `PickupNo` VARCHAR(32) NOT NULL COMMENT '揽收单号', `RequestId` VARCHAR(64) NULL COMMENT '请求幂等ID', `CustomerId` INT NOT NULL COMMENT '客户Id', `OrganizationId` CHAR(36) NULL COMMENT '数据归属组织', `SecretLevel` TINYINT NOT NULL DEFAULT 2 COMMENT '数据密级 1-4', `SenderAddressId` INT NOT NULL COMMENT '发件地址簿Id', `SenderName` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '取件联系人快照', `SenderCompany` VARCHAR(255) NULL COMMENT '公司快照', `SenderCountry` INT NULL COMMENT '国家 t_country.Id 快照', `SenderCountryCode` VARCHAR(8) NULL COMMENT '国家码快照', `SenderProvince` VARCHAR(50) NULL COMMENT '省快照', `SenderCity` VARCHAR(50) NULL COMMENT '市快照', `SenderZipCode` VARCHAR(50) NULL COMMENT '邮编快照', `SenderStreetAddress1` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '地址1快照', `SenderStreetAddress2` VARCHAR(500) NULL COMMENT '地址2快照', `SenderStreetAddress3` VARCHAR(500) NULL COMMENT '地址3快照', `SenderHouseNumber` VARCHAR(50) NULL COMMENT '门牌号快照', `SenderPhone` VARCHAR(50) NULL COMMENT '手机快照', `SenderTelePhone` VARCHAR(50) NULL COMMENT '电话快照', `SenderEmail` VARCHAR(60) NULL COMMENT '邮箱快照', `WarehouseId` INT NOT NULL COMMENT '送到仓库Id', `CarrierCode` VARCHAR(64) NULL COMMENT '承运商编码(draft可空)', `CarrierService` VARCHAR(64) NULL COMMENT '承运服务(draft可空)', `CarrierWaybillNo` VARCHAR(64) NULL COMMENT '承运商回执单号', `ExpectPickupTime` DATETIME NOT NULL COMMENT '期望揽收时间', `PickupWindowStart` DATETIME NULL COMMENT '时间窗起', `PickupWindowEnd` DATETIME NULL COMMENT '时间窗止', `ActualPickupTime` DATETIME NULL COMMENT '实际取件时间', `Status` VARCHAR(32) NOT NULL DEFAULT 'draft' COMMENT 'draft/scheduled/dispatched/picked/inbound/cancelled/failed', `ParcelCount` INT NOT NULL DEFAULT 0 COMMENT '关联票数', `TotalActualWeight` DECIMAL(18,3) NULL COMMENT '汇总实重', `ChargeableWeight` DECIMAL(18,3) NULL COMMENT '计费重', `Currency` VARCHAR(8) NOT NULL DEFAULT 'CNY' COMMENT '币种', `FreightAmount` DECIMAL(18,2) NULL COMMENT '对客揽收运费', `OtherFeeAmount` DECIMAL(18,2) NULL COMMENT '对客其他费', `ReceivableAmount` DECIMAL(18,2) NULL COMMENT '对客应收合计', `PayStatus` VARCHAR(16) NOT NULL DEFAULT 'unpaid' COMMENT 'unpaid/paid', `PayTime` DATETIME NULL COMMENT '支付时间', `PayMode` VARCHAR(16) NOT NULL DEFAULT 'prepaid' COMMENT 'prepaid/collect', `CarrierPayableAmount` DECIMAL(18,2) NULL COMMENT '应付承运商', `SettlementStatus` VARCHAR(16) NOT NULL DEFAULT 'none' COMMENT 'none/pending/settled', `SettlementBatchNo` VARCHAR(64) NULL COMMENT '结算批次号', `SettledAt` 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_pickup_no` (`PickupNo`), UNIQUE KEY `uk_pickup_request_id` (`RequestId`), KEY `idx_pickup_customer_status` (`CustomerId`, `Status`, `CreateTime`), KEY `idx_pickup_warehouse_time` (`WarehouseId`, `ExpectPickupTime`), KEY `idx_pickup_pay` (`PayStatus`), KEY `idx_pickup_settle` (`SettlementStatus`), KEY `idx_pickup_org_secret_ctime` (`OrganizationId`, `SecretLevel`, `CreateTime`) ) COMMENT='揽收单(上门取件履约+对客收款+承运结算)'; CREATE TABLE `t_pickup_order_line` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增', `PickupOrderId` INT NOT NULL COMMENT '揽收单Id', `OrderId` INT NOT NULL COMMENT '物流订单Id', `ServiceNo` VARCHAR(64) NULL COMMENT '运单号快照(便于列表)', `ClientNo` VARCHAR(64) NULL COMMENT '客户单号快照', `SortNo` 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_pickup_line_order` (`OrderId`), UNIQUE KEY `uk_pickup_line_pair` (`PickupOrderId`, `OrderId`), KEY `idx_pickup_line_header` (`PickupOrderId`, `IsDeleted`) ) COMMENT='揽收单关联物流订单(1揽收:N物流)'; CREATE TABLE `t_kb_category` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `Code` VARCHAR(64) NOT NULL COMMENT '稳定键,如 pricing', `Name` VARCHAR(128) NOT NULL COMMENT '展示名(中文)', `SortOrder` INT NOT NULL DEFAULT 0 COMMENT '排序,越小越前', `Enabled` TINYINT NOT NULL DEFAULT 1 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_kb_category_code` (`Code`), KEY `idx_kb_category_enabled_sort` (`Enabled`, `SortOrder`) ) COMMENT='知识库分类'; CREATE TABLE `t_kb_article` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CategoryId` INT NOT NULL COMMENT '分类 Id', `Title` VARCHAR(200) NOT NULL COMMENT '标题(中文)', `Summary` VARCHAR(500) NULL COMMENT '列表摘要', `Content` LONGTEXT NOT NULL COMMENT 'Markdown 正文(中文)', `Audience` VARCHAR(16) NOT NULL DEFAULT 'customer' COMMENT '受众 customer/internal', `Status` VARCHAR(16) NOT NULL DEFAULT 'draft' COMMENT 'draft/published/offline', `Tags` VARCHAR(256) NULL COMMENT '逗号分隔标签', `RelatedPath` VARCHAR(256) NULL COMMENT '站内关联 path', `RelatedLabel` VARCHAR(64) NULL COMMENT '关联按钮文案', `IsPinned` TINYINT NOT NULL DEFAULT 0 COMMENT '置顶:0-否,1-是', `SortOrder` INT NOT NULL DEFAULT 0 COMMENT '同类排序', `PublishTime` DATETIME NULL COMMENT '发布时间', `ExpireTime` DATETIME NULL COMMENT '过期时间', `ViewCount` 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`), KEY `idx_kb_article_list` (`Status`, `Audience`, `CategoryId`, `IsPinned`, `SortOrder`), KEY `idx_kb_article_publish` (`Status`, `Audience`, `PublishTime`), KEY `idx_kb_article_hot` (`Status`, `Audience`, `IsPinned`, `ViewCount`) ) COMMENT='知识库文章'; CREATE TABLE `t_xhs_media` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键', `CustomerId` INT NOT NULL COMMENT '客户ID', `FileName` VARCHAR(256) NOT NULL COMMENT '原始文件名', `StoragePath` VARCHAR(512) NOT NULL COMMENT '相对路径', `PublicUrl` VARCHAR(512) NOT NULL COMMENT '对外 HTTPS URL', `MimeType` VARCHAR(64) NULL COMMENT 'MIME', `FileSizeBytes` BIGINT NULL COMMENT '字节数', `IsDeleted` TINYINT NOT NULL DEFAULT 0, `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), KEY `idx_xhs_media_customer` (`CustomerId`, `CreateTime`) ) COMMENT='小红书创作上传媒体表'; -- --------------------------------------------------------------------------- -- 数据权限(RBAC 侧表;若与 OMS 分库,请只在 RBAC 库执行本段) -- --------------------------------------------------------------------------- CREATE TABLE `user_org_perm` ( `Id` CHAR(36) NOT NULL COMMENT '主键 GUID', `UserId` CHAR(36) NOT NULL COMMENT 'FK user.Id', `OrganizationId` CHAR(36) NOT NULL COMMENT 'FK organization.Id', `OrgScope` TINYINT NOT NULL DEFAULT 2 COMMENT '1=仅本级 2=本级+所有下级', `EffectiveTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '生效时间', `ExpireTime` DATETIME NULL COMMENT '过期时间,NULL=永久', `IsTemporary` TINYINT NOT NULL DEFAULT 0 COMMENT '是否临时授权:0否 1是', `IsDeleted` TINYINT NOT NULL DEFAULT 0, `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), KEY `idx_user_org_perm_user` (`UserId`, `IsDeleted`), KEY `idx_user_org_perm_org` (`OrganizationId`), KEY `idx_user_org_perm_expire` (`ExpireTime`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户组织数据权限'; -- --------------------------------------------------------------------------- -- 2. 角色组织权限(角色继承 / 模板绑定) -- --------------------------------------------------------------------------- CREATE TABLE `role_org_perm` ( `Id` CHAR(36) NOT NULL, `RoleId` CHAR(36) NOT NULL COMMENT 'FK role.Id', `OrganizationId` CHAR(36) NOT NULL, `OrgScope` TINYINT NOT NULL DEFAULT 2, `IsDeleted` TINYINT NOT NULL DEFAULT 0, `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_role_org_perm` (`RoleId`, `OrganizationId`, `IsDeleted`), KEY `idx_role_org_perm_role` (`RoleId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色组织数据权限'; -- --------------------------------------------------------------------------- -- 3. 数据范围(个人/小组/部门/组织树/全局) -- --------------------------------------------------------------------------- CREATE TABLE `role_data_scope` ( `Id` CHAR(36) NOT NULL, `RoleId` CHAR(36) NOT NULL, `DataScope` TINYINT NOT NULL COMMENT '1个人 2小组 3部门 4组织树 5全局', `DataResourceCode` VARCHAR(32) NULL COMMENT 'NULL=全局默认;Order/Customer/Recharge 等', `IsDeleted` TINYINT NOT NULL DEFAULT 0, `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_role_data_scope` (`RoleId`, `DataResourceCode`, `IsDeleted`), KEY `idx_role_data_scope_role` (`RoleId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色数据范围'; CREATE TABLE `user_data_scope` ( `Id` CHAR(36) NOT NULL, `UserId` CHAR(36) NOT NULL, `DataScope` TINYINT NOT NULL, `DataResourceCode` VARCHAR(32) NULL, `EffectiveTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `ExpireTime` DATETIME NULL, `IsTemporary` TINYINT NOT NULL DEFAULT 0, `IsDeleted` TINYINT NOT NULL DEFAULT 0, `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_user_data_scope` (`UserId`, `DataResourceCode`, `IsDeleted`), KEY `idx_user_data_scope_user` (`UserId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户数据范围(覆盖角色默认)'; -- --------------------------------------------------------------------------- -- 4. 业务维度 -- --------------------------------------------------------------------------- CREATE TABLE `role_biz_perm` ( `Id` CHAR(36) NOT NULL, `RoleId` CHAR(36) NOT NULL, `BizType` VARCHAR(32) NOT NULL COMMENT 'product_line/kpi_area/customer_group/warehouse/region', `BizId` VARCHAR(64) NOT NULL COMMENT '业务主键字符串', `BizName` VARCHAR(128) NULL COMMENT '冗余展示名', `IsDeleted` TINYINT NOT NULL DEFAULT 0, `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`Id`), KEY `idx_role_biz_perm_role` (`RoleId`, `BizType`), KEY `idx_role_biz_perm_biz` (`BizType`, `BizId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色业务维度权限'; CREATE TABLE `user_biz_perm` ( `Id` CHAR(36) NOT NULL, `UserId` CHAR(36) NOT NULL, `BizType` VARCHAR(32) NOT NULL, `BizId` VARCHAR(64) NOT NULL, `BizName` VARCHAR(128) NULL, `EffectiveTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `ExpireTime` DATETIME NULL, `IsTemporary` TINYINT NOT NULL DEFAULT 0, `IsDeleted` TINYINT NOT NULL DEFAULT 0, `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`Id`), KEY `idx_user_biz_perm_user` (`UserId`, `BizType`), KEY `idx_user_biz_perm_biz` (`BizType`, `BizId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户业务维度权限'; -- --------------------------------------------------------------------------- -- 5. 密级 -- --------------------------------------------------------------------------- CREATE TABLE `role_secret_perm` ( `Id` CHAR(36) NOT NULL, `RoleId` CHAR(36) NOT NULL, `SecretLevel` TINYINT NOT NULL COMMENT '1公开 2内部 3机密 4绝密', `DataResourceCode` VARCHAR(32) NULL, `IsDeleted` TINYINT NOT NULL DEFAULT 0, `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`Id`), KEY `idx_role_secret_perm_role` (`RoleId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色密级权限'; CREATE TABLE `user_secret_perm` ( `Id` CHAR(36) NOT NULL, `UserId` CHAR(36) NOT NULL, `SecretLevel` TINYINT NOT NULL, `DataResourceCode` VARCHAR(32) NULL, `EffectiveTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `ExpireTime` DATETIME NULL, `IsTemporary` TINYINT NOT NULL DEFAULT 0, `IsDeleted` TINYINT NOT NULL DEFAULT 0, `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`Id`), KEY `idx_user_secret_perm_user` (`UserId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户密级权限'; -- --------------------------------------------------------------------------- -- 6. 自定义过滤规则(JSON AST,禁止存 SQL) -- --------------------------------------------------------------------------- CREATE TABLE `role_filter_rule` ( `Id` CHAR(36) NOT NULL, `RoleId` CHAR(36) NOT NULL, `DataResourceCode` VARCHAR(32) NOT NULL, `FilterContent` JSON NOT NULL COMMENT '过滤条件 AST', `FilterHash` CHAR(64) NOT NULL COMMENT 'SHA256(FilterContent)', `IsDeleted` TINYINT NOT NULL DEFAULT 0, `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_role_filter_rule` (`RoleId`, `DataResourceCode`, `IsDeleted`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色自定义过滤'; CREATE TABLE `user_filter_rule` ( `Id` CHAR(36) NOT NULL, `UserId` CHAR(36) NOT NULL, `DataResourceCode` VARCHAR(32) NOT NULL, `FilterContent` JSON NOT NULL, `FilterHash` CHAR(64) NOT NULL, `EffectiveTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `ExpireTime` DATETIME NULL, `IsTemporary` TINYINT NOT NULL DEFAULT 0, `IsDeleted` TINYINT NOT NULL DEFAULT 0, `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_user_filter_rule` (`UserId`, `DataResourceCode`, `IsDeleted`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户自定义过滤'; -- --------------------------------------------------------------------------- -- 7. 数据资源注册(模块接入清单) -- --------------------------------------------------------------------------- CREATE TABLE `data_resource` ( `Id` CHAR(36) NOT NULL, `Code` VARCHAR(32) NOT NULL COMMENT 'Order/Customer/Recharge/ChannelProduct/Xhs', `Name` VARCHAR(64) NOT NULL, `Description` VARCHAR(256) NULL, `MainTable` VARCHAR(64) NULL COMMENT '主表名,如 t_order', `OrgField` VARCHAR(64) NULL COMMENT '组织字段名', `OwnerField` VARCHAR(64) NULL COMMENT '负责人字段名', `SecretLevelField` VARCHAR(64) NULL DEFAULT 'SecretLevel', `IsEnabled` TINYINT NOT NULL DEFAULT 1, `SortOrder` INT NOT NULL DEFAULT 0, `IsDeleted` TINYINT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`Id`), UNIQUE KEY `uk_data_resource_code` (`Code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据权限资源注册'; -- --------------------------------------------------------------------------- -- 8. 字段脱敏配置 -- --------------------------------------------------------------------------- CREATE TABLE `data_perm_field_mask` ( `Id` CHAR(36) NOT NULL, `DataResourceCode` VARCHAR(32) NOT NULL, `FieldName` VARCHAR(64) NOT NULL COMMENT 'DTO/表字段名', `SecretLevel` TINYINT NOT NULL COMMENT '达到此密级才脱敏', `MaskType` VARCHAR(32) NOT NULL DEFAULT 'partial' COMMENT 'partial/full/hide', `MaskPattern` VARCHAR(128) NULL COMMENT '如 phone: 3,4 保留首尾', `IsEnabled` TINYINT NOT NULL DEFAULT 1, `IsDeleted` TINYINT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`Id`), UNIQUE KEY `uk_field_mask` (`DataResourceCode`, `FieldName`, `IsDeleted`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='字段级脱敏配置'; -- --------------------------------------------------------------------------- -- 9. 权限模板 -- --------------------------------------------------------------------------- CREATE TABLE `data_perm_template` ( `Id` CHAR(36) NOT NULL, `Name` VARCHAR(64) NOT NULL, `Code` VARCHAR(32) NOT NULL COMMENT '模板编码,如 SalesStaff', `Description` VARCHAR(256) NULL, `RoleCode` VARCHAR(64) NULL COMMENT '可选绑定 RBAC role.Code,分配角色时自动套用', `IsBuiltIn` TINYINT NOT NULL DEFAULT 0 COMMENT '内置模板不可删', `IsDeleted` TINYINT NOT NULL DEFAULT 0, `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_data_perm_template_code` (`Code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据权限模板'; CREATE TABLE `data_perm_template_item` ( `Id` CHAR(36) NOT NULL, `TemplateId` CHAR(36) NOT NULL, `DimensionType` VARCHAR(32) NOT NULL COMMENT 'org/data_scope/biz/secret/filter', `ItemContent` JSON NOT NULL COMMENT '维度配置 JSON', `SortOrder` INT NOT NULL DEFAULT 0, `IsDeleted` TINYINT NOT NULL DEFAULT 0, PRIMARY KEY (`Id`), KEY `idx_template_item_tpl` (`TemplateId`, `DimensionType`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据权限模板明细'; -- --------------------------------------------------------------------------- -- 10. 审计 -- --------------------------------------------------------------------------- CREATE TABLE `data_perm_change_log` ( `Id` BIGINT NOT NULL AUTO_INCREMENT, `TargetType` VARCHAR(16) NOT NULL COMMENT 'user/role/template', `TargetId` CHAR(36) NOT NULL, `Action` VARCHAR(16) NOT NULL COMMENT 'create/update/delete/apply_template', `BeforeJson` JSON NULL, `AfterJson` JSON NULL, `OperatorUserId` CHAR(36) NOT NULL COMMENT '操作人 user.Id', `OperatorMapId` INT NULL COMMENT '操作人 mapId', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`Id`), KEY `idx_perm_change_target` (`TargetType`, `TargetId`, `CreateTime`), KEY `idx_perm_change_operator` (`OperatorUserId`, `CreateTime`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据权限配置变更日志'; CREATE TABLE `data_perm_access_log` ( `Id` BIGINT NOT NULL AUTO_INCREMENT, `UserId` CHAR(36) NOT NULL, `MapId` INT NULL, `DataResourceCode` VARCHAR(32) NOT NULL, `ApiPath` VARCHAR(256) NOT NULL, `HttpMethod` VARCHAR(8) NOT NULL DEFAULT 'GET', `AppliedScopeJson` JSON NULL COMMENT '生效五维快照', `RowCount` INT NULL COMMENT '返回行数', `ElapsedMs` INT NULL, `ClientIp` VARCHAR(64) NULL, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`Id`), KEY `idx_perm_access_user_time` (`UserId`, `CreateTime`), KEY `idx_perm_access_resource` (`DataResourceCode`, `CreateTime`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据权限访问审计(可采样)'; -- --------------------------------------------------------------------------- -- 增量迁移(已有库执行;全新安装可忽略) -- --------------------------------------------------------------------------- -- ALTER TABLE `c_sku` -- ADD COLUMN `SkuNameEn` VARCHAR(256) NULL COMMENT 'SKU英文名称' AFTER `SkuName`, -- ADD COLUMN `UnitPrice` DECIMAL(12,4) NULL COMMENT '单价' AFTER `SkuImageUrl`, -- ADD COLUMN `ExHsCode` VARCHAR(64) NULL COMMENT '出口HSCode' AFTER `UnitPrice`, -- ADD COLUMN `ImHsCode` VARCHAR(64) NULL COMMENT '进口HSCode' AFTER `ExHsCode`; SET FOREIGN_KEY_CHECKS = 1;