Просмотр исходного кода

优化获取登录租户系统信息逻辑,Host匹配上时才独立配置,否则取第一个租户的信息

Signed-off-by: Lzh666 <422235757@qq.com>
Lzh666 1 год назад
Родитель
Сommit
6ce1306fa8

+ 2 - 5
Admin.NET/Admin.NET.Core/Service/Config/SysConfigService.cs

@@ -251,10 +251,7 @@ public class SysConfigService : IDynamicApiController, ITransient
     [DisplayName("获取系统信息")]
     public async Task<dynamic> GetSysInfo()
     {
-        var tenant = await SysTenantService.GetCurrentTenant();
-        tenant ??= await _sysTenantRep.GetFirstAsync(u => u.Id == SqlSugarConst.DefaultTenantId);
-        _ = tenant ?? throw Oops.Oh(ErrorCodeEnum.D1002);
-
+        var tenant = await SysTenantService.GetCurrentTenantSysInfo();
         var wayList = await _sysConfigRep.Context.Queryable<SysUserRegWay>()
             .Where(u => u.TenantId == tenant.Id)
             .Select(u => new { Label = u.Name, Value = u.Id })
@@ -290,7 +287,7 @@ public class SysConfigService : IDynamicApiController, ITransient
     [DisplayName("保存系统信息")]
     public async Task SaveSysInfo(InfoSaveInput input)
     {
-        var tenant = await SysTenantService.GetCurrentTenant() ?? throw Oops.Oh(ErrorCodeEnum.D1002);
+        var tenant = await _sysTenantRep.GetFirstAsync(u => u.Id == _userManager.TenantId) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
         if (!string.IsNullOrEmpty(input.LogoBase64)) SysTenantService.SetLogoUrl(tenant, input.LogoBase64, input.LogoFileName);
         // await UpdateConfigValue(ConfigConst.SysCaptcha, (input.Captcha == YesNoEnum.Y).ToString());
         // await UpdateConfigValue(ConfigConst.SysSecondVer, (input.SecondVer == YesNoEnum.Y).ToString());

+ 7 - 4
Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs

@@ -116,18 +116,21 @@ public class SysTenantService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 获取当前租户
+    /// 获取当前租户系统信息
     /// </summary>
     /// <returns></returns>
     [NonAction]
-    public async Task<SysTenant> GetCurrentTenant()
+    public async Task<SysTenant> GetCurrentTenantSysInfo()
     {
         var tenantId = long.Parse(App.User?.FindFirst(ClaimConst.TenantId)?.Value ?? "0");
         var host = App.HttpContext.Request.Host.Host.ToLower();
-        return await _sysTenantRep.AsQueryable()
-            .WhereIF(tenantId > 0, u => u.Id == tenantId)
+        var tenant = await _sysTenantRep.AsQueryable()
+            .WhereIF(tenantId > 0, u => u.Id == tenantId && SqlFunc.ToLower(u.Host).Equals(host))
             .WhereIF(!(tenantId > 0), u => SqlFunc.ToLower(u.Host).Equals(host))
             .FirstAsync();
+        tenant ??= await _sysTenantRep.GetFirstAsync(u => u.Id == SqlSugarConst.DefaultTenantId);
+        _ = tenant ?? throw Oops.Oh(ErrorCodeEnum.D1002);
+        return tenant;
     }
 
     /// <summary>