20260827_add_agent_destroy_permission.sql 1.8 KB

12345678910111213141516171819202122232425262728293031323334
  1. -- 代理删除(禁用)接口权限,可重复执行。
  2. INSERT INTO `sa_system_menu` (
  3. `parent_id`, `name`, `code`, `slug`, `type`, `path`, `component`, `method`, `icon`, `sort`,
  4. `link_url`, `is_iframe`, `is_keep_alive`, `is_hidden`, `is_fixed_tab`, `is_full_page`,
  5. `generate_id`, `generate_key`, `status`, `remark`, `created_by`, `updated_by`, `create_time`, `update_time`, `delete_time`
  6. )
  7. SELECT agent_menu.`id`, '删除代理', 'AgentDestroy', 'core:agent:destroy', 3,
  8. NULL, NULL, 'POST', NULL, 86,
  9. NULL, 2, 2, 2, 2, 2, 0, NULL, 1,
  10. '禁用无下级账号、商户和设备关联的代理', 1, 1, NOW(), NOW(), NULL
  11. FROM `sa_system_menu` agent_menu
  12. WHERE agent_menu.`code` = 'Agent' AND agent_menu.`delete_time` IS NULL
  13. AND NOT EXISTS (SELECT 1 FROM `sa_system_menu` WHERE `slug` = 'core:agent:destroy' AND `delete_time` IS NULL);
  14. UPDATE `sa_system_menu`
  15. SET `name` = '删除代理', `method` = 'POST', `remark` = '禁用无下级账号、商户和设备关联的代理', `update_time` = NOW()
  16. WHERE `slug` = 'core:agent:destroy' AND `delete_time` IS NULL;
  17. -- 已有代理列表权限的角色自动获得删除权限。
  18. INSERT INTO `sa_system_role_menu` (`role_id`, `menu_id`)
  19. SELECT DISTINCT source_role.`role_id`, target_menu.`id`
  20. FROM `sa_system_role_menu` source_role
  21. INNER JOIN `sa_system_menu` source_menu
  22. ON source_menu.`id` = source_role.`menu_id`
  23. AND source_menu.`code` IN ('MyAgent', 'SubordinateAgent')
  24. AND source_menu.`delete_time` IS NULL
  25. INNER JOIN `sa_system_menu` target_menu
  26. ON target_menu.`slug` = 'core:agent:destroy'
  27. AND target_menu.`delete_time` IS NULL
  28. LEFT JOIN `sa_system_role_menu` existing_role
  29. ON existing_role.`role_id` = source_role.`role_id`
  30. AND existing_role.`menu_id` = target_menu.`id`
  31. WHERE existing_role.`id` IS NULL;