-- 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;
