Exemplo n.º 1
0
 public SqlSugarPagedList <UserListResponseDto> GetUserList([FromBody] UserListRequestDto dto)
 {
     return(_sysUserSerivce.GetUserList(dto));
 }
Exemplo n.º 2
0
        /// <summary>
        /// 获取用户列表
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public SqlSugarPagedList <UserListResponseDto> GetUserList(UserListRequestDto dto)
        {
            var query = dbClint.Queryable <SysUser>().Where(u => u.IsDeleted == false);

            query.WhereIF(!string.IsNullOrEmpty(dto.UserName), u => u.UserName.Contains(dto.UserName.Trim()));
            if (dto.OrgId > 0)
            {
                //获取部门下面的所有子部门
                var reKey = SysRelevanceEnum.SysUser_SysOrg.ToString();
                var orgId = _sysOrgService.GetAllChild(new List <long> {
                    dto.OrgId.Value
                }).Select(o => o.OrgId).ToArray();
                var rUserId = dbClint.Queryable <SysRelevance>().Where(o => o.Key == reKey && orgId.Contains(o.SecondId) && o.IsDeleted == false).Select(o => o.FirstId).Distinct().ToArray();
                query.Where(o => rUserId.Contains(o.UserId));
            }
            int count = 0;
            var list  = query.Select(u => new UserListResponseDto()
            {
                UserId        = u.UserId,
                UserCode      = u.UserCode,
                UserName      = u.UserName,
                Avatar        = u.Avatar,
                Phone         = u.Phone,
                Email         = u.Email,
                Qq            = u.Qq,
                Sex           = u.Sex,
                Status        = u.Status,
                LastLoginIp   = u.LastLoginIp,
                LastLoginDate = u.LastLoginDate,
                CreateDate    = u.CreateDate,
                Remark        = u.Remark,
            }).ToPageList(dto.Page, dto.Limit, ref count);

            //var result = list.Adapt<List<UserListResponseDto>>();

            if (list.Count > 0)
            {
                var userIds  = list.Select(u => u.UserId).ToList();
                var userOrgs = _sysOrgService.GetUserOrg(userIds);
                var roleList = dbClint.Queryable <SysRelevance>().Where(o => o.Key == SysRelevanceEnum.SysUser_SysRole.ToString() && userIds.Contains(o.FirstId) && o.IsDeleted == false).Select(o => new
                {
                    UserId = o.FirstId,
                    RoleId = o.SecondId
                }).Distinct().ToArray();
                list.ForEach(l =>
                {
                    var userOrg = userOrgs.Where(o => o.UserId == l.UserId).FirstOrDefault();
                    if (userOrg != null)
                    {
                        l.OrgId   = userOrg.OrgId;
                        l.OrgName = userOrg.OrgName;
                    }
                    l.RoleId = roleList.Where(r => r.UserId == l.UserId).Select(r => r.RoleId).ToList();
                });
            }
            return(new SqlSugarPagedList <UserListResponseDto>()
            {
                PageIndex = dto.Page,
                PageSize = dto.Limit,
                Items = list,
                TotalCount = count
            });
        }