migration-v5.sql 2.5 KB

1234567891011121314151617181920212223242526272829303132
  1. -- ============================================
  2. -- migration-v5.sql
  3. -- 邀请文案微信昵称 & 支付渠道切换追溯相关字段
  4. -- ============================================
  5. -- 1. t_user 补充微信昵称字段(幂等 ALTER)
  6. SET @col_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 't_user' AND COLUMN_NAME = 'wechat_nickname');
  7. SET @sql = IF(@col_exists = 0, "ALTER TABLE `t_user` ADD COLUMN `wechat_nickname` VARCHAR(128) DEFAULT NULL COMMENT '微信昵称' AFTER `wechat_union_id`", 'SELECT 1');
  8. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  9. -- 2. t_payment_order 补充实际支付渠道字段(幂等 ALTER)
  10. SET @col_exists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 't_payment_order' AND COLUMN_NAME = 'paid_channel');
  11. SET @sql = IF(@col_exists = 0, "ALTER TABLE `t_payment_order` ADD COLUMN `paid_channel` VARCHAR(20) DEFAULT NULL COMMENT '实际支付渠道:第一次支付成功时的渠道' AFTER `qr_code_url`", 'SELECT 1');
  12. PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
  13. -- 3. 支付订单重复支付记录表(切换渠道后多个渠道都支付成功时保留证据)
  14. CREATE TABLE IF NOT EXISTS `t_payment_order_extra_payment` (
  15. `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  16. `order_no` VARCHAR(32) NOT NULL COMMENT '订单号',
  17. `channel` VARCHAR(20) NOT NULL COMMENT '实际支付渠道:WECHAT/ALIPAY',
  18. `trade_no` VARCHAR(64) NOT NULL COMMENT '第三方交易号',
  19. `amount` DECIMAL(10,2) NOT NULL COMMENT '支付金额(元)',
  20. `paid_time` DATETIME NOT NULL COMMENT '支付时间',
  21. `refund_status` VARCHAR(20) DEFAULT 'PENDING' COMMENT '退款状态:PENDING/SUCCESS/FAILED',
  22. `refund_trade_no` VARCHAR(64) DEFAULT NULL COMMENT '退款交易号(第三方退款单号)',
  23. `refund_time` DATETIME DEFAULT NULL COMMENT '退款时间',
  24. `refund_fail_reason` VARCHAR(500) DEFAULT NULL COMMENT '退款失败原因',
  25. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  26. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  27. PRIMARY KEY (`id`),
  28. KEY `idx_order_no` (`order_no`)
  29. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='支付订单重复支付记录表';