aslan-server/.deploy/test-deploy/sql/20260713_rocket_config_menu.sql

114 lines
2.8 KiB
SQL

-- Webconsole rocket configuration menu and API permissions.
-- Adds the page under 运营管理/数据配置 and grants it to existing data-config roles.
SET NAMES utf8mb4;
INSERT INTO sys_resource (id, resource_name, mapping, method, auth_type, perm, update_time)
VALUES
(
'rocket:config:list',
'查询火箭配置',
'/admin/rocket/config/list',
'GET',
3,
'rocket:config:list',
NOW()
),
(
'rocket:config:update',
'更新火箭配置',
'/admin/rocket/config/update',
'POST',
3,
'rocket:config:update',
NOW()
)
ON DUPLICATE KEY UPDATE
resource_name = VALUES(resource_name),
mapping = VALUES(mapping),
method = VALUES(method),
auth_type = VALUES(auth_type),
perm = VALUES(perm),
update_time = NOW();
INSERT INTO sys_menu (
parent_id,
menu_name,
path,
router,
menu_type,
icon,
alias,
sort,
status,
create_user,
update_user,
create_time,
update_time
)
SELECT
parent.id,
'火箭配置',
'rocket/config/index',
'rocket/config',
2,
'gift',
'rocket:config',
850,
0,
'0',
'0',
NOW(),
NOW()
FROM sys_menu parent
LEFT JOIN sys_menu existing ON existing.alias = 'rocket:config'
WHERE (parent.alias = 'data:conf' OR parent.menu_name = '数据配置')
AND parent.menu_type = 1
AND existing.id IS NULL
LIMIT 1;
-- 关键逻辑:重复执行时同步菜单字段,并始终归属当前的数据配置目录。
UPDATE sys_menu rocket_menu
JOIN (
SELECT id
FROM sys_menu
WHERE (alias = 'data:conf' OR menu_name = '数据配置')
AND menu_type = 1
LIMIT 1
) parent ON 1 = 1
SET
rocket_menu.parent_id = parent.id,
rocket_menu.menu_name = '火箭配置',
rocket_menu.path = 'rocket/config/index',
rocket_menu.router = 'rocket/config',
rocket_menu.menu_type = 2,
rocket_menu.icon = 'gift',
rocket_menu.sort = 850,
rocket_menu.status = 0,
rocket_menu.update_user = '0',
rocket_menu.update_time = NOW()
WHERE rocket_menu.alias = 'rocket:config';
INSERT INTO sys_menu_resource (menu_id, resource_id)
SELECT menu.id, resource.id
FROM sys_menu menu
JOIN sys_resource resource
ON resource.id IN ('rocket:config:list', 'rocket:config:update')
LEFT JOIN sys_menu_resource existing
ON existing.menu_id = menu.id
AND existing.resource_id = resource.id
WHERE menu.alias = 'rocket:config'
AND existing.id IS NULL;
-- 沿用数据配置目录的现有角色授权,避免将火箭配置开放给无关角色。
INSERT INTO sys_role_menu (role_id, menu_id)
SELECT DISTINCT source_role.role_id, rocket_menu.id
FROM sys_role_menu source_role
JOIN sys_menu source_menu ON source_menu.id = source_role.menu_id
JOIN sys_menu rocket_menu ON rocket_menu.alias = 'rocket:config'
LEFT JOIN sys_role_menu existing
ON existing.role_id = source_role.role_id
AND existing.menu_id = rocket_menu.id
WHERE source_menu.alias = 'data:conf'
AND existing.id IS NULL;