organize_tenant_sys_menu_subtree.sql 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. -- ============================================================
  2. -- tenant_sys_menu subtree organize (system / qw / store / ...)
  3. -- Run AFTER organize_tenant_sys_menu.sql
  4. -- Backup: CREATE TABLE tenant_sys_menu_bak2 AS SELECT * FROM tenant_sys_menu;
  5. -- ============================================================
  6. -- ============================================================
  7. -- PART A: system (32372) - hide platform-only flat menus
  8. -- ============================================================
  9. UPDATE tenant_sys_menu SET visible = '1', status = '0'
  10. WHERE parent_id = 32372
  11. AND menu_id IN (
  12. 32385,32386,32387,32388,32389,32390,32391,32392,32393,32394,32395,32396,32397,32398,32399,
  13. 32401,32402,32403,32404,32405,
  14. 32698,32699,32700,32701,32702,32703,
  15. 32756,32757,32758,32759,32760,32761,32762,32763,
  16. 32837,32839,32840,32841,
  17. 35108
  18. );
  19. -- Move statistics pages out of sysOrg (35100) -> statistics root (32368)
  20. UPDATE tenant_sys_menu SET parent_id = 32368, order_num = order_num
  21. WHERE menu_id IN (29194, 32769, 32770, 32771);
  22. -- sysOrg (35100): organization
  23. UPDATE tenant_sys_menu SET parent_id = 35100, order_num = 10
  24. WHERE menu_id IN (32431,32432,32433,32436,32437,32438,32443,32455,32456,32457,32473,32475,32476,32477);
  25. -- sysPerm (35101): roles & menus
  26. UPDATE tenant_sys_menu SET parent_id = 35101, order_num = 10
  27. WHERE menu_id IN (32440,32447,32448,32449);
  28. -- sysVoice (35102): SMS / voice / workflow
  29. UPDATE tenant_sys_menu SET parent_id = 35102, order_num = 10
  30. WHERE menu_id IN (32427,32451,32452,32453,32454,32470,32471,32472);
  31. -- sysLog (35105): audit logs
  32. UPDATE tenant_sys_menu SET parent_id = 35105, order_num = 10
  33. WHERE menu_id IN (32439,32442);
  34. -- sysConfig (35106): settings only (keep platform-neutral pages)
  35. UPDATE tenant_sys_menu SET parent_id = 35106, order_num = 10
  36. WHERE menu_id IN (32430,32434,32478,32479,32480,32832,32833);
  37. -- Move finance pages system -> bill module
  38. UPDATE tenant_sys_menu SET parent_id = 35114, order_num = 10 WHERE menu_id = 32441; -- money logs
  39. UPDATE tenant_sys_menu SET parent_id = 35111, order_num = 10 WHERE menu_id IN (32445); -- recharge
  40. UPDATE tenant_sys_menu SET parent_id = 35112, order_num = 10 WHERE menu_id = 32435; -- deduct
  41. UPDATE tenant_sys_menu SET parent_id = 35113, order_num = 10 WHERE menu_id IN (32444,32446,32474); -- profit/redpacket
  42. -- Move wx pages system -> wx module
  43. UPDATE tenant_sys_menu SET parent_id = 35010, order_num = 10 WHERE menu_id = 32482;
  44. UPDATE tenant_sys_menu SET parent_id = 35011, order_num = 10 WHERE menu_id = 32483;
  45. UPDATE tenant_sys_menu SET parent_id = 35012, order_num = 10 WHERE menu_id = 32484;
  46. UPDATE tenant_sys_menu SET parent_id = 35013, order_num = 10 WHERE menu_id = 32485;
  47. -- Lobster duplicate under system -> lobster workflow group
  48. UPDATE tenant_sys_menu SET parent_id = 35080, order_num = 99 WHERE menu_id = 32481;
  49. -- Unique path for company/* menus (fix path=company collision)
  50. UPDATE tenant_sys_menu
  51. SET path = SUBSTRING_INDEX(SUBSTRING_INDEX(component, '/', 2), '/', -1)
  52. WHERE component LIKE 'company/%/%'
  53. AND parent_id IN (35100,35101,35102,35105,35106,35111,35112,35113,35114);
  54. UPDATE tenant_sys_menu SET path = 'companyIndex' WHERE menu_id = 32473;
  55. UPDATE tenant_sys_menu SET path = 'companySet' WHERE menu_id = 32832;
  56. UPDATE tenant_sys_menu SET path = 'userProfile' WHERE menu_id = 32833;
  57. -- ============================================================
  58. -- PART B: qw (32361) - reparent into secondary groups
  59. -- ============================================================
  60. -- qwMsg (35001)
  61. UPDATE tenant_sys_menu SET parent_id = 35001, order_num = 10
  62. WHERE menu_id IN (32704,32705,32739,32740,32749,32745);
  63. -- qwCustomer (35002)
  64. UPDATE tenant_sys_menu SET parent_id = 35002, order_num = 10
  65. WHERE menu_id IN (32708,32714,32715,32716,32717,32718,32719,32720,32721,32722,32723,32724,32725,32726,32755);
  66. -- qwGroup (35003)
  67. UPDATE tenant_sys_menu SET parent_id = 35003, order_num = 10
  68. WHERE menu_id IN (32733,32734,32735,32736,32737,32738);
  69. -- qwMoments (35004)
  70. UPDATE tenant_sys_menu SET parent_id = 35004, order_num = 10
  71. WHERE menu_id IN (32727,32728,32729,32730,32731,32732);
  72. -- qwDrainage (35005)
  73. UPDATE tenant_sys_menu SET parent_id = 35005, order_num = 10
  74. WHERE menu_id IN (32706);
  75. -- qwTag (35006)
  76. UPDATE tenant_sys_menu SET parent_id = 35006, order_num = 10
  77. WHERE menu_id IN (32900,32751,32752);
  78. -- qwSetting (35007)
  79. UPDATE tenant_sys_menu SET parent_id = 35007, order_num = 10
  80. WHERE menu_id IN (32707,32713,32741,32744,32746,32753,32754);
  81. -- Unique path for qw/* (fix path=qw collision)
  82. UPDATE tenant_sys_menu
  83. SET path = SUBSTRING_INDEX(SUBSTRING_INDEX(component, '/', 2), '/', -1)
  84. WHERE component LIKE 'qw/%'
  85. AND parent_id IN (35001,35002,35003,35004,35005,35006,35007,32361);
  86. UPDATE tenant_sys_menu SET path = 'qwExternalContact' WHERE menu_id = 32755;
  87. UPDATE tenant_sys_menu SET path = 'QwWorkTaskQw' WHERE menu_id = 32705;
  88. -- ============================================================
  89. -- PART C: store (32369) - hide legacy duplicate + reparent store/*
  90. -- ============================================================
  91. -- Hide hisStore duplicate set (keep store/* canonical)
  92. UPDATE tenant_sys_menu SET visible = '1', status = '0'
  93. WHERE menu_id BETWEEN 32591 AND 32643;
  94. UPDATE tenant_sys_menu SET visible = '1', status = '0'
  95. WHERE menu_id IN (32766,32767,32768,32826);
  96. -- storeOrder (35040): orders & reports
  97. UPDATE tenant_sys_menu SET parent_id = 35040, order_num = 10
  98. WHERE menu_id IN (
  99. 32772,32773,32777,32778,32781,32787,
  100. 32806,32807,32808,32809,32810,32811
  101. );
  102. -- storeProduct (35041): products & shipping
  103. UPDATE tenant_sys_menu SET parent_id = 35041, order_num = 10
  104. WHERE menu_id IN (
  105. 32790,32791,32792,32794,32795,32796,
  106. 32812,32813,32814,32815,32816,32817,32818,32819,32820
  107. );
  108. -- storeOps (35042): shop ops / coupon / home / export
  109. UPDATE tenant_sys_menu SET parent_id = 35042, order_num = 10
  110. WHERE menu_id IN (
  111. 32774,32775,32776,32779,32780,32782,32783,32784,32785,32786,32788,32789,32793,32797,
  112. 32801,32802,32803,32804,32805,32821,32822,32823,32824,32825
  113. );
  114. -- Unique path for store/* (fix path=store collision)
  115. UPDATE tenant_sys_menu
  116. SET path = SUBSTRING_INDEX(SUBSTRING_INDEX(REPLACE(component, '/index/index', '/index'), '/', 2), '/', -1)
  117. WHERE component LIKE 'store/%'
  118. AND parent_id IN (35040,35041,35042,32369);
  119. -- ============================================================
  120. -- PART D: other noisy modules (quick fixes)
  121. -- ============================================================
  122. -- CRM: move flat pages into crmCustomer (35020)
  123. UPDATE tenant_sys_menu SET parent_id = 35020, order_num = 10
  124. WHERE menu_id IN (32521,32522,32523,32524,32525,32526,32527)
  125. AND parent_id = 32347;
  126. UPDATE tenant_sys_menu
  127. SET path = SUBSTRING_INDEX(SUBSTRING_INDEX(component, '/', 2), '/', -1)
  128. WHERE component LIKE 'crm/%' AND parent_id IN (35020,35021,35023,32347);
  129. -- fastGpt: move chat pages into aiChat (35070)
  130. UPDATE tenant_sys_menu SET parent_id = 35070, order_num = 10
  131. WHERE menu_id BETWEEN 32528 AND 32537 AND parent_id = 32348;
  132. UPDATE tenant_sys_menu
  133. SET path = SUBSTRING_INDEX(SUBSTRING_INDEX(component, '/', 2), '/', -1)
  134. WHERE component LIKE 'fastGpt/%' AND parent_id IN (35070,35071,35072,35073,35074,35075,32348);
  135. -- live: move flat pages into liveOps (35050)
  136. UPDATE tenant_sys_menu SET parent_id = 35050, order_num = 10
  137. WHERE menu_id BETWEEN 32645 AND 32675 AND parent_id = 32353;
  138. UPDATE tenant_sys_menu
  139. SET path = SUBSTRING_INDEX(SUBSTRING_INDEX(REPLACE(component, '/index/index', '/index'), '/', 2), '/', -1)
  140. WHERE component LIKE 'live/%' AND parent_id IN (35050,35051,35052,35053,32353);
  141. -- course: move flat pages into courseContent (35060)
  142. UPDATE tenant_sys_menu SET parent_id = 35060, order_num = 10
  143. WHERE menu_id BETWEEN 32486 AND 32519 AND parent_id = 32345;
  144. UPDATE tenant_sys_menu
  145. SET path = SUBSTRING_INDEX(SUBSTRING_INDEX(REPLACE(component, '/index/index', '/index'), '/', 2), '/', -1)
  146. WHERE component LIKE 'course/%' AND parent_id IN (35060,35061,35062,35063,32345);
  147. -- member: move flat pages under member root (keep flat but unique path)
  148. UPDATE tenant_sys_menu
  149. SET path = SUBSTRING_INDEX(SUBSTRING_INDEX(REPLACE(component, '/index/index', '/index'), '/', 2), '/', -1)
  150. WHERE component LIKE 'user/%' AND parent_id = 32357;
  151. -- statistics: unique path
  152. UPDATE tenant_sys_menu
  153. SET path = SUBSTRING_INDEX(SUBSTRING_INDEX(REPLACE(component, '/index/index', '/index'), '/', 2), '/', -1)
  154. WHERE parent_id = 32368 AND component IS NOT NULL AND component <> '';
  155. -- ============================================================
  156. -- PART E: optional - add missing core system pages (tenant admin)
  157. -- Skip if already exists. Adjust menu_id if conflict.
  158. -- ============================================================
  159. -- INSERT INTO tenant_sys_menu (menu_id, menu_name, parent_id, order_num, path, component, menu_type, visible, status, is_frame, is_cache, create_by, create_time)
  160. -- VALUES
  161. -- (35201, '???????', 35101, 1, 'user', 'system/user/index', 'C', '0', '0', 1, 0, 'admin', NOW()),
  162. -- (35202, '???????', 35101, 2, 'role', 'system/role/index', 'C', '0', '0', 1, 0, 'admin', NOW()),
  163. -- (35203, '???????', 35101, 3, 'menu', 'system/menu/index', 'C', '0', '0', 1, 0, 'admin', NOW()),
  164. -- (35204, '???????', 35100, 1, 'dept', 'system/dept/index', 'C', '0', '0', 1, 0, 'admin', NOW()),
  165. -- (35205, '??��????', 35100, 2, 'post', 'system/post/index', 'C', '0', '0', 1, 0, 'admin', NOW()),
  166. -- (35206, '??????', 35106, 3, 'dict', 'system/dict/index', 'C', '0', '0', 1, 0, 'admin', NOW()),
  167. -- (35207, '????????', 35106, 4, 'config', 'system/config/index', 'C', '0', '0', 1, 0, 'admin', NOW()),
  168. -- (35208, '??????', 35106, 5, 'notice', 'system/notice/index', 'C', '0', '0', 1, 0, 'admin', NOW()),
  169. -- (35209, '��?????', 35106, 6, 'keyword', 'system/keyword/index', 'C', '0', '0', 1, 0, 'admin', NOW());
  170. -- ============================================================
  171. -- Verification
  172. -- ============================================================
  173. -- SELECT menu_id, menu_name, parent_id, path, component, visible
  174. -- FROM tenant_sys_menu WHERE parent_id = 32372 AND visible = '0' ORDER BY order_num, menu_id;
  175. -- SELECT menu_id, menu_name, parent_id, path FROM tenant_sys_menu
  176. -- WHERE parent_id IN (35100,35101,35102,35105,35106) AND visible = '0' ORDER BY parent_id, order_num;
  177. -- SELECT parent_id, path, COUNT(*) cnt FROM tenant_sys_menu
  178. -- WHERE parent_id IN (35001,35002,35003,35004,35005,35006,35007) AND menu_type <> 'F'
  179. -- GROUP BY parent_id, path HAVING cnt > 1;
  180. -- SELECT parent_id, path, COUNT(*) cnt FROM tenant_sys_menu
  181. -- WHERE parent_id IN (35040,35041,35042) AND menu_type <> 'F'
  182. -- GROUP BY parent_id, path HAVING cnt > 1;