Files
youlai-boot/sql/menu_update_manager.sql
T

69 lines
3.5 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ----------------------------------------------------------------------------
-- 更新管理 菜单初始化脚本(可重复执行 / 幂等)
--
-- 依赖
-- 1. 前端页面 vue3-element-admin-ttstd/src/views/update/{channel,global,gray,save-flow,hot}/index.vue
-- 2. 后端接口 com.youlai.boot.app.update.controller.*(/api/v1/app/update/**)
--
-- 说明
-- - 路由改为后端菜单动态下发,前端 src/router/index.ts 不再保留 /update 静态路由
-- - 目录(type='C')的 component 必须是 'Layout',否则不会套后台布局
-- - 菜单(type='M')的 component 为相对 src/views/ 的页面路径,省略 .vue 后缀
-- - 更新模块后端接口暂未使用 @PreAuthorize 做按钮级鉴权,因此本脚本只建目录和页面菜单;
-- 后续补充接口权限时,再按 menu_device_sn.sql 的方式追加 type='B' 按钮行
-- - 菜单权限每次请求实时查库,执行后重新登录或刷新页面即可生效
-- ----------------------------------------------------------------------------
-- 1. 定位或创建「更新管理」目录(按路由路径唯一标识)
SET @parent_id = (SELECT `id` FROM `sys_menu` WHERE `route_path` = '/update' AND `type` = 'C' LIMIT 1);
INSERT INTO `sys_menu`
(`parent_id`, `tree_path`, `name`, `type`, `route_name`, `route_path`, `component`,
`perm`, `keep_alive`, `visible`, `sort`, `icon`, `redirect`,
`create_time`, `update_time`, `params`)
SELECT 0, '0', '更新管理', 'C', '', '/update', 'Layout',
NULL, NULL, 1, 9, 'el-icon-Refresh', '/update/channel',
now(), now(), NULL
FROM DUAL
WHERE NOT EXISTS (
SELECT 1 FROM `sys_menu` WHERE `route_path` = '/update' AND `type` = 'C'
);
SET @parent_id = (SELECT `id` FROM `sys_menu` WHERE `route_path` = '/update' AND `type` = 'C' LIMIT 1);
-- 2. 创建 5 个页面菜单(按 component 唯一标识,已存在则跳过)
INSERT INTO `sys_menu`
(`parent_id`, `tree_path`, `name`, `type`, `route_name`, `route_path`, `component`,
`perm`, `keep_alive`, `visible`, `sort`, `icon`, `redirect`,
`create_time`, `update_time`, `params`)
SELECT @parent_id, CONCAT('0,', @parent_id),
t.`name`, 'M', t.`route_name`, t.`route_path`, t.`component`,
NULL, 1, 1, t.`sort`, t.`icon`, NULL,
now(), now(), NULL
FROM (
SELECT '渠道管理' AS `name`, 'UpdateChannel' AS `route_name`, 'channel' AS `route_path`,
'update/channel/index' AS `component`, 1 AS `sort`, 'el-icon-Connection' AS `icon`
UNION ALL
SELECT '全局更新', 'UpdateGlobal', 'global', 'update/global/index', 2, 'el-icon-Globe'
UNION ALL
SELECT '灰度更新', 'UpdateGray', 'gray', 'update/gray/index', 3, 'el-icon-Picture'
UNION ALL
SELECT '省流更新', 'UpdateSaveFlow', 'save-flow', 'update/save-flow/index', 4, 'el-icon-DataLine'
UNION ALL
SELECT '热更新', 'UpdateHot', 'hot', 'update/hot/index', 5, 'el-icon-Loading'
) t
WHERE @parent_id IS NOT NULL
AND NOT EXISTS (
SELECT 1 FROM `sys_menu` m WHERE m.`component` = t.`component`
);
-- 3. 热更新页目前为占位页,先隐藏菜单;页面补齐后改为 visible = 1
UPDATE `sys_menu` SET `visible` = 0 WHERE `component` = 'update/hot/index';
-- 4. 授权给 ADMIN 角色(role_id = 2;如实际角色 id 不同请修改)
-- 目录与页面菜单一并授权,保证侧边栏可见
INSERT IGNORE INTO `sys_role_menu` (`role_id`, `menu_id`)
SELECT 2, `id`
FROM `sys_menu`
WHERE `id` = @parent_id OR `parent_id` = @parent_id;