using AutoMapper; using New_College.Common; using New_College.IRepository.Base; using New_College.IServices; using New_College.Model.Models; using New_College.Model.ViewModels; using New_College.Services.BASE; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace New_College.Services { public class BlogArticleServices : BaseServices, IBlogArticleServices { IBaseRepository _dal; IMapper _mapper; public BlogArticleServices(IBaseRepository dal, IMapper mapper) { this._dal = dal; base.BaseDal = dal; this._mapper = mapper; } /// /// 获取视图博客详情信息 /// /// /// public async Task GetBlogDetails(int id) { // 此处想获取上一条下一条数据,因此将全部数据list出来,有好的想法请提出 //var bloglist = await base.Query(a => a.IsDeleted==false, a => a.bID); var blogArticle = (await base.Query(a => a.bID == id && a.bcategory == "技术博文")).FirstOrDefault(); BlogViewModels models = null; if (blogArticle != null) { models = _mapper.Map(blogArticle); //要取下一篇和上一篇,以当前id开始,按id排序后top(2),而不用取出所有记录 //这样在记录很多的时候也不会有多大影响 var nextBlogs = await base.Query(a => a.bID >= id && a.IsDeleted == false && a.bcategory == "技术博文", 2, "bID"); if (nextBlogs.Count == 2) { models.next = nextBlogs[1].btitle; models.nextID = nextBlogs[1].bID; } var prevBlogs = await base.Query(a => a.bID <= id && a.IsDeleted == false && a.bcategory == "技术博文", 2, "bID desc"); if (prevBlogs.Count == 2) { models.previous = prevBlogs[1].btitle; models.previousID = prevBlogs[1].bID; } //BlogArticle prevblog; //BlogArticle nextblog; //int blogIndex = bloglist.FindIndex(item => item.bID == id); //if (blogIndex >= 0) //{ // try // { // prevblog = blogIndex > 0 ? bloglist[blogIndex - 1] : null; // nextblog = blogIndex + 1 < bloglist.Count() ? bloglist[blogIndex + 1] : null; // // 注意就是这里,mapper // models = _mapper.Map(blogArticle); // if (nextblog != null) // { // models.next = nextblog.btitle; // models.nextID = nextblog.bID; // } // if (prevblog != null) // { // models.previous = prevblog.btitle; // models.previousID = prevblog.bID; // } // var entity2Viewmodel = _mapper.Map(models); // } // catch (Exception ex) { throw new Exception(ex.Message); } //} blogArticle.btraffic += 1; await base.Update(blogArticle, new List { "btraffic" }); } return models; } /// /// 获取博客列表 /// /// /// [Caching(AbsoluteExpiration = 10)] public async Task> GetBlogs() { var bloglist = await base.Query(a => a.bID > 0, a => a.bID); return bloglist; } } }