diff --git a/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs b/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs index ed783456..218c8dc4 100644 --- a/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs +++ b/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs @@ -204,6 +204,7 @@ namespace Myshipping.Application [HttpPost("/BookingOrder/PageData")] public async Task PageData(BookingOrderInput input) { + List userlist = await _right.GetDataScopeList(351064299098181); List pidlist = new List(); if (!string.IsNullOrWhiteSpace(input.SEALNO) || !string.IsNullOrWhiteSpace(input.CNTRNO)) diff --git a/Myshipping.Core/Const/CommonConst.cs b/Myshipping.Core/Const/CommonConst.cs index bf011d00..adba3a9d 100644 --- a/Myshipping.Core/Const/CommonConst.cs +++ b/Myshipping.Core/Const/CommonConst.cs @@ -50,7 +50,14 @@ public class CommonConst /// public const string CACHE_KEY_USERDATASCOPEZDY = "userdatascopezdy"; - + /// + /// SysEmp + /// + public const string CACHE_KEY_SysEmp = "SysEmp"; + /// + /// SysOrg + /// + public const string CACHE_KEY_SysOrg = "SysOrg"; #region 公共数据库 /// diff --git a/Myshipping.Core/Service/Emp/SysEmpService.cs b/Myshipping.Core/Service/Emp/SysEmpService.cs index 6c718c41..8980827c 100644 --- a/Myshipping.Core/Service/Emp/SysEmpService.cs +++ b/Myshipping.Core/Service/Emp/SysEmpService.cs @@ -20,14 +20,15 @@ public class SysEmpService : ISysEmpService, ITransient private readonly ISysEmpExtOrgPosService _sysEmpExtOrgPosService; private readonly ISysEmpPosService _sysEmpPosService; - - public SysEmpService(SqlSugarRepository sysEmpRep, + private readonly ISysCacheService _sysCache;//缓存 + public SysEmpService(SqlSugarRepository sysEmpRep, ISysCacheService sysCache, ISysEmpExtOrgPosService sysEmpExtOrgPosService, ISysEmpPosService sysEmpPosService) { _sysEmpRep = sysEmpRep; _sysEmpExtOrgPosService = sysEmpExtOrgPosService; _sysEmpPosService = sysEmpPosService; + _sysCache = sysCache; } /// @@ -91,6 +92,8 @@ public class SysEmpService : ISysEmpService, ITransient // 更新职位信息 await _sysEmpPosService.AddOrUpdate(emp.Id, sysEmpParam.PosIdList); + var Emp = await _sysEmpRep.AsQueryable().ToListAsync(); + _sysCache.Set(CommonConst.CACHE_KEY_SysEmp, Emp); _sysEmpRep.CurrentCommitTran(); } catch (System.Exception) @@ -115,6 +118,8 @@ public class SysEmpService : ISysEmpService, ITransient u.OrgName = orgName; }); await _sysEmpRep.UpdateAsync(emps); + var Emp = await _sysEmpRep.AsQueryable().ToListAsync(); + _sysCache.Set(CommonConst.CACHE_KEY_SysEmp, Emp); } /// @@ -146,6 +151,8 @@ public class SysEmpService : ISysEmpService, ITransient await _sysEmpPosService.DeleteEmpPosInfoByUserId(empId); // 删除员工信息 await _sysEmpRep.DeleteAsync(emp); + var Emp = await _sysEmpRep.AsQueryable().ToListAsync(); + _sysCache.Set(CommonConst.CACHE_KEY_SysEmp, Emp); _sysEmpRep.CurrentCommitTran(); } catch (System.Exception) diff --git a/Myshipping.Core/Service/Org/SysOrgService.cs b/Myshipping.Core/Service/Org/SysOrgService.cs index 9ef86031..8f55331c 100644 --- a/Myshipping.Core/Service/Org/SysOrgService.cs +++ b/Myshipping.Core/Service/Org/SysOrgService.cs @@ -145,6 +145,9 @@ public class SysOrgService : ISysOrgService, IDynamicApiController, ITransient await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_DATASCOPE); await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_USERSDATASCOPE); } + var Org = await _sysOrgRep.AsQueryable().ToListAsync(); + _sysCacheService.Set(CommonConst.CACHE_KEY_SysOrg, Org); + } /// @@ -219,7 +222,8 @@ public class SysOrgService : ISysOrgService, IDynamicApiController, ITransient } await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_DATASCOPE); await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_USERSDATASCOPE); - + var Org = await _sysOrgRep.AsQueryable().ToListAsync(); + _sysCacheService.Set(CommonConst.CACHE_KEY_SysOrg, Org); } /// @@ -272,7 +276,7 @@ public class SysOrgService : ISysOrgService, IDynamicApiController, ITransient await _sysOrgRep.AsUpdateable(sysOrg).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); _sysOrgRep.CurrentCommitTran(); - + } catch (System.Exception) { @@ -281,7 +285,8 @@ public class SysOrgService : ISysOrgService, IDynamicApiController, ITransient } await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_DATASCOPE); await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_USERSDATASCOPE); - + var Org = await _sysOrgRep.AsQueryable().ToListAsync(); + _sysCacheService.Set(CommonConst.CACHE_KEY_SysOrg, Org); } /// @@ -387,6 +392,7 @@ public class SysOrgService : ISysOrgService, IDynamicApiController, ITransient [HttpGet("/sysOrg/treeList")] public async Task GetOrgTreeList() { + var orgs = await _sysOrgRep .Where(u => u.Status == (int)CommonStatus.ENABLE && u.TenantId == UserManager.TENANT_ID) .OrderBy(u => u.Sort) @@ -410,15 +416,37 @@ public class SysOrgService : ISysOrgService, IDynamicApiController, ITransient /// public async Task> GetUserIdListInOrg(long orgId) { + List org = new List(); + List emp = new List(); + if (_sysCacheService.Exists(CommonConst.CACHE_KEY_SysOrg)) + { + org = await _sysCacheService.GetAsync>(CommonConst.CACHE_KEY_SysOrg); + } + else + { + org = await _sysOrgRep.AsQueryable().ToListAsync(); + _sysCacheService.Set(CommonConst.CACHE_KEY_SysOrg, org); + } + + + if (_sysCacheService.Exists(CommonConst.CACHE_KEY_SysEmp)) + { + emp = await _sysCacheService.GetAsync>(CommonConst.CACHE_KEY_SysEmp); + } + else + { + emp = await _sysEmpRep.AsQueryable().ToListAsync(); + _sysCacheService.Set(CommonConst.CACHE_KEY_SysEmp, emp); + } + + //获取所有子部门 - var orgIdList = _sysOrgRep.AsQueryable() - .Where(x => x.Pids.Contains($"[{orgId}]")) + var orgIdList = org.Where(x => x.Pids.Contains($"[{orgId}]")) .Select(x => x.Id) .ToList(); //获取部门下的人 - var uidList = _sysEmpRep.AsQueryable() - .Where(x => x.OrgId == orgId || orgIdList.Contains(x.OrgId)) + var uidList = emp.Where(x => x.OrgId == orgId || orgIdList.Contains(x.OrgId)) .Select(x => x.Id) .ToList(); diff --git a/Myshipping.Core/Service/User/SysDataUserMenu.cs b/Myshipping.Core/Service/User/SysDataUserMenu.cs index 3e61038a..99fccd8e 100644 --- a/Myshipping.Core/Service/User/SysDataUserMenu.cs +++ b/Myshipping.Core/Service/User/SysDataUserMenu.cs @@ -119,7 +119,7 @@ public class SysDataUserMenuService : ISysDataUserMenu, IDynamicApiController, I throw Oops.Bah("请上传正确数据!"); } - if (input.childrens!=null&& input.childrens.Count()>0) + if (input.childrens != null && input.childrens.Count() > 0) { await _sysUserDataScopeRep.DeleteAsync(x => x.SysUserId == input.UserId); @@ -140,7 +140,7 @@ public class SysDataUserMenuService : ISysDataUserMenu, IDynamicApiController, I var userdatalist = await _sysUserDataScopeRep.AsQueryable().ToListAsync(); _sysCache.Set(CommonConst.CACHE_KEY_USERDATASCOPEZDY, userdatalist); } - + } catch (System.Exception) { @@ -148,17 +148,40 @@ public class SysDataUserMenuService : ISysDataUserMenu, IDynamicApiController, I } } - /// - /// 获取权限合集 - /// - /// 菜单id - /// 是否查看编辑权限 - /// - public async Task> GetDataScopeList(long menuid,bool IsEdit=false) + /// + /// 获取权限合集 + /// + /// 菜单id + /// 是否查看编辑权限 + /// + public async Task> GetDataScopeList(long menuid, bool IsEdit = false) { List list = new List(); List zdylist = new List(); + List org = new List(); + List emp = new List(); List datascope = new List(); + if (_sysCache.Exists(CommonConst.CACHE_KEY_SysOrg)) + { + org = await _sysCache.GetAsync>(CommonConst.CACHE_KEY_SysOrg); + } + else + { + org = await _sysOrgRep.AsQueryable().ToListAsync(); + _sysCache.Set(CommonConst.CACHE_KEY_SysOrg, org); + } + + + if (_sysCache.Exists(CommonConst.CACHE_KEY_SysEmp)) + { + emp = await _sysCache.GetAsync>(CommonConst.CACHE_KEY_SysEmp); + } + else + { + emp = await _sysEmpRep.AsQueryable().ToListAsync(); + _sysCache.Set(CommonConst.CACHE_KEY_SysEmp, emp); + } + if (_sysCache.Exists(CommonConst.CACHE_KEY_USERDATASCOPE)) { list = await _sysCache.GetAsync>(CommonConst.CACHE_KEY_USERDATASCOPE); @@ -189,33 +212,38 @@ public class SysDataUserMenuService : ISysDataUserMenu, IDynamicApiController, I } else if (_dataScopeType == DataScopeType.DEPT) { - datascope = await _sysEmpRep.AsQueryable().InnerJoin((d, t) => d.OrgId == t.OrgId && d.Id == UserManager.UserId).Select(d => d.Id).ToListAsync(); + var orgidlist = emp.Where(x => x.Id == UserManager.UserId).Select(x => x.OrgId).ToList(); + datascope = emp.Where(x => orgidlist.Contains(x.OrgId)).Select(x => x.Id).ToList(); } else if (_dataScopeType == DataScopeType.DEPT_WITH_CHILD) { //获取本部门 - long orgid = _sysEmpRep.Where(x => x.Id == UserManager.UserId).Select(x => x.OrgId).First(); + long orgid = emp.Where(x => x.Id == UserManager.UserId).Select(x => x.OrgId).First(); //获取下属部门及下属部门 - var orglist = await _sysOrgRep.Where(x => x.TenantId == UserManager.TENANT_ID && x.Pids.Contains(orgid.ToString())).Select(x => x.Id).ToListAsync(); + var orglist = org.Where(x => x.TenantId == UserManager.TENANT_ID && x.Pids.Contains(orgid.ToString())).Select(x => x.Id).ToList(); orglist.Add(orgid); - datascope = await _sysEmpRep.Where(x => orglist.Contains(x.OrgId)).Select(x => x.Id).ToListAsync(); + datascope = emp.Where(x => orglist.Contains(x.OrgId)).Select(x => x.Id).ToList(); } else if (_dataScopeType == DataScopeType.DEFINE) { - var sysorg= zdylist.Where(x => x.SysUserId == UserManager.UserId).Select(x => x.SysOrgId).ToList(); - List orglist=new List(); + var sysorg = zdylist.Where(x => x.SysUserId == UserManager.UserId).Select(x => x.SysOrgId).ToList(); + List orglist = new List(); foreach (var orgId in sysorg) { - var o= _sysOrgRep.AsQueryable().Where(x => x.Pids.Contains(orgId.ToString())).Select(x => x.Id).ToList(); + var o = org.Where(x => x.Pids.Contains(orgId.ToString())).Select(x => x.Id).ToList(); orglist = orglist.Union(o).ToList(); } - var useridlist = _sysEmpRep.AsQueryable().Where(x => orglist.Contains(x.OrgId)).Select(x => x.Id).ToList(); + var useridlist = emp.Where(x => orglist.Contains(x.OrgId)).Select(x => x.Id).ToList(); datascope = useridlist; } else { datascope.Add(UserManager.UserId); } + if (IsEdit && datascope == null) + { + datascope.Add(UserManager.UserId); + } return datascope; }