update:根据权限筛选区域目录树

This commit is contained in:
2021-05-31 18:12:48 +08:00
parent 05ab0ec335
commit 5ab69ff61f
6 changed files with 58 additions and 19 deletions

View File

@@ -1,4 +1,5 @@
using Ewide.Core.Service.Area;
using Ewide.Core.Service;
using Ewide.Core.Service.Area;
using Ewide.Core.Service.Area.Dto;
using Furion.DynamicApiController;
using Mapster;
@@ -18,10 +19,13 @@ namespace Ewide.Core.Controller
public class AreaCodeController : IDynamicApiController
{
private readonly IAreaCodeService _areaCodeService;
public AreaCodeController(IAreaCodeService areaCodeService)
private readonly ISysUserService _sysUserService;
private readonly IUserManager _userManager;
public AreaCodeController(IAreaCodeService areaCodeService, IUserManager userManager, ISysUserService sysUserService)
{
_areaCodeService = areaCodeService;
_userManager = userManager;
_sysUserService = sysUserService;
}
/// <summary>
/// 查询
@@ -81,7 +85,13 @@ namespace Ewide.Core.Controller
[HttpGet("/sysArea/tree")]
public async Task<List<AreaTreeNode>> GetAreaCodeTree([FromQuery]int? level)
{
return await _areaCodeService.GetAreaCodeTree(level);
List<string> areaCodeList = null;
if (!_userManager.SuperAdmin)
{
var orgIdList = await _sysUserService.GetUserDataScopeIdList(_userManager.UserId);
areaCodeList = await _areaCodeService.GetAreaCodeListByOrgId(orgIdList);
}
return await _areaCodeService.GetAreaCodeTree(level, areaCodeList);
}
}
}

View File

@@ -3058,7 +3058,7 @@
<param name="code">区域代码</param>
<returns></returns>
</member>
<member name="M:Ewide.Core.Service.Area.AreaCodeService.GetAreaCodeTree(System.Nullable{System.Int32})">
<member name="M:Ewide.Core.Service.Area.AreaCodeService.GetAreaCodeTree(System.Nullable{System.Int32},System.Collections.Generic.List{System.String})">
<summary>
获取区域目录树
</summary>
@@ -6967,6 +6967,13 @@
<param name="input"></param>
<returns></returns>
</member>
<member name="M:Ewide.Core.Service.SysUserService.GetUserOwnArea(Ewide.Core.Service.QueryUserInput)">
<summary>
获取用户拥有区域
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:Ewide.Core.Service.SysUserService.ResetUserPwd(Ewide.Core.Service.QueryUserInput)">
<summary>
重置用户密码

View File

@@ -80,7 +80,7 @@ namespace Ewide.Core.Service.Area
/// 获取区域目录树
/// </summary>
/// <returns></returns>
public async Task<List<AreaTreeNode>> GetAreaCodeTree(int? level)
public async Task<List<AreaTreeNode>> GetAreaCodeTree(int? level, List<string> areaCodeList)
{
level = level.GetValueOrDefault(100);
var cachedAreaCodes = await _sysCacheService.GetAreaCode();
@@ -92,7 +92,12 @@ namespace Ewide.Core.Service.Area
await _sysCacheService.SetAreaCode(cachedAreaCodes);
#endif
}
cachedAreaCodes = cachedAreaCodes.Where(p => p.LevelType <= level).ToList();
var query = cachedAreaCodes.Where(p => p.LevelType <= level);
if (areaCodeList != null)
{
query = query.Where(p => areaCodeList.Contains(p.Code));
}
cachedAreaCodes = query.ToList();
return new TreeBuildUtil<AreaTreeNode>().DoTreeBuild(cachedAreaCodes.Select(u => new AreaTreeNode
{
Code = u.Code,
@@ -167,5 +172,10 @@ namespace Ewide.Core.Service.Area
}
return true;
}
public async Task<List<string>> GetAreaCodeListByOrgId(List<string> orgIdList)
{
return await _sysOrgRep.DetachedEntities.Where(p => orgIdList.Contains(p.Id)).Select(p => p.AreaCode).Distinct().ToListAsync();
}
}
}

View File

@@ -16,8 +16,10 @@ namespace Ewide.Core.Service.Area
Task<SysAreaCode> GetAreaCode(string code);
Task<List<SysAreaCode>> GetAreaCodeWithChildren(string code);
Task<List<AreaTreeNode>> GetAreaCodeTree(int? level);
Task<List<AreaTreeNode>> GetAreaCodeTree(int? level,List<string> areaCodeList);
Task<dynamic> QueryAreaCodePageList([FromQuery] AreaCodeInput input);
Task<List<string>> GetAreaCodeListByOrgId(List<string> orgIdList);
}
}

View File

@@ -50,15 +50,12 @@ namespace Ewide.Core.Service.User
{
u.Delete();
});
input.GrantAreaCodeList.ForEach(u =>
var dbset = _sysUserAreaRep.Entities;
await _sysUserAreaRep.InsertAsync(input.GrantAreaCodeList.Select(u => new SysUserArea
{
new SysUserArea
{
SysUserId = input.Id,
AreaCode = u
}.Insert();
});
SysUserId = input.Id,
AreaCode = u
}));
}
}
}

View File

@@ -1,4 +1,5 @@
using Furion.DatabaseAccessor;
using Ewide.Core.Service.Role;
using Furion.DatabaseAccessor;
using Furion.DatabaseAccessor.Extensions;
using Furion.DataEncryption;
using Furion.DependencyInjection;
@@ -27,13 +28,15 @@ namespace Ewide.Core.Service
private readonly ISysEmpService _sysEmpService;
private readonly ISysUserDataScopeService _sysUserDataScopeService;
private readonly ISysUserRoleService _sysUserRoleService;
private readonly ISysUserAreaService _sysUserAreaService;
public SysUserService(IRepository<SysUser> sysUserRep,
IUserManager userManager,
ISysCacheService sysCacheService,
ISysEmpService sysEmpService,
ISysUserDataScopeService sysUserDataScopeService,
ISysUserRoleService sysUserRoleService)
ISysUserRoleService sysUserRoleService,
ISysUserAreaService sysUserAreaService)
{
_sysUserRep = sysUserRep;
_userManager = userManager;
@@ -41,6 +44,7 @@ namespace Ewide.Core.Service
_sysEmpService = sysEmpService;
_sysUserDataScopeService = sysUserDataScopeService;
_sysUserRoleService = sysUserRoleService;
_sysUserAreaService = sysUserAreaService;
}
/// <summary>
@@ -288,7 +292,16 @@ namespace Ewide.Core.Service
{
return await _sysUserDataScopeService.GetUserDataScopeIdList(input.Id);
}
/// <summary>
/// 获取用户拥有区域
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpGet("/sysUser/ownArea")]
public async Task<dynamic> GetUserOwnArea([FromQuery] QueryUserInput input)
{
return await _sysUserAreaService.GetUserAreaIdList(input.Id);
}
/// <summary>
/// 重置用户密码
/// </summary>