public async Task <MoPageData> GetTopicReplyAsync(int topicId, int userId, int page, int pageSize) { page = page > 0 ? page : 1; var data = new MoPageData { CurrentPage = page, PreviousPage = page > 1 ? page - 1 : 0 }; var replys = (await GetAllAsync(x => x.TopicId == topicId)); var total = replys.Count(); var skipCount = (page - 1) * pageSize; data.PageTotal = (total + pageSize - 1) / pageSize; data.NextPage = total <skipCount ? 0 : (total - skipCount)> pageSize ? page + 1 : 0; data.PageData = await replys.Join(_dbContext.Set <User>(), r => r.UserId, u => u.Id, (r, u) => new { UserId = u.Id, UserName = u.Id == userId ? "楼主" : u.UserName, HeadPhoto = u.HeadPhoto, ReplyId = r.Id, ReplyIndex = r.ReplyIndex, DesType = r.ReplyType, Message = r.Message, CreateTime = r.CreateTime.ToStandardFormatString(), ReplyCount = r.ReplyCount }) .OrderBy(x => x.ReplyId) .Skip(skipCount) .Take(pageSize) .ToListAsync(); return(data); }
public async Task <MoPageData> GetChildReplyAsync(int topicId, int userId, int index, int page, int pageSize) { index = index >= 2 ? index : 2; page = page <= 0 ? 1 : page; pageSize = pageSize > 5 ? pageSize : 5; var data = new MoPageData { CurrentPage = page, PreviousPage = page > 1 ? page - 1 : 0 }; var childReplies = GetAll(x => x.ReplyIndex == index && x.TopicId == topicId) .Join(_dbContext.Set <User>(), c => c.ReplyUserId, u => u.Id, (c, u) => new { Id = c.Id, UserId = c.UserId, UserName = c.UserId == userId ? "楼主" : u.UserName, HeadPhoto = u.HeadPhoto, DesType = c.ReplyType, Message = c.Message, CreateTime = c.CreateTime.ToStandardFormatString() }); var total = await childReplies.CountAsync(); var skipCount = (page - 1) * pageSize; if (total < skipCount) { data.PageData = await childReplies .OrderBy(x => x.Id) .TakeLast(total % pageSize) .ToListAsync(); data.NextPage = 0; } else { data.PageData = await childReplies .OrderBy(x => x.Id) .Skip(skipCount) .Take(pageSize) .ToListAsync(); data.NextPage = (total - skipCount) > pageSize ? page + 1 : 0; } return(data); }
public async Task <MoPageData> GetTopicSearchAsync(string query, int page, int pageSize) { query = query.Trim(); page = page > 1 ? page : page; pageSize = pageSize > 5 ? pageSize : 15; var data = new MoPageData { CurrentPage = page, PreviousPage = page > 1 ? page - 1 : 0 }; var searchResults = GetAll(x => EF.Functions.Like(x.TopicName, $"%{query}%")) .Select(x => new MoTopicSearchItem { Id = x.Id, TopicName = x.TopicName, StarCount = x.StarCount, ReplyCount = x.ReplyCount, CreateTime = x.CreateTime.ToStandardFormatString() }); var total = await searchResults.CountAsync(); var skipCount = (page - 1) * pageSize; if (total < skipCount) { data.PageData = await searchResults .OrderByDescending(x => x.Id) .TakeLast(total % pageSize) .ToListAsync(); data.NextPage = 0; } else { data.PageData = await searchResults .OrderByDescending(x => x.Id) .Skip(skipCount) .Take(pageSize) .ToListAsync(); data.NextPage = (total - skipCount) > pageSize ? page + 1 : 0; } return(data); }
public async Task <MoPageData> GetUserSearchAsync(string query, int page, int pageSize = 15) { query = query.Trim(); page = page > 1 ? page : 1; pageSize = pageSize > 5 ? pageSize : 15; var data = new MoPageData { CurrentPage = page, PreviousPage = page > 1 ? page - 1 : 0 }; var searchResults = GetAll(x => EF.Functions.Like(x.UserName, $"%{query}%")) .Select(x => new MoUserSearchItem { Id = x.Id, UserName = x.UserName, HeadPhoto = x.HeadPhoto, Introduce = x.Introduce ?? "这个人很懒,什么也没留下..." }); var total = await searchResults.CountAsync(); var skipCount = (page - 1) * pageSize; if (total < skipCount) { data.PageData = await searchResults .OrderBy(x => x.Id) .TakeLast(total % pageSize) .ToListAsync(); data.NextPage = 0; } else { data.PageData = await searchResults .OrderBy(x => x.Id) .Skip(skipCount) .Take(pageSize) .ToListAsync(); data.NextPage = (total - skipCount) > pageSize ? page + 1 : 0; } return(data); }
public async Task <MoPageData> GetUserStarListAsync(int topicId, int page, int pageSize) { page = page > 0 ? page : 1; var data = new MoPageData { CurrentPage = page, PreviousPage = page > 1 ? page - 1 : 0 }; var topics = await GetAllAsync(x => topicId == x.TopicId); var total = topics.Count(); var skipCount = (page - 1) * pageSize; if (total < skipCount) { data.PageData = topics .OrderByDescending(x => x.Id) .Select(x => new { Id = x.Id, Message = x.User.UserName, CreateTime = x.CreateTime.ToStandardFormatString() }) .TakeLast(total % pageSize) .ToList(); data.NextPage = 0; } else { data.PageData = topics .OrderByDescending(x => x.Id) .Select(x => new { Id = x.Id, Message = x.User.UserName, CreateTime = x.CreateTime.ToStandardFormatString() }) .Skip(skipCount) .Take(pageSize) .ToList(); data.NextPage = (total - skipCount) > pageSize ? page + 1 : 0; } return(data); }
public async Task <MoPageData> GetUserReplyLog(int userId, int page, int pageSize) { page = page > 1 ? page : 1; var data = new MoPageData { CurrentPage = page, PreviousPage = page > 1 ? page - 1 : 0 }; var topics = await GetAllAsync(x => userId == x.UserId); var total = topics.Count(); var skipCount = (page - 1) * pageSize; if (total < skipCount) { data.PageData = topics .OrderByDescending(x => x.Id) .Select(x => new { Id = x.Id, Message = x.ReplyType == ReplyType.Text ? (x.Message.Length > 15 ? x.Message.Substring(15) + "..." : x.Message) : "【上传图片】", CreateTime = x.CreateTime.ToStandardFormatString() }) .TakeLast(total % pageSize) .ToList(); data.NextPage = 0; } else { data.PageData = topics .OrderByDescending(x => x.Id) .Select(x => new { Id = x.Id, Message = x.ReplyType == ReplyType.Text ? (x.Message.Length > 15 ? x.Message.Substring(15) + "..." : x.Message) : "【上传图片】", CreateTime = x.CreateTime.ToStandardFormatString() }) .Skip(skipCount) .Take(pageSize) .ToList(); data.NextPage = total > skipCount ? page + 1 : 0; } return(data); }
public async Task <IActionResult> GetChildReply(int id, int index, int page, int pageSize) { var data = new MoData(); var topic = await _uf.TopicRepository.GetByIdAsync(id); MoPageData pageData = await _uf.ReplyUserRepository.GetChildReplyAsync(id, topic.UserId, index, page, pageSize); if (pageData.PageData != null) { data.Data = pageData; data.IsOk = true; } else { data.IsOk = false; } return(Json(data)); }