😎增加当前用户状态获取角色集合

This commit is contained in:
zuohuaijun 2025-09-15 15:52:55 +08:00
parent cf1aeb990f
commit aab44e447a
6 changed files with 38 additions and 28 deletions

View File

@ -41,6 +41,11 @@ public class CacheConst
/// </summary>
public const string KeyUserOrg = "sys_user_org:";
/// <summary>
/// 用户角色缓存
/// </summary>
public const string KeyUserRole = "sys_user_role:";
/// <summary>
/// 角色最大数据范围缓存
/// </summary>

View File

@ -500,6 +500,7 @@ public class SysRoleService : IDynamicApiController, ITransient
foreach (var userId in userIdList)
{
_sysCacheService.Remove($"{CacheConst.KeyUserApi}{userId}");
_sysCacheService.Remove($"{CacheConst.KeyUserRole}{userId}");
}
}
}

View File

@ -40,6 +40,7 @@ public class SysUserRoleService : ITransient
// 清除缓存
_sysCacheService.Remove($"{CacheConst.KeyUserApi}{input.UserId}");
_sysCacheService.Remove($"{CacheConst.KeyUserRole}{input.UserId}");
}
/// <summary>
@ -62,6 +63,7 @@ public class SysUserRoleService : ITransient
foreach (var userId in input.UserIdList)
{
_sysCacheService.Remove($"{CacheConst.KeyUserApi}{userId}");
_sysCacheService.Remove($"{CacheConst.KeyUserRole}{userId}");
}
}
@ -72,15 +74,12 @@ public class SysUserRoleService : ITransient
/// <returns></returns>
public async Task DeleteUserRoleByRoleId(long roleId)
{
var userIdList = await _sysUserRoleRep.AsQueryable()
.Where(u => u.RoleId == roleId)
.Select(u => u.UserId)
.ToListAsync();
var userIdList = await _sysUserRoleRep.AsQueryable().Where(u => u.RoleId == roleId).Select(u => u.UserId).ToListAsync();
// 清除缓存
foreach (var userId in userIdList)
{
_sysCacheService.Remove($"{CacheConst.KeyUserApi}{userId}");
_sysCacheService.Remove($"{CacheConst.KeyUserRole}{userId}");
}
await _sysUserRoleRep.DeleteAsync(u => u.RoleId == roleId);
@ -97,6 +96,7 @@ public class SysUserRoleService : ITransient
// 清除缓存
_sysCacheService.Remove($"{CacheConst.KeyUserApi}{userId}");
_sysCacheService.Remove($"{CacheConst.KeyUserRole}{userId}");
}
/// <summary>
@ -106,8 +106,7 @@ public class SysUserRoleService : ITransient
/// <returns></returns>
public async Task<List<SysRole>> GetUserRoleList(long userId)
{
var sysUserRoleList = await _sysUserRoleRep.AsQueryable().Includes(u => u.SysRole)
.Where(u => u.UserId == userId).ToListAsync();
var sysUserRoleList = await _sysUserRoleRep.AsQueryable().Includes(u => u.SysRole).Where(u => u.UserId == userId).ToListAsync();
return sysUserRoleList.Where(u => u.SysRole != null).Select(u => u.SysRole).ToList();
}
@ -118,8 +117,12 @@ public class SysUserRoleService : ITransient
/// <returns></returns>
public async Task<List<long>> GetUserRoleIdList(long userId)
{
return await _sysUserRoleRep.AsQueryable()
.Where(u => u.UserId == userId).Select(u => u.RoleId).ToListAsync();
var roleIds = _sysCacheService.Get<List<long>>($"{CacheConst.KeyUserRole}{userId}");
if (roleIds != null) return roleIds;
roleIds = await _sysUserRoleRep.AsQueryable().Where(u => u.UserId == userId).Select(u => u.RoleId).ToListAsync();
_sysCacheService.Set($"{CacheConst.KeyUserRole}{userId}", roleIds);
return roleIds;
}
/// <summary>
@ -142,7 +145,6 @@ public class SysUserRoleService : ITransient
/// <returns></returns>
public async Task<List<long>> GetUserIdList(long roleId)
{
return await _sysUserRoleRep.AsQueryable()
.Where(u => u.RoleId == roleId).Select(u => u.UserId).ToListAsync();
return await _sysUserRoleRep.AsQueryable().Where(u => u.RoleId == roleId).Select(u => u.UserId).ToListAsync();
}
}

View File

@ -91,16 +91,16 @@ public class UserManager(IHttpContextAccessor httpContextAccessor, SysCacheServi
/// </summary>
public string OpenId => httpContextAccessor.HttpContext?.User.FindFirst(ClaimConst.OpenId)?.Value;
///// <summary>
///// 角色Id集合
///// </summary>
//public List<long> RoleIds
//{
// get
// {
// return sysCacheService.Get<List<long>>($"{CacheConst.KeyUserOrg}{UserId}");
// }
//}
/// <summary>
/// 角色Id集合
/// </summary>
public List<long> RoleIds
{
get
{
return sysCacheService.Get<List<long>>($"{CacheConst.KeyUserRole}{UserId}");
}
}
/// <summary>
/// 机构Id集合
@ -114,7 +114,7 @@ public class UserManager(IHttpContextAccessor httpContextAccessor, SysCacheServi
}
/// <summary>
/// 权限集合
/// 权限集合(接口按钮)
/// </summary>
public List<List<string>> Permissions
{

View File

@ -24,10 +24,12 @@ public static class SqlSugarFilter
// 删除用户机构集合缓存
sysCacheService.Remove($"{CacheConst.KeyUserOrg}{userId}");
// 删除用户权限集合缓存(接口按钮)
sysCacheService.Remove($"{CacheConst.KeyUserApi}{userId}");
// 删除用户角色集合缓存
sysCacheService.Remove($"{CacheConst.KeyUserRole}{userId}");
// 删除最大数据权限缓存
sysCacheService.Remove($"{CacheConst.KeyRoleMaxDataScope}{userId}");
// 用户权限缓存(接口集合)
sysCacheService.Remove($"{CacheConst.KeyUserApi}{userId}");
// 删除用户机构(数据范围)缓存——过滤器
_cache.Remove($"db:{dbConfigId}:orgList:{userId}");
}

View File

@ -2,7 +2,7 @@
"name": "admin.net.pro",
"type": "module",
"version": "2.4.33",
"lastBuildTime": "2025.09.14",
"lastBuildTime": "2025.09.15",
"description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",
"author": "zuohuaijun",
"license": "MIT",
@ -20,8 +20,8 @@
},
"dependencies": {
"@element-plus/icons-vue": "^2.3.2",
"@logicflow/core": "^2.1.1",
"@logicflow/extension": "^2.1.2",
"@logicflow/core": "^2.1.2",
"@logicflow/extension": "^2.1.3",
"@microsoft/signalr": "^9.0.6",
"@vue-office/docx": "^1.6.3",
"@vue-office/excel": "^1.7.14",
@ -81,7 +81,7 @@
"vue-router": "^4.5.1",
"vue-signature-pad": "^3.0.2",
"vue3-tree-org": "^4.2.2",
"vxe-pc-ui": "^4.9.28",
"vxe-pc-ui": "^4.9.29",
"vxe-table": "^4.16.11",
"xe-utils": "^3.7.9",
"xlsx-js-style": "^1.2.0"