WYB
2021-03-22 91b8cdad021ab052e4991f3d41834a6f0ddc36b8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
using AutoMapper;
using JiepeiWMS.Common;
using JiepeiWMS.IRepository.Base;
using JiepeiWMS.IServices;
using JiepeiWMS.Model.Models;
using JiepeiWMS.Model.ViewModels;
using JiepeiWMS.Services.BASE;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
 
namespace JiepeiWMS.Services
{
    public class BlogArticleServices : BaseServices<BlogArticle>, IBlogArticleServices
    {
        IBaseRepository<BlogArticle> _dal;
        IMapper _mapper;
        public BlogArticleServices(IBaseRepository<BlogArticle> dal, IMapper mapper)
        {
            this._dal = dal;
            base.BaseDal = dal;
            this._mapper = mapper;
        }
        /// <summary>
        /// 获取视图博客详情信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task<BlogViewModels> 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<BlogViewModels>(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<BlogViewModels>(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<BlogArticle>(models);
 
                //    }
                //    catch (Exception ex) { throw new Exception(ex.Message); }
                //}
 
 
                blogArticle.btraffic += 1;
                await base.Update(blogArticle, new List<string> { "btraffic" });
            }
 
            return models;
 
        }
 
 
        /// <summary>
        /// 获取博客列表
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        [Caching(AbsoluteExpiration = 10)]
        public async Task<List<BlogArticle>> GetBlogs()
        {
            var bloglist = await base.Query(a => a.bID > 0, a => a.bID);
 
            return bloglist;
 
        }
    }
}