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
134 lines (116 loc) · 4.4 KB
/
BlogController.cs
File metadata and controls
134 lines (116 loc) · 4.4 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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Blog.Core.Common;
using Blog.Core.Common.Helper;
using Blog.Core.IServices;
using Blog.Core.Model.Models;
using Blog.Core.Model.VeiwModels;
using Blog.Core.SwaggerHelper;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using static Blog.Core.SwaggerHelper.CustomApiVersion;
namespace Blog.Core.Controllers
{
/// <summary>
/// Blog控制器所有接口
/// </summary>
[Produces("application/json")]
[Route("api/Blog")]
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.bRemark = (HtmlHelper.ReplaceHtmlTag(item.bcontent)).Length >= 200 ? (HtmlHelper.ReplaceHtmlTag(item.bcontent)).Substring(0, 200) : (HtmlHelper.ReplaceHtmlTag(item.bcontent));
int totalLength = 500;
if (item.bcontent.Length > totalLength)
{
item.bcontent = item.bcontent.Substring(0, totalLength);
}
}
}
return Ok(new
{
success = true,
page = page,
pageCount = TotalCount,
data = blogArticleList
});
}
// GET: api/Blog/5
/// <summary>
/// 获取详情
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet("{id}", Name = "Get")]
[Authorize(Policy = "Admin")]
public async Task<object> Get(int id)
{
var model = await blogArticleServices.getBlogDetails(id);
return Ok(new
{
success = true,
data = model
});
}
/// <summary>
/// 获取博客测试信息 v2版本
/// </summary>
/// <returns></returns>
[HttpGet]
////MVC自带特性 对 api 进行组管理
//[ApiExplorerSettings(GroupName = "v2")]
////路径 如果以 / 开头,表示绝对路径,反之相对 controller 的想u地路径
//[Route("/api/v2/blog/Blogtest")]
//和上边的版本控制以及路由地址都是一样的
[CustomRoute(ApiVersions.v2, "Blogtest")]
public async Task<object> V2_Blogtest()
{
return Ok(new { status = 220, data = "我是第二版的博客信息" });
}
}
}