public async Task <MessageModel <List <Department> > > GetTreeTable(long f = 0, string key = "")
        {
            List <Department> departments = new List <Department>();
            var departmentList            = await _departmentServices.Query(d => d.IsDeleted == false);

            if (string.IsNullOrEmpty(key) || string.IsNullOrWhiteSpace(key))
            {
                key = "";
            }

            if (key != "")
            {
                departments = departmentList.Where(a => a.Name.Contains(key)).OrderBy(a => a.OrderSort).ToList();
            }
            else
            {
                departments = departmentList.Where(a => a.Pid == f).OrderBy(a => a.OrderSort).ToList();
            }

            foreach (var item in departments)
            {
                List <int> pidarr = new() { };
                var        parent = departmentList.FirstOrDefault(d => d.Id == item.Pid);

                while (parent != null)
                {
                    pidarr.Add(parent.Id);
                    parent = departmentList.FirstOrDefault(d => d.Id == parent.Pid);
                }

                pidarr.Reverse();
                pidarr.Insert(0, 0);
                item.PidArr = pidarr;

                item.hasChildren = departmentList.Where(d => d.Pid == item.Id).Any();
            }


            return(Success(departments, "获取成功"));
        }
Exemple #2
0
        public async Task <MessageModel <PageModel <SysUserInfoDto> > > Get(int page = 1, string key = "")
        {
            if (string.IsNullOrEmpty(key) || string.IsNullOrWhiteSpace(key))
            {
                key = "";
            }
            int intPageSize = 50;


            var data = await _sysUserInfoServices.QueryPage(a => a.IsDeleted != true && a.Status >= 0 && ((a.LoginName != null && a.LoginName.Contains(key)) || (a.RealName != null && a.RealName.Contains(key))), page, intPageSize, " Id desc ");


            #region MyRegion

            // 这里可以封装到多表查询,此处简单处理
            var allUserRoles = await _userRoleServices.Query(d => d.IsDeleted == false);

            var allRoles = await _roleServices.Query(d => d.IsDeleted == false);

            var allDepartments = await _departmentServices.Query(d => d.IsDeleted == false);

            var sysUserInfos = data.data;
            foreach (var item in sysUserInfos)
            {
                var currentUserRoles = allUserRoles.Where(d => d.UserId == item.Id).Select(d => d.RoleId).ToList();
                item.RIDs      = currentUserRoles;
                item.RoleNames = allRoles.Where(d => currentUserRoles.Contains(d.Id)).Select(d => d.Name).ToList();
                var departmentNameAndIds = GetFullDepartmentName(allDepartments, item.DepartmentId);
                item.DepartmentName = departmentNameAndIds.Item1;
                item.Dids           = departmentNameAndIds.Item2;
            }

            data.data = sysUserInfos;
            #endregion


            return(Success(data.ConvertTo <SysUserInfoDto>(_mapper)));
        }
Exemple #3
0
 public async Task <IEnumerable <DepartmentServices> > Query(Dictionary <string, dynamic> para)
 {
     return(await _department.Query(para));
 }