update:循环引用了 先去掉
This commit is contained in:
@@ -20,9 +20,10 @@ namespace Ewide.Core
|
||||
private readonly IRepository<SysUserRole> _sysUserRoleRep;
|
||||
private readonly IRepository<SysEmp> _sysEmpRep; // 员工表
|
||||
private readonly IRepository<SysOrg> _sysOrgRep;
|
||||
private readonly IRepository<SysRoleMenu> _sysRoleMenuRep;
|
||||
private readonly IRepository<SysMenu> _sysMenuRep;
|
||||
private readonly IHttpContextAccessor _httpContextAccessor;
|
||||
private readonly ISysMenuService _sysMenuService;
|
||||
private readonly ISysUserService _sysUserService;
|
||||
private readonly ISysCacheService _sysCacheService;
|
||||
|
||||
public string UserId
|
||||
{
|
||||
@@ -55,9 +56,7 @@ namespace Ewide.Core
|
||||
IRepository<SysUserRole> sysUserRoleRep,
|
||||
IRepository<SysEmp> sysEmpRep,
|
||||
IRepository<SysOrg> sysOrgRep,
|
||||
IHttpContextAccessor httpContextAccessor,
|
||||
ISysMenuService sysMenuService,
|
||||
ISysUserService sysUserService)
|
||||
IHttpContextAccessor httpContextAccessor, ISysCacheService sysCacheService, IRepository<SysRoleMenu> sysRoleMenuRep, IRepository<SysMenu> sysMenuRep)
|
||||
{
|
||||
_sysUserRep = sysUserRep;
|
||||
_sysRoleRep = sysRoleRep;
|
||||
@@ -65,8 +64,9 @@ namespace Ewide.Core
|
||||
_sysEmpRep = sysEmpRep;
|
||||
_sysOrgRep = sysOrgRep;
|
||||
_httpContextAccessor = httpContextAccessor;
|
||||
_sysMenuService = sysMenuService;
|
||||
_sysUserService = sysUserService;
|
||||
_sysCacheService = sysCacheService;
|
||||
_sysRoleMenuRep = sysRoleMenuRep;
|
||||
_sysMenuRep = sysMenuRep;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -171,13 +171,25 @@ namespace Ewide.Core
|
||||
return await GetUserRoleList(UserId);
|
||||
}
|
||||
|
||||
public Task<List<string>> GetLoginPermissionList()
|
||||
public async Task<List<string>> GetLoginPermissionList()
|
||||
{
|
||||
return _sysMenuService.GetLoginPermissionList(UserId);
|
||||
}
|
||||
public Task<List<string>> GetUserDataScopeIdList()
|
||||
{
|
||||
return _sysUserService.GetUserDataScopeIdList(UserId);
|
||||
var permissions = await _sysCacheService.GetPermission(UserId); // 先从缓存里面读取
|
||||
if (permissions == null || permissions.Count < 1)
|
||||
{
|
||||
var roleIdList = await GetUserRoleIdList();
|
||||
var menuIdList = await _sysRoleMenuRep.DetachedEntities
|
||||
.Where(u => roleIdList.Contains(u.SysRoleId))
|
||||
.Select(u => u.SysMenuId).ToListAsync();
|
||||
permissions = await _sysMenuRep.DetachedEntities.Where(u => menuIdList.Contains(u.Id))
|
||||
.Where(u => u.Type == (int)MenuType.FUNCTION)
|
||||
.Where(u => u.Status == (int)CommonStatus.ENABLE)
|
||||
.Select(u => u.Permission).ToListAsync();
|
||||
#if DEBUG
|
||||
#else
|
||||
await _sysCacheService.SetPermission(userId, permissions); // 缓存结果
|
||||
#endif
|
||||
}
|
||||
return permissions;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user