Files
shanxia2.0/backend/scripts/migrate_pl_menu_groups.sql
T
2026-07-05 21:31:07 +08:00

155 lines
6.2 KiB
SQL

-- 运输管理菜单二级分组(与 web-admin pl.ts 对齐)
-- 1. 新增 6 个二级目录
-- 2. 调整三级菜单 parent_id / 名称 / 排序
-- 3. 为已有叶子权限的角色补全二级目录 role_menu
-- ── 1. 二级分组目录 ──
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_by, update_time, del_flag
) VALUES
('PL_GROUP_PLAN', '运输计划', 'PL_MENU_ROOT', 'M', 'plan-module', NULL, NULL, 1, '1', '1', 'shanxia2.0', 1, NULL, 'system', '', NOW(), NULL, NOW(), 0),
('PL_GROUP_CERT', '购买证上传', 'PL_MENU_ROOT', 'M', 'cert-upload', NULL, NULL, 1, '1', '1', 'shanxia2.0', 2, NULL, 'system', '', NOW(), NULL, NOW(), 0),
('PL_GROUP_FREIGHT', '运输费用', 'PL_MENU_ROOT', 'M', 'freight-fee', NULL, NULL, 1, '1', '1', 'shanxia2.0', 3, NULL, 'system', '', NOW(), NULL, NOW(), 0),
('PL_GROUP_VEHICLE', '车辆管理', 'PL_MENU_ROOT', 'M', 'vehicle-mgmt', NULL, NULL, 1, '1', '1', 'shanxia2.0', 4, NULL, 'system', '', NOW(), NULL, NOW(), 0),
('PL_GROUP_DOC', '证件提醒', 'PL_MENU_ROOT', 'M', 'document-reminder-module', NULL, NULL, 1, '1', '1', 'shanxia2.0', 5, NULL, 'system', '', NOW(), NULL, NOW(), 0),
('PL_GROUP_BASE', '基础信息库', 'PL_MENU_ROOT', 'M', 'base-info', NULL, NULL, 1, '1', '1', 'shanxia2.0', 6, NULL, 'system', '', NOW(), NULL, NOW(), 0)
ON DUPLICATE KEY UPDATE
menu_name = VALUES(menu_name),
parent_id = VALUES(parent_id),
path = VALUES(path),
order_num = VALUES(order_num),
update_time = NOW();
-- ── 2. 三级菜单挂到对应分组 ──
UPDATE sys_menu SET parent_id = 'PL_GROUP_PLAN', order_num = 1, update_time = NOW()
WHERE id = 'PL_PLAN' AND del_flag = 0;
UPDATE sys_menu SET parent_id = 'PL_GROUP_PLAN', order_num = 2, update_time = NOW()
WHERE id = 'PL_PLAN_ARCHIVE' AND del_flag = 0;
UPDATE sys_menu SET parent_id = 'PL_GROUP_CERT', menu_name = '购买证上传', order_num = 1, update_time = NOW()
WHERE id = 'PL_PLAN_CERT' AND del_flag = 0;
UPDATE sys_menu SET parent_id = 'PL_GROUP_FREIGHT', order_num = 1, update_time = NOW()
WHERE id = 'PL_FREIGHT' AND del_flag = 0;
UPDATE sys_menu SET parent_id = 'PL_GROUP_FREIGHT', order_num = 2, update_time = NOW()
WHERE id = 'PL_FREIGHT_APPROVAL' AND del_flag = 0;
UPDATE sys_menu SET parent_id = 'PL_GROUP_FREIGHT', order_num = 3, update_time = NOW()
WHERE id = 'PL_FREIGHT_DISBURSE_MENU' AND del_flag = 0;
UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 1, update_time = NOW()
WHERE id = 'PL_VEH_RECHARGE_APPLY' AND del_flag = 0;
UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 2, update_time = NOW()
WHERE id = 'PL_VEH_RECHARGE_RECORD' AND del_flag = 0;
UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 3, update_time = NOW()
WHERE id = 'PL_VEH_MAINT_APPLY' AND del_flag = 0;
UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 4, update_time = NOW()
WHERE id = 'PL_VEH_MAINT_PROCESS' AND del_flag = 0;
UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 5, update_time = NOW()
WHERE id = 'PL_VEH_UREA_APPLY' AND del_flag = 0;
UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 6, update_time = NOW()
WHERE id = 'PL_VEH_UREA_DISBURSE' AND del_flag = 0;
UPDATE sys_menu SET parent_id = 'PL_GROUP_DOC', order_num = 1, update_time = NOW()
WHERE id = 'PL_DOC_REMINDER' AND del_flag = 0;
UPDATE sys_menu SET order_num = 6, update_time = NOW()
WHERE id = 'PL_GROUP_BASE' AND del_flag = 0;
UPDATE sys_menu SET parent_id = 'PL_GROUP_BASE', menu_name = '承运商信息', order_num = 1, update_time = NOW()
WHERE id = 'PL_CARRIER' AND del_flag = 0;
UPDATE sys_menu SET parent_id = 'PL_GROUP_BASE', menu_name = '全部车辆信息', order_num = 2, update_time = NOW()
WHERE id = 'PL_VEHICLE' AND del_flag = 0;
UPDATE sys_menu SET parent_id = 'PL_GROUP_BASE', order_num = 3, update_time = NOW()
WHERE id = 'PL_SELF_VEHICLE' AND del_flag = 0;
UPDATE sys_menu SET parent_id = 'PL_GROUP_BASE', menu_name = '驾押人员信息', order_num = 4, update_time = NOW()
WHERE id = 'PL_DRIVER' AND del_flag = 0;
UPDATE sys_menu SET parent_id = 'PL_GROUP_BASE', menu_name = '运输地址库', order_num = 5, update_time = NOW()
WHERE id = 'PL_TRANSPORT_ADDRESS' AND del_flag = 0;
-- ── 3. 角色已授权叶子菜单时,补全二级目录(及运输管理根) ──
INSERT INTO sys_role_menu (
id, role_id, menu_id, tenant_no, order_num, remark,
create_by, create_dept_id, create_time, update_by, update_time, del_flag
)
SELECT DISTINCT
CONCAT('PLGRM_', SUBSTRING(MD5(CONCAT(rm.role_id, '-', grp.id)), 1, 24)),
rm.role_id,
grp.id,
COALESCE(rm.tenant_no, 'shanxia2.0'),
0,
'pl menu group auto grant',
'system',
'',
NOW(),
NULL,
NOW(),
0
FROM sys_role_menu rm
INNER JOIN sys_menu leaf ON leaf.id = rm.menu_id AND leaf.del_flag = 0
INNER JOIN sys_menu grp ON grp.id = leaf.parent_id AND grp.id LIKE 'PL_GROUP_%' AND grp.del_flag = 0
WHERE rm.del_flag = 0
AND NOT EXISTS (
SELECT 1
FROM sys_role_menu x
WHERE x.role_id = rm.role_id
AND x.menu_id = grp.id
AND x.del_flag = 0
);
INSERT INTO sys_role_menu (
id, role_id, menu_id, tenant_no, order_num, remark,
create_by, create_dept_id, create_time, update_by, update_time, del_flag
)
SELECT DISTINCT
CONCAT('PLGRR_', SUBSTRING(MD5(CONCAT(rm.role_id, '-PL_MENU_ROOT')), 1, 24)),
rm.role_id,
'PL_MENU_ROOT',
COALESCE(rm.tenant_no, 'shanxia2.0'),
0,
'pl menu root auto grant',
'system',
'',
NOW(),
NULL,
NOW(),
0
FROM sys_role_menu rm
INNER JOIN sys_menu m ON m.id = rm.menu_id AND m.del_flag = 0
WHERE rm.del_flag = 0
AND (
m.id = 'PL_MENU_ROOT'
OR m.parent_id = 'PL_MENU_ROOT'
OR m.parent_id IN (
'PL_GROUP_PLAN', 'PL_GROUP_CERT', 'PL_GROUP_FREIGHT', 'PL_GROUP_VEHICLE', 'PL_GROUP_DOC', 'PL_GROUP_BASE'
)
OR EXISTS (
SELECT 1 FROM sys_menu p
WHERE p.id = m.parent_id
AND p.parent_id IN (
'PL_GROUP_PLAN', 'PL_GROUP_CERT', 'PL_GROUP_FREIGHT', 'PL_GROUP_VEHICLE', 'PL_GROUP_DOC', 'PL_GROUP_BASE'
)
AND p.del_flag = 0
)
)
AND NOT EXISTS (
SELECT 1
FROM sys_role_menu x
WHERE x.role_id = rm.role_id
AND x.menu_id = 'PL_MENU_ROOT'
AND x.del_flag = 0
);