bindbox-game/migrations/20251226_add_order_snapshots.sql

42 lines
2.4 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 审计快照功能: 订单快照表和回滚日志表
-- 用于记录用户消费时刻的完整状态快照,支持数据回滚
-- 订单快照表
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已回滚';