bugfix: linq查询报错&&用户筛选权限后的目录树

This commit is contained in:
2021-07-05 09:52:30 +08:00
parent 2e2800e43b
commit 9a97aba30b
5 changed files with 52 additions and 54 deletions

View File

@@ -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)
{