2026-10-17-mini-pl-plan-cert-webview-menus.sql 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. -- 小程序运输管理 → 危化品证上传(独立 H5)。MySQL 5.7。
  2. -- 2026-10-17 已只读确认测试库:1(移动端) → MINI_PL_ROOT(运输管理)。
  3. -- 执行前备份 sys_menu / sys_role_menu,并确认目标库及下面的父级查询返回一行。
  4. -- 不新建/更改父级,不改变 Web 菜单和业务表,不额外授予业务写权限。
  5. SET NAMES utf8mb4;
  6. START TRANSACTION;
  7. SELECT p.id, p.menu_name, p.parent_id, p.tenant_no
  8. FROM sys_menu p
  9. JOIN sys_menu root ON root.id = p.parent_id
  10. WHERE p.id = 'MINI_PL_ROOT' AND p.parent_id = '1'
  11. AND p.path = '/mini/pl' AND p.tenant_no = 'shanxia2.0' AND p.del_flag = 0
  12. AND root.path = '/mini' AND root.parent_id = '0'
  13. AND root.tenant_no = p.tenant_no AND root.del_flag = 0;
  14. INSERT INTO sys_menu (
  15. id, menu_name, parent_id, menu_type, path, component, perms,
  16. is_frame, visible, status, tenant_no, order_num, remark,
  17. create_by, create_dept_id, create_time, update_by, update_time, del_flag
  18. )
  19. SELECT
  20. '329823eb-e3af-49b2-b656-08f2c2a713f3', '危化品证上传', p.id, 'C', 'mp-webview', NULL,
  21. 'mini:pl:plan-cert:list', 1, '1', '1', p.tenant_no, 5,
  22. '小程序 WebView 危化品证上传', 'system', '', NOW(), NULL, NOW(), 0
  23. FROM sys_menu p
  24. JOIN sys_menu root ON root.id = p.parent_id
  25. WHERE p.id = 'MINI_PL_ROOT' AND p.parent_id = '1'
  26. AND p.path = '/mini/pl' AND p.tenant_no = 'shanxia2.0' AND p.del_flag = 0
  27. AND root.path = '/mini' AND root.parent_id = '0'
  28. AND root.tenant_no = p.tenant_no AND root.del_flag = 0
  29. ON DUPLICATE KEY UPDATE visible = '1', status = '1', del_flag = 0, update_time = NOW();
  30. -- 随已有 Web 列表权限角色补齐移动根、运输目录、叶子;不依赖历史 Web 菜单 ID。
  31. INSERT INTO sys_role_menu (
  32. id, role_id, menu_id, tenant_no, order_num, remark,
  33. create_by, create_dept_id, create_time, update_by, update_time, del_flag
  34. )
  35. SELECT
  36. MD5(CONCAT(r.id, '|', target.menu_id, '|mini-pl-plan-cert-webview|v1')),
  37. r.id, target.menu_id, r.tenant_no, 0, '小程序危化品证上传:随 Web 列表权限补绑',
  38. 'system', '', NOW(), NULL, NOW(), 0
  39. FROM sys_role r
  40. CROSS JOIN (
  41. SELECT '1' AS menu_id UNION ALL SELECT 'MINI_PL_ROOT'
  42. UNION ALL SELECT '329823eb-e3af-49b2-b656-08f2c2a713f3'
  43. ) target
  44. WHERE r.del_flag = 0 AND r.tenant_no = 'shanxia2.0'
  45. AND EXISTS (
  46. SELECT 1 FROM sys_menu leaf
  47. JOIN sys_menu p ON p.id = leaf.parent_id
  48. JOIN sys_menu root ON root.id = p.parent_id
  49. WHERE leaf.id = '329823eb-e3af-49b2-b656-08f2c2a713f3'
  50. AND leaf.perms = 'mini:pl:plan-cert:list' AND leaf.del_flag = 0
  51. AND leaf.tenant_no = r.tenant_no
  52. AND p.id = 'MINI_PL_ROOT' AND p.parent_id = '1' AND p.path = '/mini/pl'
  53. AND p.tenant_no = r.tenant_no AND p.del_flag = 0
  54. AND root.path = '/mini' AND root.parent_id = '0'
  55. AND root.tenant_no = r.tenant_no AND root.del_flag = 0
  56. )
  57. AND EXISTS (
  58. SELECT 1 FROM sys_role_menu web
  59. JOIN sys_menu m ON m.id = web.menu_id AND m.del_flag = 0
  60. WHERE web.role_id = r.id AND web.del_flag = 0
  61. AND web.tenant_no = r.tenant_no AND m.tenant_no = r.tenant_no
  62. AND m.perms = 'pl:plan-cert:list'
  63. )
  64. AND NOT EXISTS (
  65. SELECT 1 FROM sys_role_menu existing
  66. WHERE existing.role_id = r.id AND existing.menu_id = target.menu_id
  67. AND existing.tenant_no = r.tenant_no AND existing.del_flag = 0
  68. )
  69. ON DUPLICATE KEY UPDATE del_flag = 0, update_time = NOW();
  70. COMMIT;
  71. SELECT id, menu_name, parent_id, perms, visible, status, del_flag
  72. FROM sys_menu WHERE id = '329823eb-e3af-49b2-b656-08f2c2a713f3';