62 lines
3.1 KiB
Go
62 lines
3.1 KiB
Go
-- ============================================================================
|
||
-- 真退款链路:退款单状态与金额落库(幂等,可重复执行)
|
||
--
|
||
-- 本迁移与 internal/logic/migrate.go 的 migrateColumns() 内容一致:
|
||
-- 服务端启动时 Migrate() 会自动加列(项目约定:升级只需重启服务)。
|
||
-- 本文件供运维在无法重启 / 需要手工核对时使用。
|
||
--
|
||
-- 新增列:
|
||
-- member_orders.refund_no 商户退款单号(唯一;失败重发换新号)
|
||
-- member_orders.refund_status 退款状态:0未退款 1退款中 2退款成功 3退款失败
|
||
-- member_orders.refund_amount 退款金额(分,全额退款 = paid_price_cents)
|
||
-- member_orders.refund_reason 退款原因(后台登记,iOS/手工退款必填)
|
||
-- member_orders.refund_finished_at 退款确认完成时间(回调 / 查单轮询 / 手工登记)
|
||
-- ============================================================================
|
||
|
||
SET @db := DATABASE();
|
||
|
||
SET @sql := (
|
||
SELECT IF(COUNT(*) = 0,
|
||
'ALTER TABLE `member_orders` ADD COLUMN `refund_no` varchar(40) NOT NULL DEFAULT '''' COMMENT ''商户退款单号''',
|
||
'SELECT ''member_orders.refund_no already exists'' AS msg')
|
||
FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'member_orders' AND COLUMN_NAME = 'refund_no'
|
||
);
|
||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
||
SET @sql := (
|
||
SELECT IF(COUNT(*) = 0,
|
||
'ALTER TABLE `member_orders` ADD COLUMN `refund_status` tinyint NOT NULL DEFAULT 0 COMMENT ''退款状态:0未退款 1退款中 2退款成功 3退款失败''',
|
||
'SELECT ''member_orders.refund_status already exists'' AS msg')
|
||
FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'member_orders' AND COLUMN_NAME = 'refund_status'
|
||
);
|
||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
||
SET @sql := (
|
||
SELECT IF(COUNT(*) = 0,
|
||
'ALTER TABLE `member_orders` ADD COLUMN `refund_amount` bigint NOT NULL DEFAULT 0 COMMENT ''退款金额(分)''',
|
||
'SELECT ''member_orders.refund_amount already exists'' AS msg')
|
||
FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'member_orders' AND COLUMN_NAME = 'refund_amount'
|
||
);
|
||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
||
SET @sql := (
|
||
SELECT IF(COUNT(*) = 0,
|
||
'ALTER TABLE `member_orders` ADD COLUMN `refund_reason` varchar(255) NOT NULL DEFAULT '''' COMMENT ''退款原因''',
|
||
'SELECT ''member_orders.refund_reason already exists'' AS msg')
|
||
FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'member_orders' AND COLUMN_NAME = 'refund_reason'
|
||
);
|
||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
||
SET @sql := (
|
||
SELECT IF(COUNT(*) = 0,
|
||
'ALTER TABLE `member_orders` ADD COLUMN `refund_finished_at` datetime DEFAULT NULL COMMENT ''退款确认完成时间''',
|
||
'SELECT ''member_orders.refund_finished_at already exists'' AS msg')
|
||
FROM information_schema.COLUMNS
|
||
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'member_orders' AND COLUMN_NAME = 'refund_finished_at'
|
||
);
|
||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|