migrate_crm_menu_groups_20261004.sql 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. -- CRM 管理下增加四级分组目录,叶子菜单改挂到对应分组
  2. -- 产品管理 / 报价单管理 / 合同管理 / 客户管理
  3. -- 2026-10-04
  4. INSERT INTO `sys_menu` (
  5. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`,
  6. `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`,
  7. `create_time`, `update_by`, `update_time`, `del_flag`
  8. )
  9. SELECT * FROM (
  10. SELECT
  11. 'CRM00000000000000000000000000010' AS `id`,
  12. '产品管理' AS `menu_name`,
  13. 'CRM00000000000000000000000000001' AS `parent_id`,
  14. 'M' AS `menu_type`,
  15. 'product-group' AS `path`,
  16. NULL AS `component`,
  17. NULL AS `perms`,
  18. 1 AS `is_frame`,
  19. '1' AS `visible`,
  20. '1' AS `status`,
  21. 'shanxia2.0' AS `tenant_no`,
  22. 1 AS `order_num`,
  23. 'CRM 产品管理分组' AS `remark`,
  24. 'system' AS `create_by`,
  25. '' AS `create_dept_id`,
  26. NOW() AS `create_time`,
  27. NULL AS `update_by`,
  28. NOW() AS `update_time`,
  29. 0 AS `del_flag`
  30. ) AS tmp
  31. WHERE NOT EXISTS (
  32. SELECT 1 FROM `sys_menu` WHERE `id` = 'CRM00000000000000000000000000010'
  33. );
  34. INSERT INTO `sys_menu` (
  35. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`,
  36. `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`,
  37. `create_time`, `update_by`, `update_time`, `del_flag`
  38. )
  39. SELECT * FROM (
  40. SELECT
  41. 'CRM00000000000000000000000000020' AS `id`,
  42. '报价单管理' AS `menu_name`,
  43. 'CRM00000000000000000000000000001' AS `parent_id`,
  44. 'M' AS `menu_type`,
  45. 'quote-group' AS `path`,
  46. NULL AS `component`,
  47. NULL AS `perms`,
  48. 1 AS `is_frame`,
  49. '1' AS `visible`,
  50. '1' AS `status`,
  51. 'shanxia2.0' AS `tenant_no`,
  52. 2 AS `order_num`,
  53. 'CRM 报价单管理分组' AS `remark`,
  54. 'system' AS `create_by`,
  55. '' AS `create_dept_id`,
  56. NOW() AS `create_time`,
  57. NULL AS `update_by`,
  58. NOW() AS `update_time`,
  59. 0 AS `del_flag`
  60. ) AS tmp
  61. WHERE NOT EXISTS (
  62. SELECT 1 FROM `sys_menu` WHERE `id` = 'CRM00000000000000000000000000020'
  63. );
  64. INSERT INTO `sys_menu` (
  65. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`,
  66. `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`,
  67. `create_time`, `update_by`, `update_time`, `del_flag`
  68. )
  69. SELECT * FROM (
  70. SELECT
  71. 'CRM00000000000000000000000000030' AS `id`,
  72. '合同管理' AS `menu_name`,
  73. 'CRM00000000000000000000000000001' AS `parent_id`,
  74. 'M' AS `menu_type`,
  75. 'contract-group' AS `path`,
  76. NULL AS `component`,
  77. NULL AS `perms`,
  78. 1 AS `is_frame`,
  79. '1' AS `visible`,
  80. '1' AS `status`,
  81. 'shanxia2.0' AS `tenant_no`,
  82. 3 AS `order_num`,
  83. 'CRM 合同管理分组' AS `remark`,
  84. 'system' AS `create_by`,
  85. '' AS `create_dept_id`,
  86. NOW() AS `create_time`,
  87. NULL AS `update_by`,
  88. NOW() AS `update_time`,
  89. 0 AS `del_flag`
  90. ) AS tmp
  91. WHERE NOT EXISTS (
  92. SELECT 1 FROM `sys_menu` WHERE `id` = 'CRM00000000000000000000000000030'
  93. );
  94. INSERT INTO `sys_menu` (
  95. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`,
  96. `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`,
  97. `create_time`, `update_by`, `update_time`, `del_flag`
  98. )
  99. SELECT * FROM (
  100. SELECT
  101. 'CRM00000000000000000000000000040' AS `id`,
  102. '客户管理' AS `menu_name`,
  103. 'CRM00000000000000000000000000001' AS `parent_id`,
  104. 'M' AS `menu_type`,
  105. 'customer-group' AS `path`,
  106. NULL AS `component`,
  107. NULL AS `perms`,
  108. 1 AS `is_frame`,
  109. '1' AS `visible`,
  110. '1' AS `status`,
  111. 'shanxia2.0' AS `tenant_no`,
  112. 4 AS `order_num`,
  113. 'CRM 客户管理分组' AS `remark`,
  114. 'system' AS `create_by`,
  115. '' AS `create_dept_id`,
  116. NOW() AS `create_time`,
  117. NULL AS `update_by`,
  118. NOW() AS `update_time`,
  119. 0 AS `del_flag`
  120. ) AS tmp
  121. WHERE NOT EXISTS (
  122. SELECT 1 FROM `sys_menu` WHERE `id` = 'CRM00000000000000000000000000040'
  123. );
  124. UPDATE `sys_menu`
  125. SET `parent_id` = 'CRM00000000000000000000000000010', `order_num` = 1, `update_time` = NOW()
  126. WHERE `id` = 'CRM00000000000000000000000000003' AND `del_flag` = 0;
  127. UPDATE `sys_menu`
  128. SET `parent_id` = 'CRM00000000000000000000000000010', `order_num` = 2, `update_time` = NOW()
  129. WHERE `id` = 'CRM00000000000000000000000000002' AND `del_flag` = 0;
  130. UPDATE `sys_menu`
  131. SET `parent_id` = 'CRM00000000000000000000000000020', `order_num` = 1, `update_time` = NOW()
  132. WHERE `id` = 'CRM3000000000000000000000000010' AND `del_flag` = 0;
  133. UPDATE `sys_menu`
  134. SET `parent_id` = 'CRM00000000000000000000000000020', `order_num` = 2, `update_time` = NOW()
  135. WHERE `id` = 'CRM3000000000000000000000000016' AND `del_flag` = 0;
  136. UPDATE `sys_menu`
  137. SET `parent_id` = 'CRM00000000000000000000000000020', `update_time` = NOW()
  138. WHERE `id` = 'CRM3000000000000000000000000015' AND `del_flag` = 0;
  139. UPDATE `sys_menu`
  140. SET `parent_id` = 'CRM00000000000000000000000000030', `order_num` = 1, `update_time` = NOW()
  141. WHERE `id` = 'CRM3000000000000000000000000020' AND `del_flag` = 0;
  142. UPDATE `sys_menu`
  143. SET `parent_id` = 'CRM00000000000000000000000000030', `order_num` = 2, `update_time` = NOW()
  144. WHERE `id` = 'CRM3000000000000000000000000021' AND `del_flag` = 0;
  145. UPDATE `sys_menu`
  146. SET `parent_id` = 'CRM00000000000000000000000000030', `order_num` = 3, `update_time` = NOW()
  147. WHERE `id` = 'CRM3000000000000000000000000030' AND `del_flag` = 0;
  148. UPDATE `sys_menu`
  149. SET `parent_id` = 'CRM00000000000000000000000000030', `update_time` = NOW()
  150. WHERE `id` = 'CRM3000000000000000000000000026' AND `del_flag` = 0;
  151. UPDATE `sys_menu`
  152. SET `parent_id` = 'CRM00000000000000000000000000040', `order_num` = 1, `update_time` = NOW()
  153. WHERE `id` = 'CRM1000000000000000000000000002' AND `del_flag` = 0;
  154. -- 已授权叶子的角色补上新分组目录,避免有子无父
  155. INSERT INTO `sys_role_menu` (
  156. `id`, `role_id`, `menu_id`, `tenant_no`, `order_num`, `remark`,
  157. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  158. )
  159. SELECT
  160. MD5(CONCAT(src.`role_id`, '-', src.`group_menu_id`)),
  161. src.`role_id`,
  162. src.`group_menu_id`,
  163. src.`tenant_no`,
  164. 0,
  165. NULL,
  166. src.`create_by`,
  167. '',
  168. NOW(),
  169. src.`create_by`,
  170. NOW(),
  171. 0
  172. FROM (
  173. SELECT DISTINCT
  174. rm.`role_id`,
  175. rm.`tenant_no`,
  176. rm.`create_by`,
  177. 'CRM00000000000000000000000000010' AS `group_menu_id`
  178. FROM `sys_role_menu` rm
  179. WHERE rm.`del_flag` = 0
  180. AND rm.`menu_id` IN (
  181. 'CRM00000000000000000000000000002',
  182. 'CRM00000000000000000000000000003'
  183. )
  184. UNION
  185. SELECT DISTINCT
  186. rm.`role_id`,
  187. rm.`tenant_no`,
  188. rm.`create_by`,
  189. 'CRM00000000000000000000000000020'
  190. FROM `sys_role_menu` rm
  191. WHERE rm.`del_flag` = 0
  192. AND rm.`menu_id` IN (
  193. 'CRM3000000000000000000000000010',
  194. 'CRM3000000000000000000000000015',
  195. 'CRM3000000000000000000000000016'
  196. )
  197. UNION
  198. SELECT DISTINCT
  199. rm.`role_id`,
  200. rm.`tenant_no`,
  201. rm.`create_by`,
  202. 'CRM00000000000000000000000000030'
  203. FROM `sys_role_menu` rm
  204. WHERE rm.`del_flag` = 0
  205. AND rm.`menu_id` IN (
  206. 'CRM3000000000000000000000000020',
  207. 'CRM3000000000000000000000000021',
  208. 'CRM3000000000000000000000000026',
  209. 'CRM3000000000000000000000000030'
  210. )
  211. UNION
  212. SELECT DISTINCT
  213. rm.`role_id`,
  214. rm.`tenant_no`,
  215. rm.`create_by`,
  216. 'CRM00000000000000000000000000040'
  217. FROM `sys_role_menu` rm
  218. WHERE rm.`del_flag` = 0
  219. AND rm.`menu_id` = 'CRM1000000000000000000000000002'
  220. ) src
  221. WHERE NOT EXISTS (
  222. SELECT 1
  223. FROM `sys_role_menu` exist
  224. WHERE exist.`role_id` = src.`role_id`
  225. AND exist.`menu_id` = src.`group_menu_id`
  226. AND exist.`del_flag` = 0
  227. );