diff --git a/sql/mysql/lms_daily_plan_menu.sql b/sql/mysql/lms_daily_plan_menu.sql index 1ee9b71c..b4ba5cdf 100644 --- a/sql/mysql/lms_daily_plan_menu.sql +++ b/sql/mysql/lms_daily_plan_menu.sql @@ -1,8 +1,42 @@ -- LMS 日计划菜单及按钮权限,固定基础数据使用预留的 2093 号段。 --- 兼容已经执行过旧组件路径的环境,优先修正固定菜单标识,也兼容按旧 component 匹配的数据。 + +-- 在 LMS 根菜单下新增日计划目录,与“管芯库管理”同级,统一收纳管理页和作业页。 +INSERT INTO system_menu + (id, name, permission, type, sort, parent_id, path, icon, component, component_name, + status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) +SELECT 2093000000000000090, '日计划管理', '', 1, 20, lms.id, 'daily-plan-management', + 'ep:calendar', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0' +FROM system_menu lms +WHERE lms.path = '/lms' AND lms.deleted = b'0' + AND NOT EXISTS ( + SELECT 1 FROM system_menu + WHERE (id = 2093000000000000090 + OR (parent_id = lms.id AND path = 'daily-plan-management')) AND deleted = b'0' + ); + +-- 兼容已执行过上一版脚本的环境,将日计划目录从“管芯库管理”迁移到 LMS 根菜单下。 +UPDATE system_menu directory +JOIN system_menu lms ON lms.path = '/lms' AND lms.deleted = b'0' +SET directory.parent_id = lms.id, + directory.updater = '1', + directory.update_time = NOW() +WHERE directory.deleted = b'0' + AND directory.type = 1 + AND directory.path = 'daily-plan-management'; + +SET @lms_daily_plan_directory_id = COALESCE( + (SELECT fixed.id FROM system_menu fixed + WHERE fixed.id = 2093000000000000090 AND fixed.path = 'daily-plan-management' + AND fixed.type = 1 AND fixed.deleted = b'0'), + (SELECT MIN(fallback.id) FROM system_menu fallback + WHERE fallback.path = 'daily-plan-management' AND fallback.type = 1 AND fallback.deleted = b'0') +); + +-- 兼容已执行旧脚本的环境:修正组件路径,并把两个页面迁移到新目录。 UPDATE system_menu SET component = 'lms/daily-plan/management/index', component_name = 'LmsDailyPlanManagement', + parent_id = @lms_daily_plan_directory_id, updater = '1', update_time = NOW() WHERE deleted = b'0' @@ -11,6 +45,7 @@ WHERE deleted = b'0' UPDATE system_menu SET component = 'lms/daily-plan/work/index', component_name = 'LmsDailyPlanWork', + parent_id = @lms_daily_plan_directory_id, updater = '1', update_time = NOW() WHERE deleted = b'0' @@ -22,8 +57,7 @@ INSERT INTO system_menu SELECT 2093000000000000100, '日计划管理', '', 2, 20, parent.id, 'daily-plan', '', 'lms/daily-plan/management/index', 'LmsDailyPlanManagement', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0' FROM system_menu parent -JOIN system_menu lms ON lms.id = parent.parent_id AND lms.path = '/lms' AND lms.deleted = b'0' -WHERE parent.path = 'tube-library' AND parent.deleted = b'0' +WHERE parent.path = 'daily-plan-management' AND parent.type = 1 AND parent.deleted = b'0' AND NOT EXISTS ( SELECT 1 FROM system_menu WHERE (id=2093000000000000100 OR component='lms/daily-plan/management/index') AND deleted=b'0' @@ -35,8 +69,7 @@ INSERT INTO system_menu SELECT 2093000000000000101, '日计划作业', '', 2, 30, parent.id, 'daily-plan-work', '', 'lms/daily-plan/work/index', 'LmsDailyPlanWork', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0' FROM system_menu parent -JOIN system_menu lms ON lms.id = parent.parent_id AND lms.path = '/lms' AND lms.deleted = b'0' -WHERE parent.path = 'tube-library' AND parent.deleted = b'0' +WHERE parent.path = 'daily-plan-management' AND parent.type = 1 AND parent.deleted = b'0' AND NOT EXISTS ( SELECT 1 FROM system_menu WHERE (id=2093000000000000101 OR component='lms/daily-plan/work/index') AND deleted=b'0' @@ -134,17 +167,33 @@ WHERE work_role.deleted=b'0' AND existing.tenant_id=work_role.tenant_id AND existing.deleted=b'0' ); --- 已授权管芯库现有子菜单的角色同步获得管芯库父目录权限。 +-- 已授权任一日计划页面的角色同步获得新的“日计划管理”目录权限。 INSERT INTO system_role_menu (role_id, menu_id, creator, create_time, updater, update_time, deleted, tenant_id) -SELECT DISTINCT child_role.role_id, parent.id, '1', NOW(), '1', NOW(), b'0', child_role.tenant_id -FROM system_role_menu child_role -JOIN system_menu child ON child.id=child_role.menu_id AND child.deleted=b'0' -JOIN system_menu parent ON parent.id=child.parent_id AND parent.path='tube-library' AND parent.deleted=b'0' -JOIN system_menu lms ON lms.id=parent.parent_id AND lms.path='/lms' AND lms.deleted=b'0' -WHERE child_role.deleted=b'0' +SELECT DISTINCT page_role.role_id, directory.id, '1', NOW(), '1', NOW(), b'0', page_role.tenant_id +FROM system_role_menu page_role +JOIN system_menu page ON page.id = page_role.menu_id AND page.deleted = b'0' + AND page.component IN ('lms/daily-plan/management/index', 'lms/daily-plan/work/index') +JOIN system_menu directory ON directory.id = page.parent_id + AND directory.path = 'daily-plan-management' AND directory.type = 1 AND directory.deleted = b'0' +WHERE page_role.deleted = b'0' AND NOT EXISTS ( - SELECT 1 FROM system_role_menu parent_role - WHERE parent_role.role_id=child_role.role_id AND parent_role.menu_id=parent.id - AND parent_role.tenant_id=child_role.tenant_id AND parent_role.deleted=b'0' + SELECT 1 FROM system_role_menu existing + WHERE existing.role_id = page_role.role_id AND existing.menu_id = directory.id + AND existing.tenant_id = page_role.tenant_id AND existing.deleted = b'0' + ); + +-- 已授权“日计划管理”目录的角色同步获得 LMS 根菜单权限。 +INSERT INTO system_role_menu + (role_id, menu_id, creator, create_time, updater, update_time, deleted, tenant_id) +SELECT DISTINCT directory_role.role_id, lms.id, '1', NOW(), '1', NOW(), b'0', directory_role.tenant_id +FROM system_role_menu directory_role +JOIN system_menu directory ON directory.id = directory_role.menu_id + AND directory.path = 'daily-plan-management' AND directory.deleted = b'0' +JOIN system_menu lms ON lms.id = directory.parent_id AND lms.path = '/lms' AND lms.deleted = b'0' +WHERE directory_role.deleted = b'0' + AND NOT EXISTS ( + SELECT 1 FROM system_role_menu root_role + WHERE root_role.role_id = directory_role.role_id AND root_role.menu_id = lms.id + AND root_role.tenant_id = directory_role.tenant_id AND root_role.deleted = b'0' );