-- 1.0.384: UATAdminA 补绑 UAT_FUNCTION_USER 角色,修复登录后「抱歉,您没有登录权限」。 -- -- 背景: -- UATAdminA 为 AccountType=777 普通账号,SysMenuService.GetLoginMenuList 中 -- !(SuperAdmin || SysAdmin) 分支成立,菜单只能来自 SysRoleMenu 的角色授权。 -- 该账号原绑的 SMART_OPS_DEPT_HEAD / SMART_OPS_MODULE_OWNER / SMART_OPS_OPS_OWNER -- 三个角色在 SysRoleMenu 中均为 0 条菜单授权(纯业务身份标签角色), -- 导致菜单接口返回空数组,前端 router/backEnd.ts 判定 isNoPower=true, -- 弹出「抱歉,您没有登录权限」并 clearTokens() 退回登录页。 -- -- 同租户(UATTEST_CHL / 838257186181189)其余 5 个账号 -- UATPlanA / UATPurchaseA / UATWarehouseA / UATQualityA / UATExceptionA -- 均绑定了 UAT_FUNCTION_USER(308 个菜单,DataScope=1 全部数据)而工作正常。 -- 本脚本使 UATAdminA 与同租户既有范式对齐,不改 AccountType、不改权限模型。 -- -- 幂等:已绑定则不重复插入;账号或角色不存在的库上为空操作。 DROP TEMPORARY TABLE IF EXISTS tmp_uat_admin_a_ur; CREATE TEMPORARY TABLE tmp_uat_admin_a_ur ( seq INT NOT NULL AUTO_INCREMENT PRIMARY KEY, user_id BIGINT NOT NULL, role_id BIGINT NOT NULL ); INSERT INTO tmp_uat_admin_a_ur (user_id, role_id) SELECT u.Id, r.Id FROM SysUser u JOIN SysRole r ON r.TenantId = u.TenantId AND r.Code = 'UAT_FUNCTION_USER' AND r.Status = 1 WHERE u.Account = 'UATAdminA' AND u.Status = 1 AND NOT EXISTS ( SELECT 1 FROM SysUserRole x WHERE x.UserId = u.Id AND x.RoleId = r.Id ); SET @uat_admin_a_ur_base := (SELECT IFNULL(MAX(Id), 0) FROM SysUserRole); INSERT INTO SysUserRole (Id, UserId, RoleId) SELECT @uat_admin_a_ur_base + s.seq, s.user_id, s.role_id FROM tmp_uat_admin_a_ur s; DROP TEMPORARY TABLE IF EXISTS tmp_uat_admin_a_ur;