铜陵经侦
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

77 lines
2.5 KiB

-- 系统设置:下线 SmartAdmin 框架演示/运维类菜单
-- reload、文件管理、单号管理、功能Demo、文档中心、代码生成(含子菜单与功能点)
BEGIN;
CREATE TEMP TABLE IF NOT EXISTS tmp_hide_menu (menu_id BIGINT PRIMARY KEY) ON COMMIT DROP;
TRUNCATE tmp_hide_menu;
-- 1) 按名称/路径/组件匹配根菜单
INSERT INTO tmp_hide_menu (menu_id)
SELECT menu_id FROM t_menu m
WHERE m.deleted_flag = 0
AND (
m.menu_name IN ('Reload', 'reload', '文件管理', '单号管理', '功能Demo', '功能demo', '文档中心', '代码生成')
OR m.path LIKE '/support/reload%'
OR m.path LIKE '/reload%'
OR m.path LIKE '/support/file%'
OR m.path LIKE '/file%'
OR m.path LIKE '/support/serial-number%'
OR m.path LIKE '/serial-number%'
OR m.path LIKE '/support/code-generator%'
OR m.path LIKE '/code-generator%'
OR m.path LIKE '/support/help-doc%'
OR m.path LIKE '/help-doc%'
OR m.component LIKE '%/support/reload/%'
OR m.component LIKE '%/support/file/%'
OR m.component LIKE '%/support/serial-number/%'
OR m.component LIKE '%/support/code-generator/%'
OR m.component LIKE '%/support/help-doc/%'
)
AND NOT EXISTS (SELECT 1 FROM tmp_hide_menu t WHERE t.menu_id = m.menu_id);
-- 2) 递归纳入全部下级菜单与功能点
DO $$
DECLARE
v_added INT;
BEGIN
LOOP
INSERT INTO tmp_hide_menu (menu_id)
SELECT m.menu_id
FROM t_menu m
INNER JOIN tmp_hide_menu p ON m.parent_id = p.menu_id
WHERE m.deleted_flag = 0
AND NOT EXISTS (SELECT 1 FROM tmp_hide_menu x WHERE x.menu_id = m.menu_id);
GET DIAGNOSTICS v_added = ROW_COUNT;
EXIT WHEN v_added = 0;
END LOOP;
END $$;
-- 3) 软删除菜单
UPDATE t_menu
SET deleted_flag = 1,
visible_flag = 0,
disabled_flag = 1,
update_time = NOW()
WHERE menu_id IN (SELECT menu_id FROM tmp_hide_menu);
-- 4) 清理角色授权
DELETE FROM t_role_menu
WHERE menu_id IN (SELECT menu_id FROM tmp_hide_menu);
COMMIT;
-- 验证(应无结果)
SELECT menu_id, menu_name, path, parent_id
FROM t_menu
WHERE deleted_flag = 0
AND (
menu_name IN ('Reload', 'reload', '文件管理', '单号管理', '功能Demo', '功能demo', '文档中心', '代码生成')
OR path LIKE '/support/reload%'
OR path LIKE '/support/file%'
OR path LIKE '/support/serial-number%'
OR path LIKE '/support/code-generator%'
OR path LIKE '/support/help-doc%'
OR path LIKE '/help-doc%'
)
ORDER BY menu_id;