using SqlSugar; using Volo.Abp.Users; using Yi.Framework.Rbac.Domain.Entities; namespace FoodLabeling.Application.Helpers; /// /// Team Member 角色识别(Company Admin / Partner Admin 等)。 /// public static class TeamMemberRoleHelper { /// /// UI 展示为 Company Admin,库内常见为 Partner Admin 或 RoleCode 含 partner。 /// public static bool IsCompanyAdminRoleName(string? roleName) { if (string.IsNullOrWhiteSpace(roleName)) { return false; } var name = roleName.Trim(); if (string.Equals(name, "Company Admin", StringComparison.OrdinalIgnoreCase)) { return true; } if (string.Equals(name, "Partner Admin", StringComparison.OrdinalIgnoreCase)) { return true; } return name.Contains("partner", StringComparison.OrdinalIgnoreCase) && name.Contains("admin", StringComparison.OrdinalIgnoreCase); } /// /// 当前登录用户是否为 Company Admin 类角色。 /// public static async Task IsCompanyAdminUserAsync(ISqlSugarClient db, ICurrentUser currentUser) { if (currentUser.Id is null) { return false; } var roleId = await db.Queryable() .Where(ur => ur.UserId == currentUser.Id.Value) .Select(ur => (Guid?)ur.RoleId) .FirstAsync(); return await IsCompanyAdminRoleAsync(db, roleId); } /// /// 是否 Company Admin 类角色(按 RoleId 查库)。 /// public static async Task IsCompanyAdminRoleAsync(ISqlSugarClient db, Guid? roleId) { if (roleId is null) { return false; } var role = await db.Queryable() .FirstAsync(x => !x.IsDeleted && x.Id == roleId.Value); if (role is null) { return false; } if (IsCompanyAdminRoleName(role.RoleName)) { return true; } var code = role.RoleCode?.Trim(); return !string.IsNullOrEmpty(code) && code.Contains("partner", StringComparison.OrdinalIgnoreCase); } /// /// 列表/详情出参:Partner Admin → Company Admin(与 Web UI 一致)。 /// public static string? FormatDisplayRoleName(string? roleName) { if (IsCompanyAdminRoleName(roleName) && !string.Equals(roleName?.Trim(), "Company Admin", StringComparison.OrdinalIgnoreCase)) { return "Company Admin"; } return roleName; } }