diff --git a/Api/Ewide.Core/Service/User/SysUserService.cs b/Api/Ewide.Core/Service/User/SysUserService.cs index 53e18a4..d58d8a3 100644 --- a/Api/Ewide.Core/Service/User/SysUserService.cs +++ b/Api/Ewide.Core/Service/User/SysUserService.cs @@ -176,9 +176,9 @@ namespace Ewide.Core.Service if (isExist) throw Oops.Oh(ErrorCode.D1003); var user = input.Adapt(); - await user.UpdateIncludeAsync(new[] { - nameof(SysUser.Account), - nameof(SysUser.NickName), + await user.UpdateIncludeAsync(new[] { + nameof(SysUser.Account), + nameof(SysUser.NickName), nameof(SysUser.Name), nameof(SysUser.Birthday), nameof(SysUser.Sex), @@ -671,13 +671,13 @@ namespace Ewide.Core.Service [HttpPost("/sysUser/GetOrgUserTree")] public async Task GetOrgUserTree(OrgUserInput input) { - var list = await (from u in _sysUserRep.DetachedEntities - join e in _sysEmpRep.DetachedEntities on u.Id equals e.Id - select new OrgUserTreeNode { Id = u.Id, ParentId = e.OrgId,Type=1,Name=u.Name }).Union( - from o in _sysOrgRep.DetachedEntities - select new OrgUserTreeNode { Id = o.Id, ParentId = o.Pid ,Type=0,Name=o.Name}).ToListAsync(); - - return new TreeBuildUtil().DoTreeBuild(list); + var list = await (from u in _sysUserRep.DetachedEntities + join e in _sysEmpRep.DetachedEntities on u.Id equals e.Id + select new OrgUserTreeNode { Id = u.Id, ParentId = e.OrgId, Type = 1, Name = u.Name }).Union( + from o in _sysOrgRep.DetachedEntities + select new OrgUserTreeNode { Id = o.Id, ParentId = o.Pid, Type = 0, Name = o.Name }).ToListAsync(); + + return new TreeBuildUtil(new TreeBuildSetting { AddEmptyChildren = false }).DoTreeBuild(list); } } } diff --git a/Api/Ewide.Core/Util/TreeBuildUtil.cs b/Api/Ewide.Core/Util/TreeBuildUtil.cs index 155bb81..b199517 100644 --- a/Api/Ewide.Core/Util/TreeBuildUtil.cs +++ b/Api/Ewide.Core/Util/TreeBuildUtil.cs @@ -27,6 +27,10 @@ namespace Ewide.Core /// void SetChildren(IList children); } + public class TreeBuildSetting + { + public bool AddEmptyChildren { get; set; } = true; + } /// /// 递归工具类,用于遍历有父子关系的节点,例如菜单树,字典树等等 @@ -34,10 +38,15 @@ namespace Ewide.Core /// public class TreeBuildUtil where T : ITreeNode { + TreeBuildSetting _setting; + public TreeBuildUtil(TreeBuildSetting setting = null) + { + _setting = setting ?? new TreeBuildSetting(); + } /// /// 顶级节点的父节点Id(默认0) /// - private readonly List _rootParentIds = new List {string.Empty,Guid.Empty.ToString() }; + private readonly List _rootParentIds = new List { string.Empty, Guid.Empty.ToString() }; /// /// 构造树节点 @@ -59,7 +68,8 @@ namespace Ewide.Core if (results.Count < 1) { var ids = new List(); - nodes.ForEach(u => { + nodes.ForEach(u => + { ids.Add(u.GetId()); }); @@ -89,7 +99,10 @@ namespace Ewide.Core }); nodeSubLists.ForEach(u => BuildChildNodes(totalNodes, u, new List())); childNodeLists.AddRange(nodeSubLists); - node.SetChildren(childNodeLists); + if (childNodeLists.Count > 0 || _setting.AddEmptyChildren) + { + node.SetChildren(childNodeLists); + } } } }