forked from anjoy8/Blog.Core
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBlogController.cs
More file actions
106 lines (90 loc) · 3.42 KB
/
BlogController.cs
File metadata and controls
106 lines (90 loc) · 3.42 KB
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Blog.Core.Common;
using Blog.Core.IServices;
using Blog.Core.Model.Models;
using Blog.Core.Model.VeiwModels;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace Blog.Core.Controllers
{
/// <summary>
/// Blog控制器所有接口
/// </summary>
[Produces("application/json")]
[Route("api/Blog")]
[Authorize(Policy = "Admin")]
public class BlogController : Controller
{
IAdvertisementServices advertisementServices;
IBlogArticleServices blogArticleServices;
IRedisCacheManager redisCacheManager;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="advertisementServices"></param>
/// <param name="blogArticleServices"></param>
/// <param name="redisCacheManager"></param>
public BlogController(IAdvertisementServices advertisementServices, IBlogArticleServices blogArticleServices, IRedisCacheManager redisCacheManager)
{
this.advertisementServices = advertisementServices;
this.blogArticleServices = blogArticleServices;
this.redisCacheManager = redisCacheManager;
}
/// <summary>
/// 获取博客列表
/// </summary>
/// <param name="id"></param>
/// <param name="page"></param>
/// <param name="bcategory"></param>
/// <returns></returns>
[HttpGet]
public async Task<object> Get(int id, int page = 1, string bcategory = "技术博文")
{
int intTotalCount = 6;
int TotalCount = 1;
List<BlogArticle> blogArticleList = new List<BlogArticle>();
if (redisCacheManager.Get<object>("Redis.Blog") != null)
{
blogArticleList = redisCacheManager.Get<List<BlogArticle>>("Redis.Blog");
}
else
{
blogArticleList = await blogArticleServices.Query(a => a.bcategory == bcategory);
redisCacheManager.Set("Redis.Blog", blogArticleList, TimeSpan.FromHours(2));
}
TotalCount = blogArticleList.Count() / intTotalCount;
blogArticleList = blogArticleList.OrderByDescending(d => d.bID).Skip((page - 1) * intTotalCount).Take(intTotalCount).ToList();
foreach (var item in blogArticleList)
{
if (!string.IsNullOrEmpty(item.bcontent))
{
//item.bcontent = Tools.ReplaceHtmlTag(item.bcontent);
int totalLength = 500;
if (item.bcontent.Length > totalLength)
{
item.bcontent = item.bcontent.Substring(0, totalLength);
}
}
}
var data = new { success = true, page = page, pageCount = TotalCount, data = blogArticleList };
return data;
}
// GET: api/Blog/5
/// <summary>
/// 获取详情
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("{id}", Name = "Get")]
public async Task<object> Get(int id)
{
var model = await blogArticleServices.getBlogDetails(id);
var data = new { success = true, data = model };
return data;
}
}
}