-- ============================================================================ -- 1.0.436 verify:该角色的两条机构管理相关绑定必须已回收,且其它租户/角色/菜单不受影响。 -- -- 约定(AutoVersionUpdate.RunVerifyScriptIfExists):每条语句取「首行首列」当布尔断言, -- 必须为真;返回 0 行会得到 NULL 判假并中断启动。故断言一律返回标量真值,不使用 SET。 -- 环境容错:目标角色不存在的库上主脚本为空操作,各断言以「本就没有这些绑定」自然为真。 -- ============================================================================ -- V1:目标角色不再持有 sysOrg:list 按钮 SELECT (SELECT COUNT(*) FROM `SysRoleMenu` WHERE `RoleId` = 838258976469061 AND `MenuId` = 1300200030201) = 0 AS v1_btn_revoked; -- V2:目标角色不再持有 机构管理 菜单 SELECT (SELECT COUNT(*) FROM `SysRoleMenu` WHERE `RoleId` = 838258976469061 AND `MenuId` = 1300200030101) = 0 AS v2_menu_revoked; -- V3:该角色对 sysOrg 的写权限本就为 0,回收后仍为 0(不应因本脚本产生任何新增) SELECT (SELECT COUNT(*) FROM `SysRoleMenu` WHERE `RoleId` = 838258976469061 AND `MenuId` IN (1300200030301, 1300200030401, 1300200030501)) = 0 AS v3_no_sysorg_write; -- V4:租户 B 的同名角色(797403760988229 下 RoleId=838259499909189)**不受影响**, -- 其 sysOrg:list 绑定仍在(本批只回收租户 A 这一个角色) SELECT (SELECT COUNT(*) FROM `SysRoleMenu` WHERE `RoleId` = 838259499909189 AND `MenuId` = 1300200030201) = 1 AS v4_other_tenant_role_untouched; -- V5:SysMenu 本身未被删改(机构管理菜单与其查询按钮仍存在且启用) SELECT (SELECT COUNT(*) FROM `SysMenu` WHERE `Id` IN (1300200030101, 1300200030201) AND `Status` = 1) = 2 AS v5_sysmenu_intact; -- V6:SysTenantMenu 未被删改(租户 A 对这两个菜单的可见性配置保持原样, -- 以便将来需要时仍可通过角色授权正常启用) SELECT (SELECT COUNT(*) FROM `SysTenantMenu` WHERE `TenantId` = 838257186181189 AND `MenuId` IN (1300200030101, 1300200030201)) = 2 AS v6_systenantmenu_intact;