-- 审计快照功能: 订单快照表和回滚日志表 -- 用于记录用户消费时刻的完整状态快照,支持数据回滚 -- 订单快照表 CREATE TABLE IF NOT EXISTS `order_snapshots` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `order_id` BIGINT NOT NULL COMMENT '订单ID', `order_no` VARCHAR(64) NOT NULL COMMENT '订单号', `user_id` BIGINT NOT NULL COMMENT '用户ID', `snapshot_type` TINYINT NOT NULL COMMENT '快照类型:1=消费前 2=消费后', `snapshot_data` JSON NOT NULL COMMENT '完整状态快照(JSON)', `snapshot_hash` VARCHAR(64) DEFAULT NULL COMMENT '快照数据Hash(可选,用于校验)', PRIMARY KEY (`id`), KEY `idx_order_id` (`order_id`), KEY `idx_user_id_created` (`user_id`, `created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单快照表'; -- 审计回滚日志表 CREATE TABLE IF NOT EXISTS `audit_rollback_logs` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `order_id` BIGINT NOT NULL COMMENT '订单ID', `order_no` VARCHAR(64) NOT NULL COMMENT '订单号', `user_id` BIGINT NOT NULL COMMENT '用户ID', `operator_id` BIGINT NOT NULL COMMENT '操作人ID(管理员)', `operator_name` VARCHAR(64) DEFAULT NULL COMMENT '操作人名称', `rollback_type` TINYINT NOT NULL DEFAULT 1 COMMENT '回滚类型:1=完整回滚', `before_snapshot_id` BIGINT DEFAULT NULL COMMENT '回滚前快照ID(消费后快照)', `after_snapshot_id` BIGINT DEFAULT NULL COMMENT '回滚目标快照ID(消费前快照)', `changes_applied` JSON DEFAULT NULL COMMENT '实际执行的变更明细', `reason` VARCHAR(512) DEFAULT NULL COMMENT '回滚原因', `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1=成功 2=失败', `error_msg` TEXT DEFAULT NULL COMMENT '失败原因', PRIMARY KEY (`id`), KEY `idx_order_id` (`order_id`), KEY `idx_operator` (`operator_id`, `created_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='审计回滚操作日志'; -- 更新订单状态注释,增加状态5=已回滚 -- ALTER TABLE `orders` MODIFY COLUMN `status` INT NOT NULL DEFAULT 1 COMMENT '订单状态:1待支付 2已支付 3已取消 4已退款 5已回滚';