bugfix: linq查询报错&&用户筛选权限后的目录树
This commit is contained in:
@@ -17,12 +17,14 @@ namespace Ewide.Core.Service.Area
|
||||
private readonly IRepository<SysAreaCode> _areaCodeRep;
|
||||
private readonly IRepository<SysOrg> _sysOrgRep;
|
||||
private readonly ISysCacheService _sysCacheService;
|
||||
private readonly IUserManager _userManager;
|
||||
|
||||
public AreaCodeService(IRepository<SysAreaCode> AreaCodeRep, ISysCacheService sysCacheService, IRepository<SysOrg> sysOrgRep)
|
||||
public AreaCodeService(IRepository<SysAreaCode> AreaCodeRep, ISysCacheService sysCacheService, IRepository<SysOrg> sysOrgRep, IUserManager userManager)
|
||||
{
|
||||
_areaCodeRep = AreaCodeRep;
|
||||
_sysCacheService = sysCacheService;
|
||||
_sysOrgRep = sysOrgRep;
|
||||
_userManager = userManager;
|
||||
}
|
||||
/// <summary>
|
||||
/// 添加一个区域
|
||||
@@ -76,44 +78,6 @@ namespace Ewide.Core.Service.Area
|
||||
}
|
||||
return cachedAreaCodes.FirstOrDefault(a => a.Code == code);
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取区域目录树
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<List<AreaTreeNode>> GetAreaCodeTree(int? level, List<string> areaCodeList)
|
||||
{
|
||||
level = level.GetValueOrDefault(100);
|
||||
var cachedAreaCodes = await _sysCacheService.GetAreaCode();
|
||||
if (cachedAreaCodes == null || cachedAreaCodes.Count < 0)
|
||||
{
|
||||
cachedAreaCodes = await _areaCodeRep.DetachedEntities.ToListAsync();
|
||||
#if DEBUG
|
||||
#else
|
||||
await _sysCacheService.SetAreaCode(cachedAreaCodes);
|
||||
#endif
|
||||
}
|
||||
var query = cachedAreaCodes.Where(p => p.LevelType <= level);
|
||||
var resAreaCode = new List<SysAreaCode>();
|
||||
if (areaCodeList != null)
|
||||
{
|
||||
foreach (var code in areaCodeList)
|
||||
{
|
||||
var queryRes = query.Where(p => p.Code.StartsWith(code));
|
||||
resAreaCode.AddRange(queryRes);
|
||||
}
|
||||
cachedAreaCodes = resAreaCode.Distinct().ToList();
|
||||
}
|
||||
|
||||
return new TreeBuildUtil<AreaTreeNode>().DoTreeBuild(cachedAreaCodes.Select(u => new AreaTreeNode
|
||||
{
|
||||
Code = u.Code,
|
||||
AdCode = u.AdCode,
|
||||
ParentCode = u.ParentCode,
|
||||
Name = u.Name,
|
||||
LevelType = u.LevelType,
|
||||
Note = u.Note
|
||||
}).ToList());
|
||||
}
|
||||
|
||||
public async Task<List<SysAreaCode>> GetAreaCodeWithChildren(string code)
|
||||
{
|
||||
@@ -183,5 +147,37 @@ namespace Ewide.Core.Service.Area
|
||||
{
|
||||
return await _sysOrgRep.DetachedEntities.Where(p => orgIdList.Contains(p.Id)).Select(p => p.AreaCode).Distinct().ToListAsync();
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取区域目录树
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<List<AreaTreeNode>> GetAreaCodeTree(int? level)
|
||||
{
|
||||
level = level.GetValueOrDefault(100);
|
||||
var cachedAreaCodes = await _sysCacheService.GetAreaCode();
|
||||
if (cachedAreaCodes == null || cachedAreaCodes.Count < 0)
|
||||
{
|
||||
cachedAreaCodes = await _areaCodeRep.DetachedEntities.ToListAsync();
|
||||
#if DEBUG
|
||||
#else
|
||||
await _sysCacheService.SetAreaCode(cachedAreaCodes);
|
||||
#endif
|
||||
}
|
||||
if (!_userManager.SuperAdmin)
|
||||
{
|
||||
var userAreaList = await _userManager.GetUserAllAreaList();
|
||||
cachedAreaCodes = cachedAreaCodes.Where(a => userAreaList.Contains(a.Code)).ToList();
|
||||
}
|
||||
|
||||
return new TreeBuildUtil<AreaTreeNode>().DoTreeBuild(cachedAreaCodes.Select(u => new AreaTreeNode
|
||||
{
|
||||
Code = u.Code,
|
||||
AdCode = u.AdCode,
|
||||
ParentCode = u.ParentCode,
|
||||
Name = u.Name,
|
||||
LevelType = u.LevelType,
|
||||
Note = u.Note
|
||||
}).ToList());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace Ewide.Core.Service.Area
|
||||
Task<SysAreaCode> GetAreaCode(string code);
|
||||
Task<List<SysAreaCode>> GetAreaCodeWithChildren(string code);
|
||||
|
||||
Task<List<AreaTreeNode>> GetAreaCodeTree(int? level,List<string> areaCodeList);
|
||||
Task<List<AreaTreeNode>> GetAreaCodeTree(int? level);
|
||||
|
||||
Task<dynamic> QueryAreaCodePageList([FromQuery] AreaCodeInput input);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user