diff --git a/sql/qqbot-init.sql b/sql/qqbot-init.sql index 6d06190..d7a2920 100644 --- a/sql/qqbot-init.sql +++ b/sql/qqbot-init.sql @@ -1173,10 +1173,20 @@ ON DUPLICATE KEY UPDATE `pid`=VALUES(`pid`),`path`=VALUES(`path`),`component`=VA INSERT IGNORE INTO `admin_role_menu` (`role_id`, `menu_id`) SELECT role.`id`, menu.`id` FROM `admin_role` role -JOIN `admin_menu` menu ON menu.`name` LIKE 'QqBot%' +CROSS JOIN `admin_menu` menu WHERE role.`role_code` IN ('super', 'admin') AND role.`status` = 1 AND role.`is_deleted` = 0 + AND menu.`id` IN ( + 2041700000000100413, 2041700000000100414, + 2041700000000120461, 2041700000000120462, 2041700000000120463, + 2041700000000120464, 2041700000000120465, 2041700000000120471, + 2041700000000120472, 2041700000000120473, 2041700000000120474, + 2041700000000120475, 2041700000000120476, 2041700000000120481, + 2041700000000120482, 2041700000000120483, 2041700000000120484, + 2041700000000120485 + ) + AND menu.`status` = 1 AND menu.`is_deleted` = 0; SET FOREIGN_KEY_CHECKS = 1; diff --git a/sql/vben-admin-init.sql b/sql/vben-admin-init.sql index 6303120..911929f 100644 --- a/sql/vben-admin-init.sql +++ b/sql/vben-admin-init.sql @@ -425,10 +425,20 @@ ON DUPLICATE KEY UPDATE INSERT IGNORE INTO `admin_role_menu` (`role_id`, `menu_id`) SELECT role.`id`, menu.`id` FROM `admin_role` role -JOIN `admin_menu` menu ON menu.`name` LIKE 'QqBot%' +CROSS JOIN `admin_menu` menu WHERE role.`role_code` IN ('super', 'admin') AND role.`status` = 1 AND role.`is_deleted` = 0 + AND menu.`id` IN ( + 2041700000000100413, 2041700000000100414, + 2041700000000120461, 2041700000000120462, 2041700000000120463, + 2041700000000120464, 2041700000000120465, 2041700000000120471, + 2041700000000120472, 2041700000000120473, 2041700000000120474, + 2041700000000120475, 2041700000000120476, 2041700000000120481, + 2041700000000120482, 2041700000000120483, 2041700000000120484, + 2041700000000120485 + ) + AND menu.`status` = 1 AND menu.`is_deleted` = 0; SET FOREIGN_KEY_CHECKS = 1; diff --git a/test/modules/qqbot/message-push/qqbot-message-push-sql.spec.ts b/test/modules/qqbot/message-push/qqbot-message-push-sql.spec.ts index 9ecb136..1f5708c 100644 --- a/test/modules/qqbot/message-push/qqbot-message-push-sql.spec.ts +++ b/test/modules/qqbot/message-push/qqbot-message-push-sql.spec.ts @@ -467,15 +467,17 @@ describe('QQBot message-push SQL contract', () => { } }); - it('grants only the seeded message-push menus to active super and admin roles after refactor seeding', () => { - const roleGrant = extractMessagePushMenuRoleGrantStatement(seedSql); - expect(roleGrant).toContain('insert ignore into admin_role_menu (role_id, menu_id)'); - expect(extractMenuRoleGrantIds(roleGrant)).toEqual(menuEntries.map(([id]) => id)); - expect(roleGrant).toContain("role.role_code in ('super', 'admin')"); - expect(roleGrant).toContain('role.status = 1'); - expect(roleGrant).toContain('role.is_deleted = 0'); - expect(roleGrant).toContain('menu.status = 1'); - expect(roleGrant).toContain('menu.is_deleted = 0'); + it('grants only the seeded message-push menus to active super and admin roles after every menu seed', () => { + for (const sql of [bootstrapSql, seedSql, vbenSql]) { + const roleGrant = extractMessagePushMenuRoleGrantStatement(sql); + expect(roleGrant).toContain('insert ignore into admin_role_menu (role_id, menu_id)'); + expect(extractMenuRoleGrantIds(roleGrant)).toEqual(menuEntries.map(([id]) => id)); + expect(roleGrant).toContain("role.role_code in ('super', 'admin')"); + expect(roleGrant).toContain('role.status = 1'); + expect(roleGrant).toContain('role.is_deleted = 0'); + expect(roleGrant).toContain('menu.status = 1'); + expect(roleGrant).toContain('menu.is_deleted = 0'); + } }); it('uses an exact mismatch CTE and null-safe predicates for every stable menu tuple', () => {