| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- -- Run this script in database `eduepos-plat`.
- -- It adds the new menu `/admin/storemanage1` and makes its button permissions
- -- selectable in Role Management -> System Permissions.
- -- 1. Create menu by copying the existing store menu.
- INSERT INTO sys_menu (
- MODEL_CODE,
- MENU_NAME,
- URL,
- LEVEL,
- ORDER_KEY,
- FATHER_ID,
- STATUS,
- CREATE_DATE
- )
- SELECT
- MODEL_CODE,
- '新门店列表',
- '/admin/storemanage1',
- LEVEL,
- ORDER_KEY + 1,
- FATHER_ID,
- STATUS,
- NOW()
- FROM sys_menu
- WHERE URL = '/admin/storemanage'
- AND NOT EXISTS (
- SELECT 1
- FROM (
- SELECT MENU_ID
- FROM sys_menu
- WHERE URL = '/admin/storemanage1'
- ) exists_menu
- )
- LIMIT 1;
- -- 2. Prefer copying button permissions from the existing store menu.
- INSERT INTO sys_menu_button (
- MENU_ID,
- BUTTON_CODE
- )
- SELECT
- new_menu.MENU_ID,
- old_button.BUTTON_CODE
- FROM sys_menu old_menu
- JOIN sys_menu new_menu ON new_menu.URL = '/admin/storemanage1'
- JOIN sys_menu_button old_button ON old_button.MENU_ID = old_menu.MENU_ID
- WHERE old_menu.URL = '/admin/storemanage'
- AND NOT EXISTS (
- SELECT 1
- FROM sys_menu_button exists_button
- WHERE exists_button.MENU_ID = new_menu.MENU_ID
- AND exists_button.BUTTON_CODE = old_button.BUTTON_CODE
- );
- -- 3. Fallback: if the old menu has no button rows, create the common buttons.
- INSERT INTO sys_menu_button (
- MENU_ID,
- BUTTON_CODE
- )
- SELECT
- new_menu.MENU_ID,
- buttons.BUTTON_CODE
- FROM sys_menu new_menu
- JOIN (
- SELECT 'add' AS BUTTON_CODE
- UNION ALL SELECT 'edit'
- UNION ALL SELECT 'delete'
- ) buttons
- WHERE new_menu.URL = '/admin/storemanage1'
- AND NOT EXISTS (
- SELECT 1
- FROM sys_menu_button exists_button
- WHERE exists_button.MENU_ID = new_menu.MENU_ID
- AND exists_button.BUTTON_CODE = buttons.BUTTON_CODE
- );
- -- 4. Remove export if it was inserted by an earlier script.
- DELETE b
- FROM sys_menu_button b
- JOIN sys_menu m ON m.MENU_ID = b.MENU_ID
- WHERE m.URL = '/admin/storemanage1'
- AND b.BUTTON_CODE = 'export';
- -- 5. Verify. This must return add/edit/delete rows for the new menu.
- SELECT
- m.MENU_ID,
- m.MENU_NAME,
- m.URL,
- b.BUTTON_CODE
- FROM sys_menu m
- LEFT JOIN sys_menu_button b ON b.MENU_ID = m.MENU_ID
- WHERE m.URL IN ('/admin/storemanage', '/admin/storemanage1')
- ORDER BY m.URL, b.BUTTON_CODE;
- -- Optional direct grant for one role. Replace ROLE_ID before running.
- -- INSERT INTO sys_role (CHARACTOR_ID, MENU_ID)
- -- SELECT ROLE_ID, MENU_ID
- -- FROM sys_menu
- -- WHERE URL = '/admin/storemanage1'
- -- AND NOT EXISTS (
- -- SELECT 1
- -- FROM sys_role
- -- WHERE CHARACTOR_ID = ROLE_ID
- -- AND MENU_ID = sys_menu.MENU_ID
- -- );
- --
- -- INSERT INTO sys_role_menu_button (MENU_ID, ROLE_ID, BUTTON_CODE)
- -- SELECT MENU_ID, ROLE_ID, BUTTON_CODE
- -- FROM sys_menu_button
- -- WHERE MENU_ID = (SELECT MENU_ID FROM sys_menu WHERE URL = '/admin/storemanage1');
|