From a0c98b5014533d3bc8e1c4af2605be5965b4a1ad Mon Sep 17 00:00:00 2001 From: zhangqi <2794379662@qq.com> Date: Tue, 29 Jun 2021 10:29:53 +0800 Subject: [PATCH] =?UTF-8?q?update:=E5=BE=AA=E7=8E=AF=E5=BC=95=E7=94=A8?= =?UTF-8?q?=E4=BA=86=20=E5=85=88=E5=8E=BB=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HouseMember/HouseMemberService.cs | 2 +- .../Controller/AreaCodeController.cs | 6 ++- Api/Ewide.Core/Manager/IUserManager.cs | 4 +- Api/Ewide.Core/Manager/UserManager.cs | 38 ++++++++++++------- Api/Ewide.sln | 2 +- 5 files changed, 32 insertions(+), 20 deletions(-) diff --git a/Api/Ewide.Application/Service/HouseSafety/HouseMember/HouseMemberService.cs b/Api/Ewide.Application/Service/HouseSafety/HouseMember/HouseMemberService.cs index 4aa2e96..a1956b6 100644 --- a/Api/Ewide.Application/Service/HouseSafety/HouseMember/HouseMemberService.cs +++ b/Api/Ewide.Application/Service/HouseSafety/HouseMember/HouseMemberService.cs @@ -50,7 +50,7 @@ namespace Ewide.Application.Service [HttpPost("/houseMember/page")] public async Task QueryMemberPageList([FromBody] UserInput input) { - var dataScopes = await _userManager.GetUserDataScopeIdList(); + var dataScopes = await _sysUserService.GetUserDataScopeIdList(); var sql = @"SELECT SU.*, diff --git a/Api/Ewide.Core/Controller/AreaCodeController.cs b/Api/Ewide.Core/Controller/AreaCodeController.cs index ae75fd5..ce916f6 100644 --- a/Api/Ewide.Core/Controller/AreaCodeController.cs +++ b/Api/Ewide.Core/Controller/AreaCodeController.cs @@ -20,10 +20,12 @@ namespace Ewide.Core.Controller { private readonly IAreaCodeService _areaCodeService; private readonly IUserManager _userManager; - public AreaCodeController(IAreaCodeService areaCodeService, IUserManager userManager) + private readonly ISysUserService _sysUserService; + public AreaCodeController(IAreaCodeService areaCodeService, IUserManager userManager, ISysUserService sysUserService) { _areaCodeService = areaCodeService; _userManager = userManager; + _sysUserService = sysUserService; } /// /// 查询 @@ -86,7 +88,7 @@ namespace Ewide.Core.Controller List areaCodeList = null; if (!_userManager.SuperAdmin) { - var orgIdList = await _userManager.GetUserDataScopeIdList(); + var orgIdList = await _sysUserService.GetUserDataScopeIdList(); areaCodeList = await _areaCodeService.GetAreaCodeListByOrgId(orgIdList); } return await _areaCodeService.GetAreaCodeTree(level, areaCodeList); diff --git a/Api/Ewide.Core/Manager/IUserManager.cs b/Api/Ewide.Core/Manager/IUserManager.cs index 7c298fe..75122e1 100644 --- a/Api/Ewide.Core/Manager/IUserManager.cs +++ b/Api/Ewide.Core/Manager/IUserManager.cs @@ -1,5 +1,4 @@ -using Ewide.Core.Entity; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -24,6 +23,5 @@ namespace Ewide.Core Task> GetUserRoleList(string userId); Task> GetUserRoleList(); Task> GetLoginPermissionList(); - Task> GetUserDataScopeIdList(); } } \ No newline at end of file diff --git a/Api/Ewide.Core/Manager/UserManager.cs b/Api/Ewide.Core/Manager/UserManager.cs index 37cd958..d5d48a9 100644 --- a/Api/Ewide.Core/Manager/UserManager.cs +++ b/Api/Ewide.Core/Manager/UserManager.cs @@ -20,9 +20,10 @@ namespace Ewide.Core private readonly IRepository _sysUserRoleRep; private readonly IRepository _sysEmpRep; // 员工表 private readonly IRepository _sysOrgRep; + private readonly IRepository _sysRoleMenuRep; + private readonly IRepository _sysMenuRep; private readonly IHttpContextAccessor _httpContextAccessor; - private readonly ISysMenuService _sysMenuService; - private readonly ISysUserService _sysUserService; + private readonly ISysCacheService _sysCacheService; public string UserId { @@ -55,9 +56,7 @@ namespace Ewide.Core IRepository sysUserRoleRep, IRepository sysEmpRep, IRepository sysOrgRep, - IHttpContextAccessor httpContextAccessor, - ISysMenuService sysMenuService, - ISysUserService sysUserService) + IHttpContextAccessor httpContextAccessor, ISysCacheService sysCacheService, IRepository sysRoleMenuRep, IRepository sysMenuRep) { _sysUserRep = sysUserRep; _sysRoleRep = sysRoleRep; @@ -65,8 +64,9 @@ namespace Ewide.Core _sysEmpRep = sysEmpRep; _sysOrgRep = sysOrgRep; _httpContextAccessor = httpContextAccessor; - _sysMenuService = sysMenuService; - _sysUserService = sysUserService; + _sysCacheService = sysCacheService; + _sysRoleMenuRep = sysRoleMenuRep; + _sysMenuRep = sysMenuRep; } /// @@ -171,13 +171,25 @@ namespace Ewide.Core return await GetUserRoleList(UserId); } - public Task> GetLoginPermissionList() + public async Task> GetLoginPermissionList() { - return _sysMenuService.GetLoginPermissionList(UserId); - } - public Task> GetUserDataScopeIdList() - { - return _sysUserService.GetUserDataScopeIdList(UserId); + var permissions = await _sysCacheService.GetPermission(UserId); // 先从缓存里面读取 + if (permissions == null || permissions.Count < 1) + { + var roleIdList = await GetUserRoleIdList(); + var menuIdList = await _sysRoleMenuRep.DetachedEntities + .Where(u => roleIdList.Contains(u.SysRoleId)) + .Select(u => u.SysMenuId).ToListAsync(); + permissions = await _sysMenuRep.DetachedEntities.Where(u => menuIdList.Contains(u.Id)) + .Where(u => u.Type == (int)MenuType.FUNCTION) + .Where(u => u.Status == (int)CommonStatus.ENABLE) + .Select(u => u.Permission).ToListAsync(); +#if DEBUG +#else + await _sysCacheService.SetPermission(userId, permissions); // 缓存结果 +#endif + } + return permissions; } } } \ No newline at end of file diff --git a/Api/Ewide.sln b/Api/Ewide.sln index c48a622..bb1280d 100644 --- a/Api/Ewide.sln +++ b/Api/Ewide.sln @@ -15,7 +15,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ewide.Database.Migrations", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ewide.Web.Entry", "Ewide.Web.Entry\Ewide.Web.Entry.csproj", "{9826E365-EEE9-4721-A738-B02AB64D47E5}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ewide.Test", "Ewide.Test\Ewide.Test.csproj", "{DECE4796-6B13-4607-9C27-C1FE093D4DC8}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ewide.Test", "Ewide.Test\Ewide.Test.csproj", "{DECE4796-6B13-4607-9C27-C1FE093D4DC8}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution