-- 菜单改名,并把 Web「合法使用证明」从运输证件管理的页签提升为同级目录。 -- MySQL 5.7。只调整 shanxia2.0 的菜单名称、父子关系和排序,不恢复已软删除菜单,不改业务数据。 -- 可重复执行。已有「合法使用证明」角色保留,并补齐新目录授权。 SET NAMES utf8mb4; START TRANSACTION; UPDATE sys_menu SET menu_name='运输证件管理', update_time=NOW() WHERE tenant_no='shanxia2.0' AND del_flag=0 AND perms='mini:pl:plan-cert:list'; UPDATE sys_menu SET menu_name='运输证件管理', update_time=NOW() WHERE tenant_no='shanxia2.0' AND del_flag=0 AND menu_type='M' AND parent_id='PL_MENU_ROOT' AND path='cert-upload'; UPDATE sys_menu SET menu_name='人车证件提醒', update_time=NOW() WHERE tenant_no='shanxia2.0' AND del_flag=0 AND ( id IN ('PL_GROUP_DOC', 'PL_DOC_REMINDER') OR (menu_type='M' AND parent_id='PL_MENU_ROOT' AND path='document-reminder-module') OR (menu_type='C' AND perms='pl:document:list' AND path='document-reminder') ); INSERT INTO sys_menu ( id, menu_name, parent_id, menu_type, path, component, perms, is_frame, visible, status, tenant_no, order_num, remark, create_by, create_dept_id, create_time, update_time, del_flag ) SELECT 'PL_GROUP_LEGAL', '合法使用证明', parent.id, 'M', 'legal-use-module', NULL, NULL, 1, '1', '1', parent.tenant_no, COALESCE(cert.order_num, plan_leaf.order_num, 3) + 1, '待调整排序', 'system', '', NOW(), NOW(), 0 FROM sys_menu parent JOIN sys_menu root ON root.id=parent.parent_id AND root.tenant_no=parent.tenant_no AND root.del_flag=0 LEFT JOIN sys_menu cert ON cert.parent_id=parent.id AND cert.tenant_no=parent.tenant_no AND cert.del_flag=0 AND cert.menu_type='M' AND cert.path='cert-upload' LEFT JOIN sys_menu plan_leaf ON plan_leaf.parent_id=parent.id AND plan_leaf.tenant_no=parent.tenant_no AND plan_leaf.del_flag=0 AND plan_leaf.menu_type='C' AND plan_leaf.perms='pl:plan-cert:list' AND plan_leaf.path='plan-cert' WHERE parent.id='PL_MENU_ROOT' AND parent.path='/pl' AND parent.del_flag=0 AND parent.tenant_no='shanxia2.0' AND root.parent_id='0' AND root.path='/web' AND root.del_flag=0 AND NOT EXISTS ( SELECT 1 FROM sys_menu existing WHERE existing.id='PL_GROUP_LEGAL' OR (existing.tenant_no=parent.tenant_no AND existing.parent_id=parent.id AND existing.path='legal-use-module' AND existing.del_flag=0) ); UPDATE sys_menu sibling JOIN sys_menu legal ON legal.id='PL_GROUP_LEGAL' AND legal.del_flag=0 AND legal.parent_id=sibling.parent_id AND legal.tenant_no=sibling.tenant_no AND legal.remark='待调整排序' SET sibling.order_num=sibling.order_num + 1, sibling.update_time=NOW() WHERE sibling.tenant_no='shanxia2.0' AND sibling.del_flag=0 AND sibling.id<>'PL_GROUP_LEGAL' AND sibling.order_num>=legal.order_num; UPDATE sys_menu SET remark='与运输证件管理平级的合法使用证明', update_time=NOW() WHERE id='PL_GROUP_LEGAL' AND tenant_no='shanxia2.0' AND del_flag=0 AND remark='待调整排序'; UPDATE sys_menu leaf JOIN sys_menu folder ON folder.id='PL_GROUP_LEGAL' AND folder.tenant_no=leaf.tenant_no AND folder.del_flag=0 AND folder.menu_type='M' AND folder.parent_id='PL_MENU_ROOT' SET leaf.parent_id=folder.id, leaf.order_num=1, leaf.update_time=NOW() WHERE leaf.tenant_no='shanxia2.0' AND leaf.del_flag=0 AND leaf.menu_type='C' AND leaf.perms='pl:legal-use-document:list' AND leaf.path='legal-use-document'; INSERT INTO sys_role_menu ( id, role_id, menu_id, tenant_no, order_num, remark, create_by, create_dept_id, create_time, update_time, del_flag ) SELECT MD5(CONCAT(access_row.role_id, '|', folder.id, '|legal-use-sibling|v1')), access_row.role_id, folder.id, access_row.tenant_no, 0, '合法使用证明提升为同级菜单:补齐目录授权', 'system', '', NOW(), NOW(), 0 FROM sys_role_menu access_row JOIN sys_menu leaf ON leaf.id=access_row.menu_id AND leaf.tenant_no=access_row.tenant_no AND leaf.del_flag=0 JOIN sys_menu folder ON folder.id='PL_GROUP_LEGAL' AND folder.tenant_no=leaf.tenant_no AND folder.del_flag=0 WHERE access_row.del_flag=0 AND access_row.tenant_no='shanxia2.0' AND leaf.menu_type='C' AND leaf.perms='pl:legal-use-document:list' AND leaf.path='legal-use-document' AND NOT EXISTS ( SELECT 1 FROM sys_role_menu existing WHERE existing.role_id=access_row.role_id AND existing.menu_id=folder.id AND existing.tenant_no=access_row.tenant_no AND existing.del_flag=0 ) ON DUPLICATE KEY UPDATE del_flag=0, update_time=NOW(); COMMIT;