|
|
@@ -157,7 +157,27 @@ CREATE TABLE IF NOT EXISTS `t_recharge_config_group` (
|
|
|
UNIQUE KEY `uk_station_id` (`station_id`)
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='充值配置分组表';
|
|
|
|
|
|
--- 9b. 为已有的 station_id(含NULL默认值)创建分组
|
|
|
+-- 9b. 确保 t_recharge_config 有 station_id 列(兼容 V2.1 未执行的情况)
|
|
|
+DROP PROCEDURE IF EXISTS add_station_id_if_missing;
|
|
|
+DELIMITER //
|
|
|
+CREATE PROCEDURE add_station_id_if_missing()
|
|
|
+BEGIN
|
|
|
+ IF NOT EXISTS (
|
|
|
+ SELECT 1 FROM information_schema.COLUMNS
|
|
|
+ WHERE TABLE_SCHEMA = DATABASE()
|
|
|
+ AND TABLE_NAME = 't_recharge_config'
|
|
|
+ AND COLUMN_NAME = 'station_id'
|
|
|
+ ) THEN
|
|
|
+ ALTER TABLE `t_recharge_config`
|
|
|
+ ADD COLUMN `station_id` VARCHAR(64) DEFAULT NULL COMMENT '站点ID,NULL表示平台默认配置'
|
|
|
+ AFTER `label`;
|
|
|
+ END IF;
|
|
|
+END //
|
|
|
+DELIMITER ;
|
|
|
+CALL add_station_id_if_missing();
|
|
|
+DROP PROCEDURE IF EXISTS add_station_id_if_missing;
|
|
|
+
|
|
|
+-- 9c. 为已有的 station_id(含NULL默认值)创建分组
|
|
|
INSERT INTO `t_recharge_config_group` (`station_id`, `name`, `create_time`, `update_time`)
|
|
|
SELECT DISTINCT `station_id`, NULL, NOW(), NOW()
|
|
|
FROM `t_recharge_config`
|
|
|
@@ -166,26 +186,52 @@ WHERE NOT EXISTS (
|
|
|
WHERE (g.`station_id` <=> `t_recharge_config`.`station_id`)
|
|
|
);
|
|
|
|
|
|
--- 9c. t_recharge_config 新增 group_id 列
|
|
|
+-- 9d. 确保平台默认分组存在(station_id IS NULL)
|
|
|
+INSERT INTO `t_recharge_config_group` (`station_id`, `name`, `create_time`, `update_time`)
|
|
|
+SELECT NULL, NULL, NOW(), NOW()
|
|
|
+WHERE NOT EXISTS (
|
|
|
+ SELECT 1 FROM `t_recharge_config_group` WHERE `station_id` IS NULL
|
|
|
+);
|
|
|
+
|
|
|
+-- 9e. t_recharge_config 新增 group_id 列
|
|
|
ALTER TABLE `t_recharge_config`
|
|
|
ADD COLUMN `group_id` BIGINT DEFAULT NULL COMMENT '所属分组ID'
|
|
|
AFTER `id`;
|
|
|
|
|
|
--- 9d. 回填 group_id
|
|
|
+-- 9f. 回填 group_id
|
|
|
UPDATE `t_recharge_config` c
|
|
|
INNER JOIN `t_recharge_config_group` g
|
|
|
ON (c.`station_id` <=> g.`station_id`)
|
|
|
SET c.`group_id` = g.`id`;
|
|
|
|
|
|
--- 9e. group_id 设为 NOT NULL
|
|
|
+-- 9g. 未关联到任何分组的行归入默认分组
|
|
|
+UPDATE `t_recharge_config`
|
|
|
+SET `group_id` = (SELECT id FROM `t_recharge_config_group` WHERE `station_id` IS NULL LIMIT 1)
|
|
|
+WHERE `group_id` IS NULL;
|
|
|
+
|
|
|
+-- 9h. group_id 设为 NOT NULL
|
|
|
ALTER TABLE `t_recharge_config`
|
|
|
MODIFY COLUMN `group_id` BIGINT NOT NULL COMMENT '所属分组ID';
|
|
|
|
|
|
--- 9f. 删除旧 station_id 列
|
|
|
-ALTER TABLE `t_recharge_config`
|
|
|
- DROP COLUMN `station_id`;
|
|
|
+-- 9i. 删除旧 station_id 列
|
|
|
+DROP PROCEDURE IF EXISTS drop_station_id;
|
|
|
+DELIMITER //
|
|
|
+CREATE PROCEDURE drop_station_id()
|
|
|
+BEGIN
|
|
|
+ IF EXISTS (
|
|
|
+ SELECT 1 FROM information_schema.COLUMNS
|
|
|
+ WHERE TABLE_SCHEMA = DATABASE()
|
|
|
+ AND TABLE_NAME = 't_recharge_config'
|
|
|
+ AND COLUMN_NAME = 'station_id'
|
|
|
+ ) THEN
|
|
|
+ ALTER TABLE `t_recharge_config` DROP COLUMN `station_id`;
|
|
|
+ END IF;
|
|
|
+END //
|
|
|
+DELIMITER ;
|
|
|
+CALL drop_station_id();
|
|
|
+DROP PROCEDURE IF EXISTS drop_station_id;
|
|
|
|
|
|
--- 9g. 组内金额唯一约束
|
|
|
+-- 9j. 组内金额唯一约束
|
|
|
ALTER TABLE `t_recharge_config`
|
|
|
ADD INDEX `idx_group_id` (`group_id`),
|
|
|
ADD UNIQUE INDEX `uk_group_recharge_amount` (`group_id`, `recharge_amount`);
|