refactor: 用户管理仅平台管理员

This commit is contained in:
2026-01-30 02:10:32 +00:00
parent 45d08a79df
commit 6143943bf0
23 changed files with 429 additions and 342 deletions

View File

@@ -44,6 +44,22 @@ public interface IIdentityUserRepository
long? excludeUserId = null,
CancellationToken cancellationToken = default);
/// <summary>
/// 判断账号是否存在(按 Portal 与租户范围精确匹配,可排除指定用户)。
/// </summary>
/// <param name="portal">Portal 类型。</param>
/// <param name="tenantId">租户 IDPortal=Tenant 时必填Portal=Admin 时必须为空)。</param>
/// <param name="account">账号。</param>
/// <param name="excludeUserId">排除的用户 ID。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>存在返回 true。</returns>
Task<bool> ExistsByAccountAsync(
PortalType portal,
long? tenantId,
string account,
long? excludeUserId = null,
CancellationToken cancellationToken = default);
/// <summary>
/// 判断手机号是否存在(租户内,可排除指定用户)。
/// </summary>
@@ -58,6 +74,22 @@ public interface IIdentityUserRepository
long? excludeUserId = null,
CancellationToken cancellationToken = default);
/// <summary>
/// 判断手机号是否存在(按 Portal 与租户范围精确匹配,可排除指定用户)。
/// </summary>
/// <param name="portal">Portal 类型。</param>
/// <param name="tenantId">租户 IDPortal=Tenant 时必填Portal=Admin 时必须为空)。</param>
/// <param name="phone">手机号。</param>
/// <param name="excludeUserId">排除的用户 ID。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>存在返回 true。</returns>
Task<bool> ExistsByPhoneAsync(
PortalType portal,
long? tenantId,
string phone,
long? excludeUserId = null,
CancellationToken cancellationToken = default);
/// <summary>
/// 判断邮箱是否存在(租户内,可排除指定用户)。
/// </summary>
@@ -72,6 +104,22 @@ public interface IIdentityUserRepository
long? excludeUserId = null,
CancellationToken cancellationToken = default);
/// <summary>
/// 判断邮箱是否存在(按 Portal 与租户范围精确匹配,可排除指定用户)。
/// </summary>
/// <param name="portal">Portal 类型。</param>
/// <param name="tenantId">租户 IDPortal=Tenant 时必填Portal=Admin 时必须为空)。</param>
/// <param name="email">邮箱。</param>
/// <param name="excludeUserId">排除的用户 ID。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>存在返回 true。</returns>
Task<bool> ExistsByEmailAsync(
PortalType portal,
long? tenantId,
string email,
long? excludeUserId = null,
CancellationToken cancellationToken = default);
/// <summary>
/// 根据 ID 获取后台用户。
/// </summary>
@@ -138,6 +186,22 @@ public interface IIdentityUserRepository
bool includeDeleted,
CancellationToken cancellationToken = default);
/// <summary>
/// 批量获取后台用户(可用于更新,按 Portal 与租户范围精确匹配,支持包含已删除数据)。
/// </summary>
/// <param name="portal">Portal 类型。</param>
/// <param name="tenantId">租户 IDPortal=Tenant 时必填Portal=Admin 时必须为空)。</param>
/// <param name="userIds">用户 ID 集合。</param>
/// <param name="includeDeleted">是否包含已删除数据。</param>
/// <param name="cancellationToken">取消标记。</param>
/// <returns>后台用户列表。</returns>
Task<IReadOnlyList<IdentityUser>> GetForUpdateByIdsAsync(
PortalType portal,
long? tenantId,
IEnumerable<long> userIds,
bool includeDeleted,
CancellationToken cancellationToken = default);
/// <summary>
/// 新增后台用户。
/// </summary>
@@ -167,6 +231,11 @@ public interface IIdentityUserRepository
/// </summary>
public sealed record IdentityUserSearchFilter
{
/// <summary>
/// Portal 类型。
/// </summary>
public PortalType Portal { get; init; } = PortalType.Admin;
/// <summary>
/// 租户 ID。
/// </summary>