-- ---------------------------------------------------------------------------- -- 更新管理 菜单初始化脚本(可重复执行 / 幂等) -- -- 依赖 -- 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;