-- prc_surcharge: drop calc_rule; keep dict_value / block_title; charge_type stores billing mode SET NAMES utf8mb4; -- If calc_rule exists, copy into charge_type then drop SET @col := ( SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'prc_surcharge' AND COLUMN_NAME = 'calc_rule' LIMIT 1 ); SET @sql := IF(@col IS NULL, 'SELECT 1', 'UPDATE prc_surcharge SET charge_type = calc_rule WHERE calc_rule IS NOT NULL AND calc_rule <> '''''); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @col := ( SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'prc_surcharge' AND COLUMN_NAME = 'calc_rule' LIMIT 1 ); SET @sql := IF(@col IS NULL, 'SELECT 1', 'ALTER TABLE prc_surcharge DROP COLUMN calc_rule'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @col := ( SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'prc_surcharge' AND COLUMN_NAME = 'dict_value' LIMIT 1 ); SET @sql := IF(@col IS NULL, 'ALTER TABLE prc_surcharge ADD COLUMN dict_value varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT ''渠道产品 payment_product_type.dict_value'' AFTER charge_type', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @col := ( SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'prc_surcharge' AND COLUMN_NAME = 'block_title' LIMIT 1 ); SET @sql := IF(@col IS NULL, 'ALTER TABLE prc_surcharge ADD COLUMN block_title varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT ''分区/区块(pay_postcode_group.block_title)'' AFTER country_code', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- legacy amount modes: FIXED -> ALWAYS; RATE no longer used as amount mode -> MANUAL UPDATE prc_surcharge SET charge_type = 'ALWAYS' WHERE charge_type IS NULL OR charge_type = '' OR upper(charge_type) = 'FIXED'; UPDATE prc_surcharge SET charge_type = 'MANUAL' WHERE upper(charge_type) = 'RATE';