storemanage1-permission.sql 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. -- Run this script in database `eduepos-plat`.
  2. -- It adds the new menu `/admin/storemanage1` and makes its button permissions
  3. -- selectable in Role Management -> System Permissions.
  4. -- 1. Create menu by copying the existing store menu.
  5. INSERT INTO sys_menu (
  6. MODEL_CODE,
  7. MENU_NAME,
  8. URL,
  9. LEVEL,
  10. ORDER_KEY,
  11. FATHER_ID,
  12. STATUS,
  13. CREATE_DATE
  14. )
  15. SELECT
  16. MODEL_CODE,
  17. '新门店列表',
  18. '/admin/storemanage1',
  19. LEVEL,
  20. ORDER_KEY + 1,
  21. FATHER_ID,
  22. STATUS,
  23. NOW()
  24. FROM sys_menu
  25. WHERE URL = '/admin/storemanage'
  26. AND NOT EXISTS (
  27. SELECT 1
  28. FROM (
  29. SELECT MENU_ID
  30. FROM sys_menu
  31. WHERE URL = '/admin/storemanage1'
  32. ) exists_menu
  33. )
  34. LIMIT 1;
  35. -- 2. Prefer copying button permissions from the existing store menu.
  36. INSERT INTO sys_menu_button (
  37. MENU_ID,
  38. BUTTON_CODE
  39. )
  40. SELECT
  41. new_menu.MENU_ID,
  42. old_button.BUTTON_CODE
  43. FROM sys_menu old_menu
  44. JOIN sys_menu new_menu ON new_menu.URL = '/admin/storemanage1'
  45. JOIN sys_menu_button old_button ON old_button.MENU_ID = old_menu.MENU_ID
  46. WHERE old_menu.URL = '/admin/storemanage'
  47. AND NOT EXISTS (
  48. SELECT 1
  49. FROM sys_menu_button exists_button
  50. WHERE exists_button.MENU_ID = new_menu.MENU_ID
  51. AND exists_button.BUTTON_CODE = old_button.BUTTON_CODE
  52. );
  53. -- 3. Fallback: if the old menu has no button rows, create the common buttons.
  54. INSERT INTO sys_menu_button (
  55. MENU_ID,
  56. BUTTON_CODE
  57. )
  58. SELECT
  59. new_menu.MENU_ID,
  60. buttons.BUTTON_CODE
  61. FROM sys_menu new_menu
  62. JOIN (
  63. SELECT 'add' AS BUTTON_CODE
  64. UNION ALL SELECT 'edit'
  65. UNION ALL SELECT 'delete'
  66. ) buttons
  67. WHERE new_menu.URL = '/admin/storemanage1'
  68. AND NOT EXISTS (
  69. SELECT 1
  70. FROM sys_menu_button exists_button
  71. WHERE exists_button.MENU_ID = new_menu.MENU_ID
  72. AND exists_button.BUTTON_CODE = buttons.BUTTON_CODE
  73. );
  74. -- 4. Remove export if it was inserted by an earlier script.
  75. DELETE b
  76. FROM sys_menu_button b
  77. JOIN sys_menu m ON m.MENU_ID = b.MENU_ID
  78. WHERE m.URL = '/admin/storemanage1'
  79. AND b.BUTTON_CODE = 'export';
  80. -- 5. Verify. This must return add/edit/delete rows for the new menu.
  81. SELECT
  82. m.MENU_ID,
  83. m.MENU_NAME,
  84. m.URL,
  85. b.BUTTON_CODE
  86. FROM sys_menu m
  87. LEFT JOIN sys_menu_button b ON b.MENU_ID = m.MENU_ID
  88. WHERE m.URL IN ('/admin/storemanage', '/admin/storemanage1')
  89. ORDER BY m.URL, b.BUTTON_CODE;
  90. -- Optional direct grant for one role. Replace ROLE_ID before running.
  91. -- INSERT INTO sys_role (CHARACTOR_ID, MENU_ID)
  92. -- SELECT ROLE_ID, MENU_ID
  93. -- FROM sys_menu
  94. -- WHERE URL = '/admin/storemanage1'
  95. -- AND NOT EXISTS (
  96. -- SELECT 1
  97. -- FROM sys_role
  98. -- WHERE CHARACTOR_ID = ROLE_ID
  99. -- AND MENU_ID = sys_menu.MENU_ID
  100. -- );
  101. --
  102. -- INSERT INTO sys_role_menu_button (MENU_ID, ROLE_ID, BUTTON_CODE)
  103. -- SELECT MENU_ID, ROLE_ID, BUTTON_CODE
  104. -- FROM sys_menu_button
  105. -- WHERE MENU_ID = (SELECT MENU_ID FROM sys_menu WHERE URL = '/admin/storemanage1');