Пример #1
0
        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);
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        /// <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);
        }