bugfix: linq查询报错&&用户筛选权限后的目录树
This commit is contained in:
@@ -345,9 +345,16 @@ namespace Ewide.Core
|
||||
//本部门及以下 或者 本部门区域及以下 树结构显示本级和以下所有区域
|
||||
var extraUserArea = await GetUserExtraAreaScopeList(userId);
|
||||
var roles = await _sysUserRoleRep.DetachedEntities.Include(ur => ur.SysRole).Where(ur => ur.SysUserId == userId).Select(ur => ur.SysRole).ToListAsync();
|
||||
var extraRoleArea = await _sysRoleAreaRep.DetachedEntities.Where(ra => roles.Where(r => r.DataScopeType == (int)DataScopeType.DEFINE).Select(r => r.Id).Contains(ra.SysRoleId)).Select(ra => ra.AreaCode).ToListAsync();
|
||||
var customAreaRole = roles.Where(r => r.DataScopeType == (int)DataScopeType.DEFINE).Select(r => r.Id);
|
||||
var extraRoleArea = await _sysRoleAreaRep.DetachedEntities.Where(ra => customAreaRole.Contains(ra.SysRoleId)).Select(ra => ra.AreaCode).ToListAsync();
|
||||
var roleTypeArea = await GetUserDataScopeTypeAreaList(orgAreaCode, roles.Select(r => r.DataScopeType).ToList());
|
||||
return extraRoleArea.Concat(extraUserArea).Concat(roleTypeArea).Distinct().ToList();
|
||||
var extraArea = await GetUserExtraAreaList(extraRoleArea.Concat(extraUserArea).Distinct().ToList());
|
||||
return extraArea.Concat(roleTypeArea).Distinct().ToList();
|
||||
}
|
||||
private async Task<List<string>> GetUserExtraAreaList(List<string> extraAreaCode)
|
||||
{
|
||||
var cachedAreaCode = await GetCachedAreaCode();
|
||||
return cachedAreaCode.Select(a => a.Code).Where(a => extraAreaCode.Any(e => a.StartsWith(e))).ToList();
|
||||
}
|
||||
private async Task<List<string>> GetUserDataScopeTypeAreaList(string orgAreaCode, List<int> roleDataTypeList)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user