-- =====================================================
-- 设备模版管理 — 增量升级脚本 (v1 → v2)
-- 执行时间: 2026-07-23
-- 说明: 从"设备层模版管理"升级为"设备模版管理"
--       支持 LAYER(层模版) 和 CABINET(柜模版) 两种类型
-- 注意: 本脚本幂等，可重复执行
-- =====================================================

-- =========================================================
-- 1. t_layer_template 表结构变更
-- =========================================================

-- 1.1 添加 template_type 列（如果不存在则添加）
--     存量数据全部标记为 LAYER（旧版只有层模版）
SELECT COUNT(*) INTO @col_exists
FROM information_schema.columns
WHERE table_schema = DATABASE()
  AND table_name = 't_layer_template'
  AND column_name = 'template_type';

SET @sql = IF(@col_exists = 0,
    'ALTER TABLE `t_layer_template` ADD COLUMN `template_type` VARCHAR(20) DEFAULT ''LAYER'' COMMENT ''模版类型: LAYER-层模版, CABINET-柜模版'' AFTER `device_type`',
    'SELECT ''template_type 列已存在，跳过'' AS message');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- 1.2 存量数据回填（将 NULL 值设为默认值 LAYER）
UPDATE `t_layer_template` SET `template_type` = 'LAYER' WHERE `template_type` IS NULL;

-- 1.3 更新表注释
ALTER TABLE `t_layer_template` COMMENT = '设备模版表（支持层模版和柜模版）';

-- =========================================================
-- 2. 菜单表变更
-- =========================================================

-- 2.1 菜单名称更新
UPDATE `t_menu`
SET `title` = '设备模版管理'
WHERE `name` = 'LayerTemplate'
  AND `title` = '设备层模版管理'
  AND `deleted` = 0;

-- =========================================================
-- 3. 权限表变更
-- =========================================================

-- 3.1 权限名称 & 描述更新
UPDATE `t_data_permission`
SET `permission_name` = '创建设备模版',
    `module_name`     = '设备模版管理',
    `description`     = '添加新设备模版'
WHERE `permission_code` = 'layer-template:create'
  AND `permission_name` = '创建层模版';

UPDATE `t_data_permission`
SET `permission_name` = '查询设备模版',
    `module_name`     = '设备模版管理',
    `description`     = '查看设备模版列表和详情'
WHERE `permission_code` = 'layer-template:read'
  AND `permission_name` = '查询层模版';

UPDATE `t_data_permission`
SET `permission_name` = '修改设备模版',
    `module_name`     = '设备模版管理',
    `description`     = '编辑设备模版信息和同步操作'
WHERE `permission_code` = 'layer-template:update'
  AND `permission_name` = '修改层模版';

UPDATE `t_data_permission`
SET `permission_name` = '删除设备模版',
    `module_name`     = '设备模版管理',
    `description`     = '删除设备模版'
WHERE `permission_code` = 'layer-template:delete'
  AND `permission_name` = '删除层模版';

-- =====================================================
-- 执行完成
-- =====================================================
SELECT '✅ 设备模版管理升级 v1→v2 执行完成！' AS message;

-- 验证
SELECT '--- 表结构 ---' AS '';
SHOW COLUMNS FROM `t_layer_template` WHERE Field = 'template_type';
SELECT '--- 存量数据的 template_type 分布 ---' AS '';
SELECT `template_type`, COUNT(*) AS cnt FROM `t_layer_template` WHERE `is_deleted` = 0 GROUP BY `template_type`;
SELECT '--- 菜单标题 ---' AS '';
SELECT `id`, `title` FROM `t_menu` WHERE `name` = 'LayerTemplate' AND `deleted` = 0;
SELECT '--- 权限名称 ---' AS '';
SELECT `permission_code`, `permission_name`, `module_name` FROM `t_data_permission` WHERE `module_code` = 'layer-template';
