2026-08-09-system-menu-groups.sql 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. -- 系统管理:新增二级目录「系统信息」「临时存放」,并迁移原子菜单 parent_id
  2. -- 幂等可重复执行;与 web-admin/src/router/modules/sqxp.ts 对齐
  3. -- 目录 id:SYSM...010 / SYSM...011
  4. -- 1) 插入二级目录
  5. INSERT INTO `sys_menu` (
  6. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  7. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  8. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  9. )
  10. SELECT
  11. 'SYSM000000000000000000000000000010', '系统信息', 'SYSM000000000000000000000000000001',
  12. 'M', 'info', NULL, NULL, 1, '1', '1', 'shanxia2.0', 1, '系统管理-系统信息分组',
  13. 'system', '', NOW(), NULL, NOW(), 0
  14. FROM DUAL
  15. WHERE NOT EXISTS (
  16. SELECT 1 FROM `sys_menu` WHERE `id` = 'SYSM000000000000000000000000000010' AND `del_flag` = 0
  17. );
  18. INSERT INTO `sys_menu` (
  19. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  20. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  21. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  22. )
  23. SELECT
  24. 'SYSM000000000000000000000000000011', '临时存放', 'SYSM000000000000000000000000000001',
  25. 'M', 'temp', NULL, NULL, 1, '1', '1', 'shanxia2.0', 2, '系统管理-临时存放分组',
  26. 'system', '', NOW(), NULL, NOW(), 0
  27. FROM DUAL
  28. WHERE NOT EXISTS (
  29. SELECT 1 FROM `sys_menu` WHERE `id` = 'SYSM000000000000000000000000000011' AND `del_flag` = 0
  30. );
  31. -- 2) 「系统信息」下菜单
  32. UPDATE `sys_menu`
  33. SET `parent_id` = 'SYSM000000000000000000000000000010',
  34. `update_time` = NOW()
  35. WHERE `del_flag` = 0
  36. AND `id` IN (
  37. '101', -- 租户管理
  38. '102', -- 字典管理
  39. '106', -- 菜单管理
  40. '103', -- 组织管理
  41. '105', -- 角色管理
  42. '104', -- 用户管理
  43. '108', -- 职位管理
  44. 'SYS_OPERLOG' -- 操作日志
  45. );
  46. -- 3) 「临时存放」下菜单(含隐藏附属页)
  47. UPDATE `sys_menu`
  48. SET `parent_id` = 'SYSM000000000000000000000000000011',
  49. `update_time` = NOW()
  50. WHERE `del_flag` = 0
  51. AND `id` IN (
  52. 'SYS_APPROVER_SETTING', -- 报价、合同审批人设置
  53. 'CRM3000000000000000000000000040', -- 主体危化品能力
  54. 'CRM1000000000000000000000000010', -- 线索管理
  55. 'CRM1000000000000000000000000011', -- 线索详情
  56. 'CRM1000000000000000000000000012', -- 线索统计(若存在)
  57. 'CRM2000000000000000000000000010', -- 商机管理
  58. 'CRM2000000000000000000000000011', -- 商机详情
  59. 'CRM2000000000000000000000000012', -- 商机看板
  60. 'CRM2000000000000000000000000013', -- 销售漏斗
  61. 'CRM2000000000000000000000000014', -- 商机统计
  62. 'CRM1000000000000000000000000003', -- 公海池
  63. 'CRM1000000000000000000000000004' -- 公海池规则
  64. );
  65. -- 排序:系统信息内
  66. UPDATE `sys_menu` SET `order_num` = 1, `update_time` = NOW() WHERE `id` = '101' AND `del_flag` = 0;
  67. UPDATE `sys_menu` SET `order_num` = 2, `update_time` = NOW() WHERE `id` = '102' AND `del_flag` = 0;
  68. UPDATE `sys_menu` SET `order_num` = 3, `update_time` = NOW() WHERE `id` = '106' AND `del_flag` = 0;
  69. UPDATE `sys_menu` SET `order_num` = 4, `update_time` = NOW() WHERE `id` = '103' AND `del_flag` = 0;
  70. UPDATE `sys_menu` SET `order_num` = 5, `update_time` = NOW() WHERE `id` = '105' AND `del_flag` = 0;
  71. UPDATE `sys_menu` SET `order_num` = 6, `update_time` = NOW() WHERE `id` = '104' AND `del_flag` = 0;
  72. UPDATE `sys_menu` SET `order_num` = 7, `update_time` = NOW() WHERE `id` = '108' AND `del_flag` = 0;
  73. UPDATE `sys_menu` SET `order_num` = 8, `update_time` = NOW() WHERE `id` = 'SYS_OPERLOG' AND `del_flag` = 0;
  74. -- 排序:临时存放内(可见菜单)
  75. UPDATE `sys_menu` SET `order_num` = 1, `update_time` = NOW() WHERE `id` = 'SYS_APPROVER_SETTING' AND `del_flag` = 0;
  76. UPDATE `sys_menu` SET `order_num` = 2, `update_time` = NOW() WHERE `id` = 'CRM3000000000000000000000000040' AND `del_flag` = 0;
  77. UPDATE `sys_menu` SET `order_num` = 3, `update_time` = NOW() WHERE `id` = 'CRM1000000000000000000000000010' AND `del_flag` = 0;
  78. UPDATE `sys_menu` SET `order_num` = 4, `update_time` = NOW() WHERE `id` = 'CRM2000000000000000000000000010' AND `del_flag` = 0;
  79. UPDATE `sys_menu` SET `order_num` = 5, `update_time` = NOW() WHERE `id` = 'CRM1000000000000000000000000003' AND `del_flag` = 0;
  80. -- 4) 角色菜单:曾拥有子菜单的角色,补挂二级目录(避免孤儿叶子)
  81. INSERT INTO `sys_role_menu` (
  82. `id`, `role_id`, `menu_id`, `tenant_no`, `order_num`, `remark`,
  83. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  84. )
  85. SELECT
  86. CONCAT('RM_SYS_INFO_', UPPER(MD5(CONCAT(rm.role_id, ':SYSM000000000000000000000000000010')))),
  87. rm.role_id,
  88. 'SYSM000000000000000000000000000010',
  89. COALESCE(NULLIF(rm.tenant_no, ''), 'shanxia2.0'),
  90. 0,
  91. 'auto: system info group',
  92. 'system',
  93. '',
  94. NOW(),
  95. NULL,
  96. NOW(),
  97. 0
  98. FROM `sys_role_menu` rm
  99. WHERE rm.del_flag = 0
  100. AND rm.menu_id IN (
  101. '101', '102', '106', '103', '105', '104', '108', 'SYS_OPERLOG'
  102. )
  103. AND NOT EXISTS (
  104. SELECT 1
  105. FROM `sys_role_menu` x
  106. WHERE x.role_id = rm.role_id
  107. AND x.menu_id = 'SYSM000000000000000000000000000010'
  108. AND x.del_flag = 0
  109. )
  110. GROUP BY rm.role_id, rm.tenant_no;
  111. INSERT INTO `sys_role_menu` (
  112. `id`, `role_id`, `menu_id`, `tenant_no`, `order_num`, `remark`,
  113. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  114. )
  115. SELECT
  116. CONCAT('RM_SYS_TEMP_', UPPER(MD5(CONCAT(rm.role_id, ':SYSM000000000000000000000000000011')))),
  117. rm.role_id,
  118. 'SYSM000000000000000000000000000011',
  119. COALESCE(NULLIF(rm.tenant_no, ''), 'shanxia2.0'),
  120. 0,
  121. 'auto: system temp group',
  122. 'system',
  123. '',
  124. NOW(),
  125. NULL,
  126. NOW(),
  127. 0
  128. FROM `sys_role_menu` rm
  129. WHERE rm.del_flag = 0
  130. AND rm.menu_id IN (
  131. 'SYS_APPROVER_SETTING',
  132. 'CRM3000000000000000000000000040',
  133. 'CRM1000000000000000000000000010',
  134. 'CRM1000000000000000000000000011',
  135. 'CRM1000000000000000000000000012',
  136. 'CRM2000000000000000000000000010',
  137. 'CRM2000000000000000000000000011',
  138. 'CRM2000000000000000000000000012',
  139. 'CRM2000000000000000000000000013',
  140. 'CRM2000000000000000000000000014',
  141. 'CRM1000000000000000000000000003',
  142. 'CRM1000000000000000000000000004'
  143. )
  144. AND NOT EXISTS (
  145. SELECT 1
  146. FROM `sys_role_menu` x
  147. WHERE x.role_id = rm.role_id
  148. AND x.menu_id = 'SYSM000000000000000000000000000011'
  149. AND x.del_flag = 0
  150. )
  151. GROUP BY rm.role_id, rm.tenant_no;