public IActionResult PagedList(PagedQueryMemberDto dto) { var pagedQueryMembersResult = _memberService.PagedQueryMembers(dto); if (pagedQueryMembersResult.Code > 0) { return(Json(pagedQueryMembersResult)); } var result = new { Code = 0, Message = "", Total = pagedQueryMembersResult.Data.TotalCount, Data = pagedQueryMembersResult.Data.List }; return(Json(result)); }
/// <summary> /// 分页查询 /// </summary> /// <param name="dto"></param> /// <returns></returns> public PublicResult <PagedList <QueryMemberItem> > PagedQueryMembers(PagedQueryMemberDto dto) { var page = dto.Page ?? 1; var pageSize = dto.PageSize ?? 20; using (var client = DbFactory.CreateClient()) { var total = 0; var list = client.Queryable <Member>() .WhereIF(!dto.Keyword.IsNullOrEmpty(), t => t.Username.Contains(dto.Keyword)) .Select(t => new QueryMemberItem() { Id = t.Id, Username = t.Username, Password = t.Password, PasswordSalt = t.PasswordSalt, Email = t.Email, Mobile = t.Mobile, Avatar = t.Avatar, Gender = t.Gender, Birthday = t.Birthday, RegisterIp = t.RegisterIp, RegisterDatetime = t.RegisterDatetime, LoginCount = t.LoginCount, LastLoginIp = t.LastLoginIp, LastLoginDatetime = t.LastLoginDatetime, CannotLoginUntilDate = t.CannotLoginUntilDate, LastActiveDatetime = t.LastActiveDatetime, FailedLoginAttempts = t.FailedLoginAttempts, OnlineTimeCount = t.OnlineTimeCount, Address = t.Address, RegionCode = t.RegionCode, Lng = t.Lng, Lat = t.Lat, Geohash = t.Geohash, IsActive = t.IsActive, IsDelete = t.IsDelete, IsEmailValid = t.IsEmailValid, IsMobileValid = t.IsMobileValid, Nickname = t.Nickname, }) .OrderBy("id DESC") .ToPageList(page, pageSize, ref total); var memberIds = list.Select(it => it.Id).ToArray(); var roles = client.Queryable <MemberRole, Role>((mr, r) => new object[] { JoinType.Left, mr.RoleId == r.Id }) .Where((mr, r) => memberIds.Contains(mr.MemberId)) .Select((mr, r) => new { mr.MemberId, r.Name }) .ToList(); list.ForEach(it => { it.Roles = roles.Where(x => x.MemberId == it.Id).Select(x => x.Name).ToArray(); }); return(new PagedList <QueryMemberItem> { List = list, Page = page, PageSize = pageSize, TotalCount = total }); } }