diff --git a/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs b/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs index 721b6fe5..a6c29dd2 100644 --- a/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs +++ b/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs @@ -380,7 +380,12 @@ namespace Myshipping.Application .WhereIF(!string.IsNullOrWhiteSpace(input.ZhanCangFlag), u => u.ZhanCangFlag == input.ZhanCangFlag) .WhereIF(saleUserList != null && saleUserList.Count > 0, o => saleUserList.Contains(o.SALEID)) .WhereIF(opUserList != null && opUserList.Count > 0, o => opUserList.Contains(o.OPID)) - .WhereIF(userlist != null && userlist.Count() > 0, u => userlist.Contains((long)u.CreatedUserId) || UserManager.UserId.ToString() == u.ROUTEID || UserManager.Name.ToString() == u.ROUTE || UserManager.UserId.ToString() == u.SALEID || UserManager.Name.ToString() == u.SALE || UserManager.UserId.ToString() == u.OPID || UserManager.Name.ToString() == u.OP || UserManager.UserId.ToString() == u.DOCID || UserManager.Name.ToString() == u.DOC || UserManager.UserId.ToString() == u.CUSTSERVICEID || UserManager.Name.ToString() == u.CUSTSERVICE); + .WhereIF(userlist != null && userlist.Count() > 0, u => userlist.Contains((long)u.CreatedUserId) + || UserManager.UserId.ToString() == u.ROUTEID || UserManager.Name.ToString() == u.ROUTE || + UserManager.UserId.ToString() == u.SALEID || UserManager.Name.ToString() == u.SALE || + UserManager.UserId.ToString() == u.OPID || UserManager.Name.ToString() == u.OP || + UserManager.UserId.ToString() == u.DOCID || UserManager.Name.ToString() == u.DOC || + UserManager.UserId.ToString() == u.CUSTSERVICEID || UserManager.Name.ToString() == u.CUSTSERVICE); if (!string.IsNullOrEmpty(input.SortField) || input.MultiSort == null || input.MultiSort.Count == 0) { @@ -426,15 +431,17 @@ namespace Myshipping.Application }).ToList(); var statusloglist = _repStatuslog.AsQueryable().Filter(null, true).Where(x => (x.Status == "提箱" || x.Status == "返场") && x.IsDeleted == false).ToList(); var statuslogdetaillist = _statuslogdetail.AsQueryable().ToList(); + var BookingStatusList= _repBookingStatus.AsQueryable().Filter(null, true).ToList(); + var bookingremarkList = _bookingremark.AsQueryable().Filter(null, true).ToList(); foreach (var item in list.Items) { - var sta = _repBookingStatus.AsQueryable().Filter(null, true).Where(x => x.BookingId == item.Id).ToList(); + var sta = BookingStatusList.Where(x => x.BookingId == item.Id).ToList(); if (sta != null) { item.bookstatus = sta; } - var st = _bookingremark.AsQueryable().Filter(null, true).Where(x => x.PId == item.Id).ToList(); + var st = bookingremarkList.Where(x => x.PId == item.Id).ToList(); if (st != null) { item.bookremark = st; @@ -534,7 +541,6 @@ namespace Myshipping.Application { if (d.Status == "提箱") { - CNTRNODtolist.Add(new CNTRNODto { BookingId = item.Id, diff --git a/Myshipping.Core/Const/CommonConst.cs b/Myshipping.Core/Const/CommonConst.cs index 40d6d83b..d69dcf2a 100644 --- a/Myshipping.Core/Const/CommonConst.cs +++ b/Myshipping.Core/Const/CommonConst.cs @@ -50,7 +50,10 @@ public class CommonConst /// public const string CACHE_KEY_USERDATASCOPEZDY = "userdatascopezdy"; - + /// + /// 新 用户数据权限缓存(自定义) + /// + public const string CACHE_KEY_USERDATASCOPEZDY = "userdatascopezdy"; #region 公共数据库 /// diff --git a/Myshipping.Core/Service/Emp/SysEmpExtOrgPosService.cs b/Myshipping.Core/Service/Emp/SysEmpExtOrgPosService.cs index 56255c76..4e96a577 100644 --- a/Myshipping.Core/Service/Emp/SysEmpExtOrgPosService.cs +++ b/Myshipping.Core/Service/Emp/SysEmpExtOrgPosService.cs @@ -1,6 +1,4 @@ - - -using Furion.DependencyInjection; +using Furion.DependencyInjection; using Myshipping.Core.Entity; using SqlSugar; using System.Collections.Generic; diff --git a/Myshipping.Core/Service/Org/SysOrgService.cs b/Myshipping.Core/Service/Org/SysOrgService.cs index 73718d3e..9ef86031 100644 --- a/Myshipping.Core/Service/Org/SysOrgService.cs +++ b/Myshipping.Core/Service/Org/SysOrgService.cs @@ -9,7 +9,6 @@ using SqlSugar; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; - namespace Myshipping.Core.Service; /// diff --git a/Myshipping.Core/Service/User/SysDataUserMenu.cs b/Myshipping.Core/Service/User/SysDataUserMenu.cs index 9768eb91..3e61038a 100644 --- a/Myshipping.Core/Service/User/SysDataUserMenu.cs +++ b/Myshipping.Core/Service/User/SysDataUserMenu.cs @@ -27,7 +27,7 @@ public class SysDataUserMenuService : ISysDataUserMenu, IDynamicApiController, I private readonly SqlSugarRepository _sysOrgRep; // 组织机构表仓储 private readonly SqlSugarRepository _sysEmpRep; // 员工表仓储 private readonly SqlSugarRepository _sysuser; // 员工表 - private readonly SqlSugarRepository _sysUserDataScopeRep; // 用户数据范围表仓储 + private readonly SqlSugarRepository _sysUserDataScopeRep; // 自定义范围 public SysDataUserMenuService(SqlSugarRepository rep, ISysCacheService sysCache, SqlSugarRepository sysuser, SqlSugarRepository sysUserDataScopeRep, SqlSugarRepository sysEmpRep, SqlSugarRepository sysOrgRep) { _rep = rep; @@ -157,6 +157,7 @@ public class SysDataUserMenuService : ISysDataUserMenu, IDynamicApiController, I public async Task> GetDataScopeList(long menuid,bool IsEdit=false) { List list = new List(); + List zdylist = new List(); List datascope = new List(); if (_sysCache.Exists(CommonConst.CACHE_KEY_USERDATASCOPE)) { @@ -167,6 +168,16 @@ public class SysDataUserMenuService : ISysDataUserMenu, IDynamicApiController, I list = await _rep.AsQueryable().ToListAsync(); _sysCache.Set(CommonConst.CACHE_KEY_USERDATASCOPE, list); } + if (_sysCache.Exists(CommonConst.CACHE_KEY_USERDATASCOPEZDY)) + { + zdylist = await _sysCache.GetAsync>(CommonConst.CACHE_KEY_USERDATASCOPEZDY); + } + else + { + zdylist = await _sysUserDataScopeRep.AsQueryable().ToListAsync(); + _sysCache.Set(CommonConst.CACHE_KEY_USERDATASCOPEZDY, list); + } + DataScopeType _dataScopeType = list.Where(x => x.SysMenuId == menuid && x.SysUserId == UserManager.UserId).WhereIF(IsEdit == true, x => x.IsEdit == true).Select(x => x.DataScopeType).FirstOrDefault(); if (_dataScopeType == DataScopeType.ALL) { @@ -191,8 +202,15 @@ public class SysDataUserMenuService : ISysDataUserMenu, IDynamicApiController, I } else if (_dataScopeType == DataScopeType.DEFINE) { - datascope = await _sysUserDataScopeRep.AsQueryable().InnerJoin((d, t) => d.SysOrgId == t.OrgId && d.SysMenuId == menuid && d.SysUserId == UserManager.UserId) - .WhereIF(IsEdit == true, (d, t) => d.IsEdit == true).Select((d, t) => t.Id).ToListAsync(); + 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(); + orglist = orglist.Union(o).ToList(); + } + var useridlist = _sysEmpRep.AsQueryable().Where(x => orglist.Contains(x.OrgId)).Select(x => x.Id).ToList(); + datascope = useridlist; } else {