From 5ab69ff61f5490e16be68af985a787fca6faa647 Mon Sep 17 00:00:00 2001 From: zhangqi <2794379662@qq.com> Date: Mon, 31 May 2021 18:12:48 +0800 Subject: [PATCH] =?UTF-8?q?update:=E6=A0=B9=E6=8D=AE=E6=9D=83=E9=99=90?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E5=8C=BA=E5=9F=9F=E7=9B=AE=E5=BD=95=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/AreaCodeController.cs | 18 ++++++++++++++---- Api/Ewide.Core/Ewide.Core.xml | 9 ++++++++- .../Service/Area/AreaCodeService.cs | 14 ++++++++++++-- .../Service/Area/IAreaCodeService.cs | 4 +++- .../Service/User/SysUserAreaService.cs | 13 +++++-------- Api/Ewide.Core/Service/User/SysUserService.cs | 19 ++++++++++++++++--- 6 files changed, 58 insertions(+), 19 deletions(-) diff --git a/Api/Ewide.Core/Controller/AreaCodeController.cs b/Api/Ewide.Core/Controller/AreaCodeController.cs index 12010bc..32b93f1 100644 --- a/Api/Ewide.Core/Controller/AreaCodeController.cs +++ b/Api/Ewide.Core/Controller/AreaCodeController.cs @@ -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; } /// /// 查询 @@ -81,7 +85,13 @@ namespace Ewide.Core.Controller [HttpGet("/sysArea/tree")] public async Task> GetAreaCodeTree([FromQuery]int? level) { - return await _areaCodeService.GetAreaCodeTree(level); + List areaCodeList = null; + if (!_userManager.SuperAdmin) + { + var orgIdList = await _sysUserService.GetUserDataScopeIdList(_userManager.UserId); + areaCodeList = await _areaCodeService.GetAreaCodeListByOrgId(orgIdList); + } + return await _areaCodeService.GetAreaCodeTree(level, areaCodeList); } } } diff --git a/Api/Ewide.Core/Ewide.Core.xml b/Api/Ewide.Core/Ewide.Core.xml index 019a8e8..c2cc3e0 100644 --- a/Api/Ewide.Core/Ewide.Core.xml +++ b/Api/Ewide.Core/Ewide.Core.xml @@ -3058,7 +3058,7 @@ 区域代码 - + 获取区域目录树 @@ -6967,6 +6967,13 @@ + + + 获取用户拥有区域 + + + + 重置用户密码 diff --git a/Api/Ewide.Core/Service/Area/AreaCodeService.cs b/Api/Ewide.Core/Service/Area/AreaCodeService.cs index 32838d7..66bf906 100644 --- a/Api/Ewide.Core/Service/Area/AreaCodeService.cs +++ b/Api/Ewide.Core/Service/Area/AreaCodeService.cs @@ -80,7 +80,7 @@ namespace Ewide.Core.Service.Area /// 获取区域目录树 /// /// - public async Task> GetAreaCodeTree(int? level) + public async Task> GetAreaCodeTree(int? level, List 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().DoTreeBuild(cachedAreaCodes.Select(u => new AreaTreeNode { Code = u.Code, @@ -167,5 +172,10 @@ namespace Ewide.Core.Service.Area } return true; } + + public async Task> GetAreaCodeListByOrgId(List orgIdList) + { + return await _sysOrgRep.DetachedEntities.Where(p => orgIdList.Contains(p.Id)).Select(p => p.AreaCode).Distinct().ToListAsync(); + } } } diff --git a/Api/Ewide.Core/Service/Area/IAreaCodeService.cs b/Api/Ewide.Core/Service/Area/IAreaCodeService.cs index 8c5d20b..f1dfb7e 100644 --- a/Api/Ewide.Core/Service/Area/IAreaCodeService.cs +++ b/Api/Ewide.Core/Service/Area/IAreaCodeService.cs @@ -16,8 +16,10 @@ namespace Ewide.Core.Service.Area Task GetAreaCode(string code); Task> GetAreaCodeWithChildren(string code); - Task> GetAreaCodeTree(int? level); + Task> GetAreaCodeTree(int? level,List areaCodeList); Task QueryAreaCodePageList([FromQuery] AreaCodeInput input); + + Task> GetAreaCodeListByOrgId(List orgIdList); } } diff --git a/Api/Ewide.Core/Service/User/SysUserAreaService.cs b/Api/Ewide.Core/Service/User/SysUserAreaService.cs index f1ff1a0..118ebc2 100644 --- a/Api/Ewide.Core/Service/User/SysUserAreaService.cs +++ b/Api/Ewide.Core/Service/User/SysUserAreaService.cs @@ -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 + })); } } } diff --git a/Api/Ewide.Core/Service/User/SysUserService.cs b/Api/Ewide.Core/Service/User/SysUserService.cs index 25d66db..c84a930 100644 --- a/Api/Ewide.Core/Service/User/SysUserService.cs +++ b/Api/Ewide.Core/Service/User/SysUserService.cs @@ -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 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; } /// @@ -288,7 +292,16 @@ namespace Ewide.Core.Service { return await _sysUserDataScopeService.GetUserDataScopeIdList(input.Id); } - + /// + /// 获取用户拥有区域 + /// + /// + /// + [HttpGet("/sysUser/ownArea")] + public async Task GetUserOwnArea([FromQuery] QueryUserInput input) + { + return await _sysUserAreaService.GetUserAreaIdList(input.Id); + } /// /// 重置用户密码 ///