Browse Source

chore: 按租户登录配置参数处理增改系统账号的查重

喵你个旺呀 1 year ago
parent
commit
d4cd3bf08b
1 changed files with 12 additions and 9 deletions
  1. 12 9
      Admin.NET/Admin.NET.Core/Service/User/SysUserService.cs

+ 12 - 9
Admin.NET/Admin.NET.Core/Service/User/SysUserService.cs

@@ -100,11 +100,12 @@ public class SysUserService : IDynamicApiController, ITransient
     [DisplayName("增加用户")]
     public virtual async Task<long> AddUser(AddUserInput input)
     {
-        var isExist = await _sysUserRep.AsQueryable().ClearFilter().AnyAsync(u => (u.TenantId == _userManager.TenantId || u.AccountType == AccountTypeEnum.SuperAdmin) && u.Account == input.Account);
-        if (isExist) throw Oops.Oh(ErrorCodeEnum.D1003);
-
-        if (!string.IsNullOrWhiteSpace(input.Phone) && await _sysUserRep.AsQueryable().ClearFilter().AnyAsync(u => (u.TenantId == _userManager.TenantId || u.AccountType == AccountTypeEnum.SuperAdmin) && u.Phone == input.Phone))
-            throw Oops.Oh(ErrorCodeEnum.D1032);
+        // 是否租户隔离登录验证
+        var isTenantHostLogin = await _sysConfigService.GetConfigValue<bool>(ConfigConst.SysTenantHostLogin);
+        var query = _sysUserRep.AsQueryable().ClearFilter().WhereIF(isTenantHostLogin, u => u.TenantId == _userManager.TenantId || u.AccountType == AccountTypeEnum.SuperAdmin);
+        
+        if (await query.AnyAsync(u => u.Account == input.Account)) throw Oops.Oh(ErrorCodeEnum.D1003);
+        if (!string.IsNullOrWhiteSpace(input.Phone) && await query.AnyAsync(u => u.Phone == input.Phone)) throw Oops.Oh(ErrorCodeEnum.D1032);
 
         var password = await _sysConfigService.GetConfigValue<string>(ConfigConst.SysPassword);
 
@@ -135,11 +136,13 @@ public class SysUserService : IDynamicApiController, ITransient
     [DisplayName("更新用户")]
     public virtual async Task UpdateUser(UpdateUserInput input)
     {
-        if (await _sysUserRep.AsQueryable().ClearFilter().AnyAsync(u => (u.TenantId == _userManager.TenantId || u.AccountType == AccountTypeEnum.SuperAdmin) && u.Account == input.Account && u.Id != input.Id))
-            throw Oops.Oh(ErrorCodeEnum.D1003);
+        // 是否租户隔离登录验证
+        var isTenantHostLogin = await _sysConfigService.GetConfigValue<bool>(ConfigConst.SysTenantHostLogin);
+        var query = _sysUserRep.AsQueryable().ClearFilter().Where(u => u.Id != input.Id)
+            .WhereIF(isTenantHostLogin, u => u.TenantId == _userManager.TenantId || u.AccountType == AccountTypeEnum.SuperAdmin);
         
-        if (!string.IsNullOrWhiteSpace(input.Phone) && await _sysUserRep.AsQueryable().ClearFilter().AnyAsync(u => (u.TenantId == _userManager.TenantId || u.AccountType == AccountTypeEnum.SuperAdmin) && u.Phone == input.Phone && u.Id != input.Id))
-            throw Oops.Oh(ErrorCodeEnum.D1032);
+        if (await query.AnyAsync(u => u.Account == input.Account)) throw Oops.Oh(ErrorCodeEnum.D1003);
+        if (!string.IsNullOrWhiteSpace(input.Phone) && await query.AnyAsync(u => u.Phone == input.Phone)) throw Oops.Oh(ErrorCodeEnum.D1032);
 
         await _sysUserRep.AsUpdateable(input.Adapt<SysUser>()).IgnoreColumns(true)
             .IgnoreColumns(u => new { u.Password, u.Status, u.TenantId }).ExecuteCommandAsync();