/// <summary> /// 获取评论列表 /// </summary> /// <param name="blogId"></param> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <returns></returns> public async Task <CommonPageResultDto <CommentViewDto> > CommentList(string blogId, int pageIndex, int pageSize) { CommonPageResultDto <CommentViewDto> rlt = new CommonPageResultDto <CommentViewDto>(); var qry = await(from a in _context.tbl_comment.Where(i => i.BlogId == blogId) join b in _context.tbl_user on a.From equals b.Id join c in _context.tbl_user on a.To equals c.Id into temp from g in temp.DefaultIfEmpty() select new CommentViewDto { Id = a.Id, FromUserName = b.Name, ToUserName = g == null ? null : g.Name, CurrentFloorNum = a.CurrentFloorNum, ToFloorNum = a.ToFloorNum, CreateAt = a.CreateAt, Address = b.LastLoginAddr, LikeTimes = a.LikeTimes, Content = a.Content }).ToListAsync(); rlt.DataCount = qry.Count; rlt.Page = pageIndex; rlt.PageSize = pageSize; rlt.PageCount = (qry.Count + pageSize - 1) / pageSize; rlt.Data = qry.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); return(rlt); }
/// <summary> /// 用户列表 /// </summary> /// <param name="keyword"></param> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <returns></returns> public async Task <CommonPageResultDto <UserViewDto> > UserList(string keyword, int pageIndex, int pageSize) { CommonPageResultDto <UserViewDto> rlt = new CommonPageResultDto <UserViewDto>(); var qry = await _context.tbl_user.OrderBy(s => s.RegisterAt).Select(i => _mapper.Map <UserViewDto>(i)).ToListAsync(); qry = String.IsNullOrEmpty(keyword) ? qry : qry.Where(i => i.Name.Contains(keyword) || i.Email.Contains(keyword)).ToList(); rlt.DataCount = qry.Count; rlt.Page = pageIndex; rlt.PageSize = pageSize; rlt.PageCount = (qry.Count + pageSize - 1) / pageSize; rlt.Data = qry.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); return(rlt); }
/// <summary> /// 查询博客列表 /// </summary> /// <param name="keyword"></param> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <returns></returns> public async Task <CommonPageResultDto <BlogListViewDto> > BlogList(string keyword, int pageIndex, int pageSize) { CommonPageResultDto <BlogListViewDto> rlt = new CommonPageResultDto <BlogListViewDto>(); List <BlogListViewDto> qry = await(from a in _context.tbl_blog join b in _context.tbl_blog_content on a.ContentId equals b.Id join c in _context.tbl_category on a.CategoryId equals c.Id where a.DeleteAt == null select new BlogListViewDto { Id = a.Id, Title = a.Title, Content = b.Content, CreateAt = a.CreateAt, UpdateAt = a.UpdateAt, PublishAt = a.PublishAt, CategoryName = c.Name, StateName = a.State == '1' ? "未发布" : "已发布", ViewTimes = a.ViewTimes, LikeTimes = a.LikeTimes }).OrderByDescending(i => i.CreateAt).ThenByDescending(i => i.UpdateAt).ToListAsync(); IQueryable <BlogTagQryDto> tagRlt = (from a in _context.tbl_blog_tag_relation join b in _context.tbl_tag on a.TagId equals b.Id select new BlogTagQryDto { BlogId = a.BlogId, TagName = b.Name }); qry = String.IsNullOrEmpty(keyword) ? qry : qry.Where(i => i.Title.Contains(keyword) || i.Content.Contains(keyword)).ToList(); foreach (var item in qry) { item.TagNameList = await tagRlt.Where(i => i.BlogId == item.Id).Select(i => i.TagName).ToListAsync(); } rlt.DataCount = qry.Count; rlt.Page = pageIndex; rlt.PageSize = pageSize; rlt.PageCount = (qry.Count + pageSize - 1) / pageSize; rlt.Data = qry.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); return(rlt); }
/// <summary> /// 查询博客列表 /// </summary> /// <param name="condition"></param> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <returns></returns> public async Task <CommonPageResultDto <BlogListViewDto> > BlogList(ConditionParamDto condition, int pageIndex, int pageSize) { CommonPageResultDto <BlogListViewDto> rlt = new CommonPageResultDto <BlogListViewDto>(); List <tbl_blog> list = new List <tbl_blog>(); //if (!String.IsNullOrEmpty(condition.Keyword)) //{ // list = await (from a in _context.tbl_blog.Where(i => i.Title.Contains(condition.Keyword)) // join b in _context.tbl_blog_content.Where(i => i.Content.Contains(condition.Keyword)) // on a.ContentId equals b.Id // select a).ToListAsync(); //} if (!String.IsNullOrEmpty(condition.CategoryId)) { list = _context.tbl_blog.Where(i => i.CategoryId == condition.CategoryId && i.DeleteAt == null).ToList(); } else if (!String.IsNullOrEmpty(condition.TagId)) { list = (from a in _context.tbl_blog.Where(i => i.DeleteAt == null) join b in _context.tbl_blog_tag_relation.Where(i => i.TagId == condition.TagId) on a.Id equals b.BlogId select a).ToList(); } else { list = await _context.tbl_blog.Where(i => i.DeleteAt == null).ToListAsync(); } List <BlogListViewDto> commentGroup = await(from a in _context.tbl_comment group a by a.BlogId into g select new BlogListViewDto { Id = g.Key, CommentTimes = g.Count() }).ToListAsync(); List <BlogListViewDto> qry = (from a in list join b in _context.tbl_blog_content on a.ContentId equals b.Id join c in _context.tbl_category on a.CategoryId equals c.Id join d in commentGroup on a.Id equals d.Id into temp from g in temp.DefaultIfEmpty() select new BlogListViewDto { Id = a.Id, Title = a.Title, Content = b.Content, CreateAt = a.CreateAt, ViewTimes = a.ViewTimes, LikeTimes = a.LikeTimes, PicUrl = a.PicUrl, CommentTimes = g == null ? 0 : g.CommentTimes // _context.tbl_comment.Count(i=>i.BlogId == a.Id) }).ToList(); IQueryable <TagViewDto> tagRlt = (from a in _context.tbl_blog_tag_relation join b in _context.tbl_tag on a.TagId equals b.Id select new TagViewDto { BlogId = a.BlogId, TagName = b.Name, TagId = b.Id, Sequence = b.Sequence }); qry = String.IsNullOrEmpty(condition.Keyword) ? qry : qry.Where(i => i.Title.Contains(condition.Keyword) || i.Content.Contains(condition.Keyword)).ToList(); foreach (var item in qry) { item.TagList = await tagRlt.Where(i => i.BlogId == item.Id).Select(i => i).ToListAsync(); } rlt.DataCount = qry.Count; rlt.Page = pageIndex; rlt.PageSize = pageSize; rlt.PageCount = (qry.Count + pageSize - 1) / pageSize; rlt.Data = qry.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); return(rlt); }