This commit is contained in:
2023-05-31 10:19:05 +08:00
parent 1b65a7a9e5
commit 9c621c75cd
238 changed files with 9905 additions and 4034 deletions

View File

@@ -145,4 +145,16 @@ public interface IUserManager
/// <param name="organizeId">组织Id.</param>
/// <returns></returns>
Task<List<string>> GetUserOrgRoleIds(string roleIds, string organizeId);
/// <summary>
/// 判断是否管理员.
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
bool IsAdmin(string userId);
/// <summary>
/// 获取管理员用户id.
/// </summary>
string GetAdminUserId();
}

View File

@@ -11,6 +11,7 @@ using JNPF.DependencyInjection;
using JNPF.Systems.Entitys.Entity.Permission;
using JNPF.Systems.Entitys.Permission;
using JNPF.Systems.Entitys.System;
using Mapster;
using Microsoft.AspNetCore.Http;
using SqlSugar;
using System.Security.Claims;
@@ -118,7 +119,7 @@ public class UserManager : IUserManager, IScoped
/// </summary>
public string ToKen
{
get => String.IsNullOrEmpty(App.HttpContext?.Request.Headers["Authorization"]) ? App.HttpContext?.Request.Query["token"] : App.HttpContext?.Request.Headers["Authorization"];
get => string.IsNullOrEmpty(App.HttpContext?.Request.Headers["Authorization"]) ? App.HttpContext?.Request.Query["token"] : App.HttpContext?.Request.Headers["Authorization"];
}
/// <summary>
@@ -134,7 +135,7 @@ public class UserManager : IUserManager, IScoped
/// </summary>
public string TenantId
{
get => ConnectionConfig.ConfigId;
get => ConnectionConfig?.ConfigId;
}
/// <summary>
@@ -142,7 +143,7 @@ public class UserManager : IUserManager, IScoped
/// </summary>
public string TenantDbName
{
get => ConnectionConfig.ConfigList.Find(it => it.IsMaster.Equals(true)).ServiceName;
get => ConnectionConfig?.ConfigList?.Find(it => it.IsMaster.Equals(true)).ServiceName;
}
/// <summary>
@@ -204,9 +205,11 @@ public class UserManager : IUserManager, IScoped
{
UserAgent userAgent = new UserAgent(_httpContext);
var data = new UserInfoModel();
var userCache = string.Format("{0}:{1}:{2}", TenantId, CommonConst.CACHEKEYUSER, UserId);
var userDataScope = await GetUserDataScopeAsync(UserId);
var ipAddress = NetHelper.Ip;
//var ipAddressName = await NetHelper.GetLocation(ipAddress);
var userDataScope = await GetUserDataScopeAsync(UserId);
var sysConfigInfo = await _repository.AsSugarClient().Queryable<SysConfigEntity>().FirstAsync(s => s.Category.Equals("SysConfig") && s.Key.ToLower().Equals("tokentimeout"));
data = await _repository.AsQueryable().Where(it => it.Id == UserId)
.Select(a => new UserInfoModel
@@ -235,11 +238,14 @@ public class UserManager : IUserManager, IScoped
birthday = a.Birthday,
systemId = a.SystemId,
signImg = SqlFunc.Subqueryable<SignImgEntity>().Where(a => a.CreatorUserId == UserId && a.IsDefault == 1).Select(a => a.SignImg),
changePasswordDate = a.ChangePasswordDate,
loginTime = DateTime.Now,
}).FirstAsync();
if (data.portalId.IsNullOrWhiteSpace()) data.portalId = string.Empty;
if (data != null && data.organizeName.IsNotEmptyOrNull())
{
var orgIdTree = data?.organizeName?.Split(',');
data.organizeIdList = orgIdTree.ToList();
var organizeName = await _repository.AsSugarClient().Queryable<OrganizeEntity>().Where(x => orgIdTree.Contains(x.Id)).OrderBy(x => x.SortCode).OrderBy(x => x.CreatorTime).Select(x => x.FullName).ToListAsync();
data.organizeName = string.Join("/", organizeName);
}
@@ -247,8 +253,6 @@ public class UserManager : IUserManager, IScoped
{
data.organizeName = data.departmentName;
}
data.loginTime = DateTime.Now;
data.prevLogin = (await _repository.AsSugarClient().Queryable<SysConfigEntity>().FirstAsync(x => x.Category.Equals("SysConfig") && x.Key.ToLower().Equals("lastlogintimeswitch"))).Value.ParseToInt();
data.loginIPAddress = ipAddress;
//data.loginIPAddressName = ipAddressName;
@@ -277,7 +281,8 @@ public class UserManager : IUserManager, IScoped
data.tenantDbName = TenantDbName;
// 根据系统配置过期时间自动过期
await SetUserInfo(string.Format("{0}{1}_{2}", CommonConst.CACHEKEYUSER, TenantId, UserId), data, TimeSpan.FromMinutes(sysConfigInfo.Value.ParseToDouble()));
await SetUserInfo(userCache, data, TimeSpan.FromMinutes(sysConfigInfo.Value.ParseToDouble()));
return data;
}
@@ -1572,7 +1577,7 @@ public class UserManager : IUserManager, IScoped
ids.AddRange(Subsidiary);
for (int i = 0; i < ids.Count; i++)
{
if(i == 0)
if (i == 0)
{
switch (conditionItem.Logic)
{
@@ -1622,7 +1627,7 @@ public class UserManager : IUserManager, IScoped
}
else
{
if(itemMethod.Equals(QueryType.NotEqual) || itemMethod.Equals(QueryType.NotIncluded))
if (itemMethod.Equals(QueryType.NotEqual) || itemMethod.Equals(QueryType.NotIncluded))
conditionalList.Add(new { Key = (int)WhereType.And, Value = new { FieldName = itemField, FieldValue = ids[i], ConditionalType = (int)cmodel.ConditionalType } });
else
conditionalList.Add(new { Key = (int)WhereType.Or, Value = new { FieldName = itemField, FieldValue = ids[i], ConditionalType = (int)cmodel.ConditionalType } });
@@ -2009,6 +2014,16 @@ public class UserManager : IUserManager, IScoped
}
}
/// <summary>
/// 会否存在用户缓存.
/// </summary>
/// <param name="cacheKey"></param>
/// <returns></returns>
private async Task<bool> ExistsUserInfo(string cacheKey)
{
return await _cacheManager.ExistsAsync(cacheKey);
}
/// <summary>
/// 保存用户登录信息.
/// </summary>
@@ -2020,4 +2035,35 @@ public class UserManager : IUserManager, IScoped
{
return await _cacheManager.SetAsync(cacheKey, userInfo, timeSpan);
}
/// <summary>
/// 获取用户登录信息.
/// </summary>
/// <param name="cacheKey">key.</param>
/// <returns></returns>
private async Task<UserInfoModel> GetUserInfo(string cacheKey)
{
return (await _cacheManager.GetAsync(cacheKey)).Adapt<UserInfoModel>();
}
/// <summary>
/// 判断是否管理员.
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public bool IsAdmin(string userId)
{
if (userId == "admin") return true;
return _repository.AsSugarClient().Queryable<UserEntity>().Any(x => x.Id == userId && x.Account == "admin" && x.DeleteMark == null);
}
/// <summary>
/// 获取管理员用户id.
/// </summary>
public string GetAdminUserId()
{
var user = _repository.AsSugarClient().Queryable<UserEntity>().First(x => x.Account == "admin" && x.DeleteMark == null);
if (user.IsNotEmptyOrNull()) return user.Id;
return string.Empty;
}
}