public async Task <UserlayersVM> GetUserlayersAsync(string userName) { var db = base.CreateDb <User>(); var result = new UserlayersVM(); var user = await db.GetFirstAsync(t => t.UserName == userName); if (user != null) { var userLayers = new UserlayersVM(); userLayers.Self = user; result = await this.RecursionUserlayersAsync(new List <int>() { user.Id }, userLayers); } return(result); }
/// <summary> /// 递归用户层(子父级) 获取userId 的集合 /// </summary> /// <param name="userLayers"></param> /// <param name="allUserId"></param> /// <returns></returns> public List <int> GetAllChildUserId(UserlayersVM userLayers, List <int> allUserId) { if (userLayers.Self != null) { allUserId.Add(userLayers.Self.Id); } if (userLayers.ChildAccounts != null) { if (userLayers.ChildAccounts.Count > 0) { foreach (var item in userLayers.ChildAccounts) { this.GetAllChildUserId(item, allUserId); } } } return(allUserId); }
/// <summary> /// 递归获取用户层(子父级) /// </summary> /// <param name="ids"></param> /// <param name="userLayers"></param> /// <returns></returns> public async Task <UserlayersVM> RecursionUserlayersAsync(List <int> ids, UserlayersVM userLayers) { var db = base.CreateDb <User>(); if (await db.Query().AnyAsync(t => ids.Contains(t.ParentId))) { List <User> users = await db.GetListByAsync(t => ids.Contains(t.ParentId)); userLayers.ChildAccounts = users.Select(t => new UserlayersVM { Self = t }).ToList(); foreach (var item in userLayers.ChildAccounts) { await RecursionUserlayersAsync(new List <int>() { item.Self.Id }, item); } } return(userLayers); }