| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- -- 1.0.384 verify: UATAdminA 应绑定 UAT_FUNCTION_USER 并能解析出菜单。
- --
- -- 约定(AutoVersionUpdate.RunVerifyScriptIfExists):
- -- 每条语句取「首行首列」当布尔断言,必须为真(非 0 / 非 NULL / 非空串)。
- -- 返回 0 行会得到 NULL → 判假 → 抛异常并中断启动。
- -- 因此断言一律写成 SELECT ... 返回标量 1,不要写「期望 0 行」式的查询。
- --
- -- 环境容错:本脚本随仓库分发到所有环境,而 UATAdminA / UAT_FUNCTION_USER
- -- 只存在于特定 UAT 库。账号不存在时主脚本为空操作,故断言同样短路为真,
- -- 避免在无该账号的库上误判失败。
- -- 1) 绑定已建立(账号不存在的库短路为真)
- SELECT IF(
- (SELECT COUNT(*) FROM SysUser WHERE Account = 'UATAdminA' AND Status = 1) = 0,
- 1,
- (SELECT COUNT(*)
- FROM SysUserRole ur
- JOIN SysUser u ON u.Id = ur.UserId
- JOIN SysRole r ON r.Id = ur.RoleId
- WHERE u.Account = 'UATAdminA'
- AND r.Code = 'UAT_FUNCTION_USER')
- ) AS ok_binding;
- -- 2) 该账号可解析出菜单(role_menus > 0,同租户对照账号为 308)
- SELECT IF(
- (SELECT COUNT(*) FROM SysUser WHERE Account = 'UATAdminA' AND Status = 1) = 0,
- 1,
- (SELECT COUNT(DISTINCT rm.MenuId)
- FROM SysUser u
- JOIN SysUserRole ur ON ur.UserId = u.Id
- JOIN SysRoleMenu rm ON rm.RoleId = ur.RoleId
- WHERE u.Account = 'UATAdminA')
- ) AS ok_menus;
- -- 3) 幂等性:不存在重复绑定(重复执行本脚本不产生第二条相同 UserId+RoleId)
- SELECT IF(
- (SELECT COUNT(*) FROM (
- SELECT ur.UserId, ur.RoleId
- FROM SysUserRole ur
- JOIN SysUser u ON u.Id = ur.UserId
- WHERE u.Account = 'UATAdminA'
- GROUP BY ur.UserId, ur.RoleId
- HAVING COUNT(*) > 1
- ) dup) = 0,
- 1, 0
- ) AS ok_no_duplicate;
|