migrate_pl_menu_groups.sql 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. -- 运输管理菜单二级分组(与 web-admin pl.ts 对齐)
  2. -- 1. 新增 6 个二级目录
  3. -- 2. 调整三级菜单 parent_id / 名称 / 排序
  4. -- 3. 为已有叶子权限的角色补全二级目录 role_menu
  5. -- ── 1. 二级分组目录 ──
  6. INSERT INTO sys_menu (
  7. id, menu_name, parent_id, menu_type, path, component, perms,
  8. is_frame, visible, status, tenant_no, order_num, remark,
  9. create_by, create_dept_id, create_time, update_by, update_time, del_flag
  10. ) VALUES
  11. ('PL_GROUP_PLAN', '运输计划', 'PL_MENU_ROOT', 'M', 'plan-module', NULL, NULL, 1, '1', '1', 'shanxia2.0', 1, NULL, 'system', '', NOW(), NULL, NOW(), 0),
  12. ('PL_GROUP_CERT', '购买证上传', 'PL_MENU_ROOT', 'M', 'cert-upload', NULL, NULL, 1, '1', '1', 'shanxia2.0', 2, NULL, 'system', '', NOW(), NULL, NOW(), 0),
  13. ('PL_GROUP_FREIGHT', '运输费用', 'PL_MENU_ROOT', 'M', 'freight-fee', NULL, NULL, 1, '1', '1', 'shanxia2.0', 3, NULL, 'system', '', NOW(), NULL, NOW(), 0),
  14. ('PL_GROUP_VEHICLE', '车辆管理', 'PL_MENU_ROOT', 'M', 'vehicle-mgmt', NULL, NULL, 1, '1', '1', 'shanxia2.0', 4, NULL, 'system', '', NOW(), NULL, NOW(), 0),
  15. ('PL_GROUP_DOC', '证件提醒', 'PL_MENU_ROOT', 'M', 'document-reminder-module', NULL, NULL, 1, '1', '1', 'shanxia2.0', 5, NULL, 'system', '', NOW(), NULL, NOW(), 0),
  16. ('PL_GROUP_BASE', '基础信息库', 'PL_MENU_ROOT', 'M', 'base-info', NULL, NULL, 1, '1', '1', 'shanxia2.0', 6, NULL, 'system', '', NOW(), NULL, NOW(), 0)
  17. ON DUPLICATE KEY UPDATE
  18. menu_name = VALUES(menu_name),
  19. parent_id = VALUES(parent_id),
  20. path = VALUES(path),
  21. order_num = VALUES(order_num),
  22. update_time = NOW();
  23. -- ── 2. 三级菜单挂到对应分组 ──
  24. UPDATE sys_menu SET parent_id = 'PL_GROUP_PLAN', order_num = 1, update_time = NOW()
  25. WHERE id = 'PL_PLAN' AND del_flag = 0;
  26. UPDATE sys_menu SET parent_id = 'PL_GROUP_PLAN', order_num = 2, update_time = NOW()
  27. WHERE id = 'PL_PLAN_ARCHIVE' AND del_flag = 0;
  28. UPDATE sys_menu SET parent_id = 'PL_GROUP_CERT', menu_name = '购买证上传', order_num = 1, update_time = NOW()
  29. WHERE id = 'PL_PLAN_CERT' AND del_flag = 0;
  30. UPDATE sys_menu SET parent_id = 'PL_GROUP_FREIGHT', order_num = 1, update_time = NOW()
  31. WHERE id = 'PL_FREIGHT' AND del_flag = 0;
  32. UPDATE sys_menu SET parent_id = 'PL_GROUP_FREIGHT', order_num = 2, update_time = NOW()
  33. WHERE id = 'PL_FREIGHT_APPROVAL' AND del_flag = 0;
  34. UPDATE sys_menu SET parent_id = 'PL_GROUP_FREIGHT', order_num = 3, update_time = NOW()
  35. WHERE id = 'PL_FREIGHT_DISBURSE_MENU' AND del_flag = 0;
  36. UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 1, update_time = NOW()
  37. WHERE id = 'PL_VEH_RECHARGE_APPLY' AND del_flag = 0;
  38. UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 2, update_time = NOW()
  39. WHERE id = 'PL_VEH_RECHARGE_RECORD' AND del_flag = 0;
  40. UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 3, update_time = NOW()
  41. WHERE id = 'PL_VEH_MAINT_APPLY' AND del_flag = 0;
  42. UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 4, update_time = NOW()
  43. WHERE id = 'PL_VEH_MAINT_PROCESS' AND del_flag = 0;
  44. UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 5, update_time = NOW()
  45. WHERE id = 'PL_VEH_UREA_APPLY' AND del_flag = 0;
  46. UPDATE sys_menu SET parent_id = 'PL_GROUP_VEHICLE', order_num = 6, update_time = NOW()
  47. WHERE id = 'PL_VEH_UREA_DISBURSE' AND del_flag = 0;
  48. UPDATE sys_menu SET parent_id = 'PL_GROUP_DOC', order_num = 1, update_time = NOW()
  49. WHERE id = 'PL_DOC_REMINDER' AND del_flag = 0;
  50. UPDATE sys_menu SET order_num = 6, update_time = NOW()
  51. WHERE id = 'PL_GROUP_BASE' AND del_flag = 0;
  52. UPDATE sys_menu SET parent_id = 'PL_GROUP_BASE', menu_name = '承运商信息', order_num = 1, update_time = NOW()
  53. WHERE id = 'PL_CARRIER' AND del_flag = 0;
  54. UPDATE sys_menu SET parent_id = 'PL_GROUP_BASE', menu_name = '全部车辆信息', order_num = 2, update_time = NOW()
  55. WHERE id = 'PL_VEHICLE' AND del_flag = 0;
  56. UPDATE sys_menu SET parent_id = 'PL_GROUP_BASE', order_num = 3, update_time = NOW()
  57. WHERE id = 'PL_SELF_VEHICLE' AND del_flag = 0;
  58. UPDATE sys_menu SET parent_id = 'PL_GROUP_BASE', menu_name = '驾押人员信息', order_num = 4, update_time = NOW()
  59. WHERE id = 'PL_DRIVER' AND del_flag = 0;
  60. UPDATE sys_menu SET parent_id = 'PL_GROUP_BASE', menu_name = '运输地址库', order_num = 5, update_time = NOW()
  61. WHERE id = 'PL_TRANSPORT_ADDRESS' AND del_flag = 0;
  62. -- ── 3. 角色已授权叶子菜单时,补全二级目录(及运输管理根) ──
  63. INSERT INTO sys_role_menu (
  64. id, role_id, menu_id, tenant_no, order_num, remark,
  65. create_by, create_dept_id, create_time, update_by, update_time, del_flag
  66. )
  67. SELECT DISTINCT
  68. CONCAT('PLGRM_', SUBSTRING(MD5(CONCAT(rm.role_id, '-', grp.id)), 1, 24)),
  69. rm.role_id,
  70. grp.id,
  71. COALESCE(rm.tenant_no, 'shanxia2.0'),
  72. 0,
  73. 'pl menu group auto grant',
  74. 'system',
  75. '',
  76. NOW(),
  77. NULL,
  78. NOW(),
  79. 0
  80. FROM sys_role_menu rm
  81. INNER JOIN sys_menu leaf ON leaf.id = rm.menu_id AND leaf.del_flag = 0
  82. INNER JOIN sys_menu grp ON grp.id = leaf.parent_id AND grp.id LIKE 'PL_GROUP_%' AND grp.del_flag = 0
  83. WHERE rm.del_flag = 0
  84. AND NOT EXISTS (
  85. SELECT 1
  86. FROM sys_role_menu x
  87. WHERE x.role_id = rm.role_id
  88. AND x.menu_id = grp.id
  89. AND x.del_flag = 0
  90. );
  91. INSERT INTO sys_role_menu (
  92. id, role_id, menu_id, tenant_no, order_num, remark,
  93. create_by, create_dept_id, create_time, update_by, update_time, del_flag
  94. )
  95. SELECT DISTINCT
  96. CONCAT('PLGRR_', SUBSTRING(MD5(CONCAT(rm.role_id, '-PL_MENU_ROOT')), 1, 24)),
  97. rm.role_id,
  98. 'PL_MENU_ROOT',
  99. COALESCE(rm.tenant_no, 'shanxia2.0'),
  100. 0,
  101. 'pl menu root auto grant',
  102. 'system',
  103. '',
  104. NOW(),
  105. NULL,
  106. NOW(),
  107. 0
  108. FROM sys_role_menu rm
  109. INNER JOIN sys_menu m ON m.id = rm.menu_id AND m.del_flag = 0
  110. WHERE rm.del_flag = 0
  111. AND (
  112. m.id = 'PL_MENU_ROOT'
  113. OR m.parent_id = 'PL_MENU_ROOT'
  114. OR m.parent_id IN (
  115. 'PL_GROUP_PLAN', 'PL_GROUP_CERT', 'PL_GROUP_FREIGHT', 'PL_GROUP_VEHICLE', 'PL_GROUP_DOC', 'PL_GROUP_BASE'
  116. )
  117. OR EXISTS (
  118. SELECT 1 FROM sys_menu p
  119. WHERE p.id = m.parent_id
  120. AND p.parent_id IN (
  121. 'PL_GROUP_PLAN', 'PL_GROUP_CERT', 'PL_GROUP_FREIGHT', 'PL_GROUP_VEHICLE', 'PL_GROUP_DOC', 'PL_GROUP_BASE'
  122. )
  123. AND p.del_flag = 0
  124. )
  125. )
  126. AND NOT EXISTS (
  127. SELECT 1
  128. FROM sys_role_menu x
  129. WHERE x.role_id = rm.role_id
  130. AND x.menu_id = 'PL_MENU_ROOT'
  131. AND x.del_flag = 0
  132. );