2026-07-12 00:47:20 +08:00

27 lines
1.9 KiB
SQL
Raw 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.

-- SendGift V2 需要把首次成功结果和扣款后的恢复状态固化在 room-service owner 库。
-- 线上先执行该迁移再发布新 room-service旧版本不会读取新增列和表迁移可向前兼容。
ALTER TABLE room_command_log
ADD COLUMN result_payload LONGBLOB NULL COMMENT '首次提交的 typed 结果,用于幂等原样重放' AFTER payload;
CREATE TABLE IF NOT EXISTS room_gift_operations (
app_code VARCHAR(32) NOT NULL COMMENT '应用编码,用于多租户隔离',
room_id VARCHAR(64) NOT NULL COMMENT '房间 ID',
command_id VARCHAR(128) NOT NULL COMMENT '送礼全链路幂等 ID',
actor_user_id BIGINT NOT NULL COMMENT '送礼用户 ID',
command_payload LONGBLOB NOT NULL COMMENT '规范化 Room 命令,供载荷冲突校验',
request_payload LONGBLOB NOT NULL COMMENT '原始 SendGiftRequest protobuf供服务端恢复',
status VARCHAR(32) NOT NULL COMMENT 'pending/debited/drawn/committed/compensated',
billing_payload LONGBLOB NULL COMMENT '钱包稳定回执 protobuf',
lucky_payload LONGBLOB NULL COMMENT '幸运礼物聚合结果 protobuf',
result_payload LONGBLOB NULL COMMENT '首次提交的 SendGiftResultV2 protobuf',
last_error TEXT NULL COMMENT '最近一次恢复错误',
retry_count INT NOT NULL DEFAULT 0 COMMENT '服务端恢复次数',
next_retry_at_ms BIGINT NOT NULL DEFAULT 0 COMMENT '下次允许恢复时间UTC epoch ms',
worker_id VARCHAR(128) NOT NULL DEFAULT '' COMMENT '当前恢复 worker',
lock_until_ms BIGINT NULL COMMENT '恢复租约截止时间UTC epoch ms',
created_at_ms BIGINT NOT NULL COMMENT '创建时间UTC epoch ms',
updated_at_ms BIGINT NOT NULL COMMENT '更新时间UTC epoch ms',
PRIMARY KEY (app_code, room_id, command_id),
KEY idx_room_gift_operation_recovery (status, next_retry_at_ms, lock_until_ms, updated_at_ms)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='送礼跨钱包抽奖和房间提交 Saga';