-- 订单批量异步任务表(RabbitMQ 方案) -- 执行前请确认数据库为 oms -- -- 注意:必须使用 DROP + CREATE,不能用 IF NOT EXISTS。 -- 若表已存在,IF NOT EXISTS 会跳过建表,表/字段注释不会写入。 -- 若表内已有业务数据,请勿直接 DROP;对照根目录 db.sql 中对应表定义手工补列。 SET FOREIGN_KEY_CHECKS = 0; DROP TABLE IF EXISTS `t_order_batch_job_item`; DROP TABLE IF EXISTS `t_order_batch_job`; 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`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 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 '运单号', `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`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单批量异步任务明细表'; SET FOREIGN_KEY_CHECKS = 1;