1
0
懒得勤快 4 жил өмнө
parent
commit
38b907f91f

+ 2 - 4
src/Masuit.MyBlogs.Core/Controllers/AdvertisementController.cs

@@ -23,8 +23,6 @@ namespace Masuit.MyBlogs.Core.Controllers
     [Route("partner/[action]")]
     [Route("partner/[action]")]
     public class AdvertisementController : BaseController
     public class AdvertisementController : BaseController
     {
     {
-        public ICategoryService CategoryService { get; set; }
-
         /// <summary>
         /// <summary>
         /// 前往
         /// 前往
         /// </summary>
         /// </summary>
@@ -49,7 +47,7 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// </summary>
         /// </summary>
         /// <returns></returns>
         /// <returns></returns>
         [MyAuthorize]
         [MyAuthorize]
-        public async Task<ActionResult> GetPageData([Range(1, int.MaxValue, ErrorMessage = "页数必须大于0")] int page = 1, [Range(1, int.MaxValue, ErrorMessage = "页大小必须大于0")] int size = 10, string kw = "")
+        public async Task<ActionResult> GetPageData([FromServices] ICategoryService categoryService, [Range(1, int.MaxValue, ErrorMessage = "页数必须大于0")] int page = 1, [Range(1, int.MaxValue, ErrorMessage = "页大小必须大于0")] int size = 10, string kw = "")
         {
         {
             Expression<Func<Advertisement, bool>> where = p => true;
             Expression<Func<Advertisement, bool>> where = p => true;
             if (!string.IsNullOrEmpty(kw))
             if (!string.IsNullOrEmpty(kw))
@@ -59,7 +57,7 @@ namespace Masuit.MyBlogs.Core.Controllers
 
 
             var list = AdsService.GetQuery(where).OrderByDescending(p => p.Status == Status.Available).ThenByDescending(a => a.Price).ToPagedList<Advertisement, AdvertisementViewModel>(page, size, MapperConfig);
             var list = AdsService.GetQuery(where).OrderByDescending(p => p.Status == Status.Available).ThenByDescending(a => a.Price).ToPagedList<Advertisement, AdvertisementViewModel>(page, size, MapperConfig);
             var cids = list.Data.Where(m => !string.IsNullOrEmpty(m.CategoryIds)).SelectMany(m => m.CategoryIds.Split(",", StringSplitOptions.RemoveEmptyEntries).Select(int.Parse)).Distinct().ToArray();
             var cids = list.Data.Where(m => !string.IsNullOrEmpty(m.CategoryIds)).SelectMany(m => m.CategoryIds.Split(",", StringSplitOptions.RemoveEmptyEntries).Select(int.Parse)).Distinct().ToArray();
-            var dic = await CategoryService.GetQuery(c => cids.Contains(c.Id)).ToDictionaryAsync(c => c.Id + "", c => c.Name);
+            var dic = await categoryService.GetQuery(c => cids.Contains(c.Id)).ToDictionaryAsync(c => c.Id + "", c => c.Name);
             foreach (var ad in list.Data.Where(ad => !string.IsNullOrEmpty(ad.CategoryIds)))
             foreach (var ad in list.Data.Where(ad => !string.IsNullOrEmpty(ad.CategoryIds)))
             {
             {
                 ad.CategoryNames = JiebaNet.Segmenter.Common.Extensions.Join(ad.CategoryIds.Split(",").Select(c => dic.GetValueOrDefault(c)), ",");
                 ad.CategoryNames = JiebaNet.Segmenter.Common.Extensions.Join(ad.CategoryIds.Split(",").Select(c => dic.GetValueOrDefault(c)), ",");

+ 5 - 5
src/Masuit.MyBlogs.Core/Controllers/CommentController.cs

@@ -36,18 +36,18 @@ namespace Masuit.MyBlogs.Core.Controllers
     {
     {
         public ICommentService CommentService { get; set; }
         public ICommentService CommentService { get; set; }
         public IPostService PostService { get; set; }
         public IPostService PostService { get; set; }
-        public IInternalMessageService MessageService { get; set; }
         public IWebHostEnvironment HostEnvironment { get; set; }
         public IWebHostEnvironment HostEnvironment { get; set; }
         public ICacheManager<int> CommentFeq { get; set; }
         public ICacheManager<int> CommentFeq { get; set; }
-        public IMailSender MailSender { get; set; }
 
 
         /// <summary>
         /// <summary>
         /// 发表评论
         /// 发表评论
         /// </summary>
         /// </summary>
+        /// <param name="messageService"></param>
+        /// <param name="mailSender"></param>
         /// <param name="dto"></param>
         /// <param name="dto"></param>
         /// <returns></returns>
         /// <returns></returns>
         [HttpPost, ValidateAntiForgeryToken]
         [HttpPost, ValidateAntiForgeryToken]
-        public async Task<ActionResult> Submit(CommentCommand dto)
+        public async Task<ActionResult> Submit([FromServices] IInternalMessageService messageService, [FromServices] IMailSender mailSender, CommentCommand dto)
         {
         {
             var match = Regex.Match(dto.NickName + dto.Content.RemoveHtmlTag(), CommonHelper.BanRegex);
             var match = Regex.Match(dto.NickName + dto.Content.RemoveHtmlTag(), CommonHelper.BanRegex);
             if (match.Success)
             if (match.Success)
@@ -56,7 +56,7 @@ namespace Masuit.MyBlogs.Core.Controllers
                 return ResultData(null, false, "您提交的内容包含敏感词,被禁止发表,请检查您的内容后尝试重新提交!");
                 return ResultData(null, false, "您提交的内容包含敏感词,被禁止发表,请检查您的内容后尝试重新提交!");
             }
             }
 
 
-            if (MailSender.HasBounced(dto.Email) || (!CurrentUser.IsAdmin && dto.Email.EndsWith(CommonHelper.SystemSettings["Domain"])))
+            if (mailSender.HasBounced(dto.Email) || (!CurrentUser.IsAdmin && dto.Email.EndsWith(CommonHelper.SystemSettings["Domain"])))
             {
             {
                 Response.Cookies.Delete("Email");
                 Response.Cookies.Delete("Email");
                 Response.Cookies.Delete("QQorWechat");
                 Response.Cookies.Delete("QQorWechat");
@@ -135,7 +135,7 @@ namespace Masuit.MyBlogs.Core.Controllers
             {
             {
                 if (!comment.IsMaster)
                 if (!comment.IsMaster)
                 {
                 {
-                    await MessageService.AddEntitySavedAsync(new InternalMessage()
+                    await messageService.AddEntitySavedAsync(new InternalMessage()
                     {
                     {
                         Title = $"来自【{comment.NickName}】在文章《{post.Title}》的新评论",
                         Title = $"来自【{comment.NickName}】在文章《{post.Title}》的新评论",
                         Content = comment.Content,
                         Content = comment.Content,

+ 4 - 17
src/Masuit.MyBlogs.Core/Controllers/DashboardController.cs

@@ -13,19 +13,6 @@ namespace Masuit.MyBlogs.Core.Controllers
     /// </summary>
     /// </summary>
     public class DashboardController : AdminController
     public class DashboardController : AdminController
     {
     {
-        /// <summary>
-        /// PostService
-        /// </summary>
-        public IPostService PostService { get; set; }
-        /// <summary>
-        /// LeaveMessageService
-        /// </summary>
-        public ILeaveMessageService LeaveMessageService { get; set; }
-        /// <summary>
-        /// CommentService
-        /// </summary>
-        public ICommentService CommentService { get; set; }
-
         /// <summary>
         /// <summary>
         /// 控制面板
         /// 控制面板
         /// </summary>
         /// </summary>
@@ -46,22 +33,22 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// 获取站内消息
         /// 获取站内消息
         /// </summary>
         /// </summary>
         /// <returns></returns>
         /// <returns></returns>
-        public ActionResult GetMessages()
+        public ActionResult GetMessages([FromServices] IPostService postService, [FromServices] ILeaveMessageService leaveMessageService, [FromServices] ICommentService commentService)
         {
         {
-            var post = PostService.GetQuery(p => p.Status == Status.Pending).Select(p => new
+            var post = postService.GetQuery(p => p.Status == Status.Pending).Select(p => new
             {
             {
                 p.Id,
                 p.Id,
                 p.Title,
                 p.Title,
                 p.PostDate,
                 p.PostDate,
                 p.Author
                 p.Author
             }).ToList();
             }).ToList();
-            var msgs = LeaveMessageService.GetQuery(m => m.Status == Status.Pending).Select(p => new
+            var msgs = leaveMessageService.GetQuery(m => m.Status == Status.Pending).Select(p => new
             {
             {
                 p.Id,
                 p.Id,
                 p.PostDate,
                 p.PostDate,
                 p.NickName
                 p.NickName
             }).ToList();
             }).ToList();
-            var comments = CommentService.GetQuery(c => c.Status == Status.Pending).Select(p => new
+            var comments = commentService.GetQuery(c => c.Status == Status.Pending).Select(p => new
             {
             {
                 p.Id,
                 p.Id,
                 p.CommentDate,
                 p.CommentDate,

+ 3 - 4
src/Masuit.MyBlogs.Core/Controllers/ErrorController.cs

@@ -27,8 +27,6 @@ namespace Masuit.MyBlogs.Core.Controllers
     [ApiExplorerSettings(IgnoreApi = true)]
     [ApiExplorerSettings(IgnoreApi = true)]
     public class ErrorController : Controller
     public class ErrorController : Controller
     {
     {
-        public IUserInfoService UserInfoService { get; set; }
-
         /// <summary>
         /// <summary>
         /// 404
         /// 404
         /// </summary>
         /// </summary>
@@ -154,10 +152,11 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// <summary>
         /// <summary>
         /// 检查授权邮箱
         /// 检查授权邮箱
         /// </summary>
         /// </summary>
+        /// <param name="userInfoService"></param>
         /// <param name="email"></param>
         /// <param name="email"></param>
         /// <returns></returns>
         /// <returns></returns>
         [HttpPost, ValidateAntiForgeryToken, AllowAccessFirewall, ResponseCache(Duration = 115, VaryByQueryKeys = new[] { "email" })]
         [HttpPost, ValidateAntiForgeryToken, AllowAccessFirewall, ResponseCache(Duration = 115, VaryByQueryKeys = new[] { "email" })]
-        public ActionResult GetViewToken(string email)
+        public ActionResult GetViewToken([FromServices] IUserInfoService userInfoService, string email)
         {
         {
             if (string.IsNullOrEmpty(email) || !email.MatchEmail().isMatch)
             if (string.IsNullOrEmpty(email) || !email.MatchEmail().isMatch)
             {
             {
@@ -170,7 +169,7 @@ namespace Masuit.MyBlogs.Core.Controllers
                 return ResultData(null, false, "发送频率限制,请在2分钟后重新尝试发送邮件!请检查你的邮件,若未收到,请检查你的邮箱地址或邮件垃圾箱!");
                 return ResultData(null, false, "发送频率限制,请在2分钟后重新尝试发送邮件!请检查你的邮件,若未收到,请检查你的邮箱地址或邮件垃圾箱!");
             }
             }
 
 
-            if (!UserInfoService.Any(b => b.Email == email))
+            if (!userInfoService.Any(b => b.Email == email))
             {
             {
                 return ResultData(null, false, "您目前没有权限访问这个链接,请联系站长开通访问权限!");
                 return ResultData(null, false, "您目前没有权限访问这个链接,请联系站长开通访问权限!");
             }
             }

+ 2 - 7
src/Masuit.MyBlogs.Core/Controllers/HomeController.cs

@@ -47,20 +47,15 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// </summary>
         /// </summary>
         public INoticeService NoticeService { get; set; }
         public INoticeService NoticeService { get; set; }
 
 
-        /// <summary>
-        /// 快速分享
-        /// </summary>
-        public IFastShareService FastShareService { get; set; }
-
         /// <summary>
         /// <summary>
         /// 首页
         /// 首页
         /// </summary>
         /// </summary>
         /// <returns></returns>
         /// <returns></returns>
         [HttpGet, ResponseCache(Duration = 600, VaryByHeader = "Cookie", Location = ResponseCacheLocation.Any)]
         [HttpGet, ResponseCache(Duration = 600, VaryByHeader = "Cookie", Location = ResponseCacheLocation.Any)]
-        public async Task<ActionResult> Index()
+        public async Task<ActionResult> Index([FromServices] IFastShareService fastShareService)
         {
         {
             var banners = AdsService.GetsByWeightedPrice(8, AdvertiseType.Banner).OrderBy(a => Guid.NewGuid()).ToList();
             var banners = AdsService.GetsByWeightedPrice(8, AdvertiseType.Banner).OrderBy(a => Guid.NewGuid()).ToList();
-            var fastShares = await FastShareService.GetAllFromCacheAsync(s => s.Sort);
+            var fastShares = await fastShareService.GetAllFromCacheAsync(s => s.Sort);
             var postsQuery = PostService.GetQuery<PostDto>(p => p.Status == Status.Published); //准备文章的查询
             var postsQuery = PostService.GetQuery<PostDto>(p => p.Status == Status.Published); //准备文章的查询
             var posts = await postsQuery.Where(p => !p.IsFixedTop).OrderBy(OrderBy.ModifyDate.GetDisplay() + " desc").ToCachedPagedListAsync(1, 15);
             var posts = await postsQuery.Where(p => !p.IsFixedTop).OrderBy(OrderBy.ModifyDate.GetDisplay() + " desc").ToCachedPagedListAsync(1, 15);
             posts.Data.InsertRange(0, postsQuery.Where(p => p.IsFixedTop).OrderByDescending(p => p.ModifyDate).ToList());
             posts.Data.InsertRange(0, postsQuery.Where(p => p.IsFixedTop).OrderByDescending(p => p.ModifyDate).ToList());

+ 2 - 3
src/Masuit.MyBlogs.Core/Controllers/LinksController.cs

@@ -21,7 +21,6 @@ namespace Masuit.MyBlogs.Core.Controllers
     public class LinksController : BaseController
     public class LinksController : BaseController
     {
     {
         public IHttpClientFactory HttpClientFactory { get; set; }
         public IHttpClientFactory HttpClientFactory { get; set; }
-        public IWebHostEnvironment HostEnvironment { get; set; }
         private HttpClient HttpClient => HttpClientFactory.CreateClient();
         private HttpClient HttpClient => HttpClientFactory.CreateClient();
 
 
         /// <summary>
         /// <summary>
@@ -29,10 +28,10 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// </summary>
         /// </summary>
         /// <returns></returns>
         /// <returns></returns>
         [Route("links"), ResponseCache(Duration = 600, VaryByHeader = "Cookie")]
         [Route("links"), ResponseCache(Duration = 600, VaryByHeader = "Cookie")]
-        public async Task<ActionResult> Index()
+        public async Task<ActionResult> Index([FromServices] IWebHostEnvironment hostEnvironment)
         {
         {
             var list = await LinksService.GetQueryFromCacheAsync<bool, LinksDto>(l => l.Status == Status.Available, l => l.Recommend, false);
             var list = await LinksService.GetQueryFromCacheAsync<bool, LinksDto>(l => l.Status == Status.Available, l => l.Recommend, false);
-            ViewBag.Html = await System.IO.File.ReadAllTextAsync(Path.Combine(HostEnvironment.WebRootPath, "template", "links.html"));
+            ViewBag.Html = await System.IO.File.ReadAllTextAsync(Path.Combine(hostEnvironment.WebRootPath, "template", "links.html"));
             ViewBag.Ads = AdsService.GetByWeightedPrice(AdvertiseType.InPage);
             ViewBag.Ads = AdsService.GetByWeightedPrice(AdvertiseType.InPage);
             return CurrentUser.IsAdmin ? View("Index_Admin", list) : View(list);
             return CurrentUser.IsAdmin ? View("Index_Admin", list) : View(list);
         }
         }

+ 3 - 8
src/Masuit.MyBlogs.Core/Controllers/MiscController.cs

@@ -26,12 +26,6 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// MiscService
         /// MiscService
         /// </summary>
         /// </summary>
         public IMiscService MiscService { get; set; }
         public IMiscService MiscService { get; set; }
-
-        /// <summary>
-        /// 打赏
-        /// </summary>
-        public IDonateService DonateService { get; set; }
-
         public IWebHostEnvironment HostEnvironment { get; set; }
         public IWebHostEnvironment HostEnvironment { get; set; }
         public ImagebedClient ImagebedClient { get; set; }
         public ImagebedClient ImagebedClient { get; set; }
 
 
@@ -65,13 +59,14 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// <summary>
         /// <summary>
         /// 打赏列表
         /// 打赏列表
         /// </summary>
         /// </summary>
+        /// <param name="donateService"></param>
         /// <param name="page"></param>
         /// <param name="page"></param>
         /// <param name="size"></param>
         /// <param name="size"></param>
         /// <returns></returns>
         /// <returns></returns>
         [Route("donatelist")]
         [Route("donatelist")]
-        public async Task<ActionResult> DonateList(int page = 1, int size = 10)
+        public async Task<ActionResult> DonateList([FromServices] IDonateService donateService, int page = 1, int size = 10)
         {
         {
-            var list = await DonateService.GetPagesFromCacheAsync<DateTime, DonateDto>(page, size, d => true, d => d.DonateTime, false);
+            var list = await donateService.GetPagesFromCacheAsync<DateTime, DonateDto>(page, size, d => true, d => d.DonateTime, false);
             if (!CurrentUser.IsAdmin)
             if (!CurrentUser.IsAdmin)
             {
             {
                 foreach (var item in list.Data.Where(item => !(item.QQorWechat + item.Email).Contains("匿名")))
                 foreach (var item in list.Data.Where(item => !(item.QQorWechat + item.Email).Contains("匿名")))

+ 3 - 3
src/Masuit.MyBlogs.Core/Controllers/MsgController.cs

@@ -46,7 +46,6 @@ namespace Masuit.MyBlogs.Core.Controllers
         public IWebHostEnvironment HostEnvironment { get; set; }
         public IWebHostEnvironment HostEnvironment { get; set; }
 
 
         public ICacheManager<int> MsgFeq { get; set; }
         public ICacheManager<int> MsgFeq { get; set; }
-        public IMailSender MailSender { get; set; }
 
 
         /// <summary>
         /// <summary>
         /// 留言板
         /// 留言板
@@ -121,10 +120,11 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// <summary>
         /// <summary>
         /// 发表留言
         /// 发表留言
         /// </summary>
         /// </summary>
+        /// <param name="mailSender"></param>
         /// <param name="dto"></param>
         /// <param name="dto"></param>
         /// <returns></returns>
         /// <returns></returns>
         [HttpPost, ValidateAntiForgeryToken]
         [HttpPost, ValidateAntiForgeryToken]
-        public async Task<ActionResult> Submit(LeaveMessageCommand dto)
+        public async Task<ActionResult> Submit([FromServices] IMailSender mailSender, LeaveMessageCommand dto)
         {
         {
             var match = Regex.Match(dto.NickName + dto.Content.RemoveHtmlTag(), CommonHelper.BanRegex);
             var match = Regex.Match(dto.NickName + dto.Content.RemoveHtmlTag(), CommonHelper.BanRegex);
             if (match.Success)
             if (match.Success)
@@ -133,7 +133,7 @@ namespace Masuit.MyBlogs.Core.Controllers
                 return ResultData(null, false, "您提交的内容包含敏感词,被禁止发表,请检查您的内容后尝试重新提交!");
                 return ResultData(null, false, "您提交的内容包含敏感词,被禁止发表,请检查您的内容后尝试重新提交!");
             }
             }
 
 
-            if (MailSender.HasBounced(dto.Email) || (!CurrentUser.IsAdmin && dto.Email.EndsWith(CommonHelper.SystemSettings["Domain"])))
+            if (mailSender.HasBounced(dto.Email) || (!CurrentUser.IsAdmin && dto.Email.EndsWith(CommonHelper.SystemSettings["Domain"])))
             {
             {
                 Response.Cookies.Delete("Email");
                 Response.Cookies.Delete("Email");
                 Response.Cookies.Delete("QQorWechat");
                 Response.Cookies.Delete("QQorWechat");

+ 3 - 5
src/Masuit.MyBlogs.Core/Controllers/NoticeController.cs

@@ -27,9 +27,6 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// 公告
         /// 公告
         /// </summary>
         /// </summary>
         public INoticeService NoticeService { get; set; }
         public INoticeService NoticeService { get; set; }
-
-        public IWebHostEnvironment HostEnvironment { get; set; }
-
         public ImagebedClient ImagebedClient { get; set; }
         public ImagebedClient ImagebedClient { get; set; }
 
 
         /// <summary>
         /// <summary>
@@ -93,10 +90,11 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// <summary>
         /// <summary>
         /// 删除公告
         /// 删除公告
         /// </summary>
         /// </summary>
+        /// <param name="hostEnvironment"></param>
         /// <param name="id"></param>
         /// <param name="id"></param>
         /// <returns></returns>
         /// <returns></returns>
         [MyAuthorize]
         [MyAuthorize]
-        public async Task<ActionResult> Delete(int id)
+        public async Task<ActionResult> Delete([FromServices] IWebHostEnvironment hostEnvironment, int id)
         {
         {
             var notice = await NoticeService.GetByIdAsync(id) ?? throw new NotFoundException("公告已经被删除!");
             var notice = await NoticeService.GetByIdAsync(id) ?? throw new NotFoundException("公告已经被删除!");
             var srcs = notice.Content.MatchImgSrcs().Where(s => s.StartsWith("/"));
             var srcs = notice.Content.MatchImgSrcs().Where(s => s.StartsWith("/"));
@@ -104,7 +102,7 @@ namespace Masuit.MyBlogs.Core.Controllers
             {
             {
                 try
                 try
                 {
                 {
-                    System.IO.File.Delete(HostEnvironment.WebRootPath + path);
+                    System.IO.File.Delete(hostEnvironment.WebRootPath + path);
                 }
                 }
                 catch
                 catch
                 {
                 {

+ 5 - 6
src/Masuit.MyBlogs.Core/Controllers/PostController.cs

@@ -46,9 +46,6 @@ namespace Masuit.MyBlogs.Core.Controllers
         public ICategoryService CategoryService { get; set; }
         public ICategoryService CategoryService { get; set; }
         public ISeminarService SeminarService { get; set; }
         public ISeminarService SeminarService { get; set; }
         public IPostHistoryVersionService PostHistoryVersionService { get; set; }
         public IPostHistoryVersionService PostHistoryVersionService { get; set; }
-        public IInternalMessageService MessageService { get; set; }
-        public IPostMergeRequestService PostMergeRequestService { get; set; }
-
         public IWebHostEnvironment HostEnvironment { get; set; }
         public IWebHostEnvironment HostEnvironment { get; set; }
         public ISearchEngine<DataContext> SearchEngine { get; set; }
         public ISearchEngine<DataContext> SearchEngine { get; set; }
         public ImagebedClient ImagebedClient { get; set; }
         public ImagebedClient ImagebedClient { get; set; }
@@ -459,10 +456,12 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// <summary>
         /// <summary>
         /// 文章合并
         /// 文章合并
         /// </summary>
         /// </summary>
+        /// <param name="messageService"></param>
+        /// <param name="postMergeRequestService"></param>
         /// <param name="dto"></param>
         /// <param name="dto"></param>
         /// <returns></returns>
         /// <returns></returns>
         [HttpPost("{id}/pushmerge")]
         [HttpPost("{id}/pushmerge")]
-        public async Task<ActionResult> PushMerge(PostMergeRequestCommand dto)
+        public async Task<ActionResult> PushMerge([FromServices] IInternalMessageService messageService, [FromServices] IPostMergeRequestService postMergeRequestService, PostMergeRequestCommand dto)
         {
         {
             if (await RedisHelper.GetAsync("code:" + dto.ModifierEmail) != dto.Code)
             if (await RedisHelper.GetAsync("code:" + dto.ModifierEmail) != dto.Code)
             {
             {
@@ -479,7 +478,7 @@ namespace Masuit.MyBlogs.Core.Controllers
 
 
             #region 合并验证
             #region 合并验证
 
 
-            if (PostMergeRequestService.Any(p => p.ModifierEmail == dto.ModifierEmail && p.MergeState == MergeStatus.Block))
+            if (postMergeRequestService.Any(p => p.ModifierEmail == dto.ModifierEmail && p.MergeState == MergeStatus.Block))
             {
             {
                 return ResultData(null, false, "由于您曾经多次恶意修改文章,已经被标记为黑名单,无法修改任何文章,如有疑问,请联系网站管理员进行处理。");
                 return ResultData(null, false, "由于您曾经多次恶意修改文章,已经被标记为黑名单,无法修改任何文章,如有疑问,请联系网站管理员进行处理。");
             }
             }
@@ -525,7 +524,7 @@ namespace Masuit.MyBlogs.Core.Controllers
             }
             }
 
 
             await RedisHelper.ExpireAsync("code:" + dto.ModifierEmail, 1);
             await RedisHelper.ExpireAsync("code:" + dto.ModifierEmail, 1);
-            await MessageService.AddEntitySavedAsync(new InternalMessage()
+            await messageService.AddEntitySavedAsync(new InternalMessage()
             {
             {
                 Title = $"来自【{dto.Modifier}】对文章《{post.Title}》的修改请求",
                 Title = $"来自【{dto.Modifier}】对文章《{post.Title}》的修改请求",
                 Content = dto.Title,
                 Content = dto.Title,

+ 4 - 8
src/Masuit.MyBlogs.Core/Controllers/SearchController.cs

@@ -24,23 +24,19 @@ namespace Masuit.MyBlogs.Core.Controllers
     /// </summary>
     /// </summary>
     public class SearchController : BaseController
     public class SearchController : BaseController
     {
     {
-        /// <summary>
-        /// 
-        /// </summary>
         public ISearchDetailsService SearchDetailsService { get; set; }
         public ISearchDetailsService SearchDetailsService { get; set; }
-        public IPostService PostService { get; set; }
-
         public ICacheManager<string> CacheManager { get; set; }
         public ICacheManager<string> CacheManager { get; set; }
 
 
         /// <summary>
         /// <summary>
         /// 搜索页
         /// 搜索页
         /// </summary>
         /// </summary>
+        /// <param name="postService"></param>
         /// <param name="wd"></param>
         /// <param name="wd"></param>
         /// <param name="page"></param>
         /// <param name="page"></param>
         /// <param name="size"></param>
         /// <param name="size"></param>
         /// <returns></returns>
         /// <returns></returns>
-        [Route("s/{wd?}/{page:int?}/{size:int?}")]
-        public async Task<ActionResult> Search(string wd = "", [Range(1, int.MaxValue, ErrorMessage = "页码必须大于0")] int page = 1, [Range(1, 50, ErrorMessage = "页大小必须在0到50之间")] int size = 15)
+        [Route("s/{wd?}")]
+        public async Task<ActionResult> Search([FromServices] IPostService postService, string wd = "", [Range(1, int.MaxValue, ErrorMessage = "页码必须大于0")] int page = 1, [Range(1, 50, ErrorMessage = "页大小必须在0到50之间")] int size = 15)
         {
         {
             wd = wd?.Trim().ToSimplified();
             wd = wd?.Trim().ToSimplified();
             ViewBag.PageSize = size;
             ViewBag.PageSize = size;
@@ -68,7 +64,7 @@ namespace Masuit.MyBlogs.Core.Controllers
                     HttpContext.Session.Set("search:" + wd, wd.ToByteArray());
                     HttpContext.Session.Set("search:" + wd, wd.ToByteArray());
                 }
                 }
 
 
-                var posts = PostService.SearchPage(page, size, wd);
+                var posts = postService.SearchPage(page, size, wd);
                 if (posts.Total > 1)
                 if (posts.Total > 1)
                 {
                 {
                     CacheManager.AddOrUpdate(key, wd, s => wd);
                     CacheManager.AddOrUpdate(key, wd, s => wd);

+ 3 - 4
src/Masuit.MyBlogs.Core/Controllers/SeminarController.cs

@@ -34,8 +34,6 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// </summary>
         /// </summary>
         public IPostService PostService { get; set; }
         public IPostService PostService { get; set; }
 
 
-        public ISeminarPostService SeminarPostService { get; set; }
-
         /// <summary>
         /// <summary>
         /// 专题页
         /// 专题页
         /// </summary>
         /// </summary>
@@ -176,15 +174,16 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// <summary>
         /// <summary>
         /// 移除文章
         /// 移除文章
         /// </summary>
         /// </summary>
+        /// <param name="seminarPostService"></param>
         /// <param name="id"></param>
         /// <param name="id"></param>
         /// <param name="pid"></param>
         /// <param name="pid"></param>
         /// <returns></returns>
         /// <returns></returns>
         [MyAuthorize]
         [MyAuthorize]
-        public async Task<ActionResult> RemovePost(int id, int pid)
+        public async Task<ActionResult> RemovePost([FromServices] ISeminarPostService seminarPostService, int id, int pid)
         {
         {
             Seminar seminar = await SeminarService.GetByIdAsync(id);
             Seminar seminar = await SeminarService.GetByIdAsync(id);
             Post post = await PostService.GetByIdAsync(pid);
             Post post = await PostService.GetByIdAsync(pid);
-            bool b = await SeminarPostService.DeleteEntitySavedAsync(s => s.SeminarId == id && s.PostId == pid) > 0;
+            bool b = await seminarPostService.DeleteEntitySavedAsync(s => s.SeminarId == id && s.PostId == pid) > 0;
             return ResultData(null, b, b ? $"已成功将【{post.Title}】从专题【{seminar.Title}】移除" : "添加失败!");
             return ResultData(null, b, b ? $"已成功将【{post.Title}】从专题【{seminar.Title}】移除" : "添加失败!");
         }
         }
 
 

+ 5 - 6
src/Masuit.MyBlogs.Core/Controllers/SystemController.cs

@@ -31,8 +31,6 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// 系统设置
         /// 系统设置
         /// </summary>
         /// </summary>
         public ISystemSettingService SystemSettingService { get; set; }
         public ISystemSettingService SystemSettingService { get; set; }
-        public IFirewallRepoter FirewallRepoter { get; set; }
-        public IMailSender MailSender { get; set; }
 
 
         /// <summary>
         /// <summary>
         /// 获取历史性能计数器
         /// 获取历史性能计数器
@@ -207,9 +205,9 @@ namespace Masuit.MyBlogs.Core.Controllers
             return RedisHelper.SUnion(RedisHelper.Keys("Email:*")).Select(JObject.Parse).OrderByDescending(o => o["time"]).ToList();
             return RedisHelper.SUnion(RedisHelper.Keys("Email:*")).Select(JObject.Parse).OrderByDescending(o => o["time"]).ToList();
         }
         }
 
 
-        public ActionResult BounceEmail(string email)
+        public ActionResult BounceEmail([FromServices] IMailSender mailSender, string email)
         {
         {
-            var msg = MailSender.AddRecipient(email);
+            var msg = mailSender.AddRecipient(email);
             return Ok(new
             return Ok(new
             {
             {
                 msg
                 msg
@@ -355,9 +353,10 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// <summary>
         /// <summary>
         /// 将IP添加到黑名单
         /// 将IP添加到黑名单
         /// </summary>
         /// </summary>
+        /// <param name="firewallRepoter"></param>
         /// <param name="ip"></param>
         /// <param name="ip"></param>
         /// <returns></returns>
         /// <returns></returns>
-        public async Task<ActionResult> AddToBlackList(string ip)
+        public async Task<ActionResult> AddToBlackList([FromServices] IFirewallRepoter firewallRepoter, string ip)
         {
         {
             if (!ip.MatchInetAddress())
             if (!ip.MatchInetAddress())
             {
             {
@@ -369,7 +368,7 @@ namespace Masuit.MyBlogs.Core.Controllers
             await System.IO.File.WriteAllTextAsync(Path.Combine(basedir, "App_Data", "denyip.txt"), CommonHelper.DenyIP, Encoding.UTF8);
             await System.IO.File.WriteAllTextAsync(Path.Combine(basedir, "App_Data", "denyip.txt"), CommonHelper.DenyIP, Encoding.UTF8);
             CommonHelper.IPWhiteList.Remove(ip);
             CommonHelper.IPWhiteList.Remove(ip);
             await System.IO.File.WriteAllTextAsync(Path.Combine(basedir, "App_Data", "whitelist.txt"), string.Join(",", CommonHelper.IPWhiteList.Distinct()), Encoding.UTF8);
             await System.IO.File.WriteAllTextAsync(Path.Combine(basedir, "App_Data", "whitelist.txt"), string.Join(",", CommonHelper.IPWhiteList.Distinct()), Encoding.UTF8);
-            await FirewallRepoter.ReportAsync(IPAddress.Parse(ip));
+            await firewallRepoter.ReportAsync(IPAddress.Parse(ip));
             return ResultData(null);
             return ResultData(null);
         }
         }
 
 

+ 3 - 11
src/Masuit.MyBlogs.Core/Controllers/UploadController.cs

@@ -33,15 +33,6 @@ namespace Masuit.MyBlogs.Core.Controllers
     {
     {
         public IWebHostEnvironment HostEnvironment { get; set; }
         public IWebHostEnvironment HostEnvironment { get; set; }
 
 
-        public ImagebedClient ImagebedClient { get; set; }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="data"></param>
-        /// <param name="isTrue"></param>
-        /// <param name="message"></param>
-        /// <returns></returns>
         public ActionResult ResultData(object data, bool isTrue = true, string message = "")
         public ActionResult ResultData(object data, bool isTrue = true, string message = "")
         {
         {
             return Content(JsonConvert.SerializeObject(new
             return Content(JsonConvert.SerializeObject(new
@@ -271,10 +262,11 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// <summary>
         /// <summary>
         /// 上传文件
         /// 上传文件
         /// </summary>
         /// </summary>
+        /// <param name="imagebedClient"></param>
         /// <param name="file"></param>
         /// <param name="file"></param>
         /// <returns></returns>
         /// <returns></returns>
         [HttpPost("upload"), ApiExplorerSettings(IgnoreApi = false)]
         [HttpPost("upload"), ApiExplorerSettings(IgnoreApi = false)]
-        public async Task<ActionResult> UploadFile(IFormFile file)
+        public async Task<ActionResult> UploadFile([FromServices] ImagebedClient imagebedClient, IFormFile file)
         {
         {
             string path;
             string path;
             string filename = SnowFlake.GetInstance().GetUniqueId() + Path.GetExtension(file.FileName);
             string filename = SnowFlake.GetInstance().GetUniqueId() + Path.GetExtension(file.FileName);
@@ -282,7 +274,7 @@ namespace Masuit.MyBlogs.Core.Controllers
             {
             {
                 case var _ when file.ContentType.StartsWith("image"):
                 case var _ when file.ContentType.StartsWith("image"):
                     {
                     {
-                        var (url, success) = await ImagebedClient.UploadImage(file.OpenReadStream(), file.FileName);
+                        var (url, success) = await imagebedClient.UploadImage(file.OpenReadStream(), file.FileName);
                         if (success)
                         if (success)
                         {
                         {
                             return ResultData(url);
                             return ResultData(url);

+ 3 - 2
src/Masuit.MyBlogs.Core/Masuit.MyBlogs.Core.csproj

@@ -44,6 +44,7 @@
         <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.0" />
         <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.0" />
         <PackageReference Include="CacheManager.Microsoft.Extensions.Caching.Memory" Version="2.0.0-beta-1629" />
         <PackageReference Include="CacheManager.Microsoft.Extensions.Caching.Memory" Version="2.0.0-beta-1629" />
         <PackageReference Include="CacheManager.Serialization.Json" Version="2.0.0-beta-1629" />
         <PackageReference Include="CacheManager.Serialization.Json" Version="2.0.0-beta-1629" />
+        <PackageReference Include="CLRStats" Version="1.0.0" />
         <PackageReference Include="CSRedisCore" Version="3.6.6" />
         <PackageReference Include="CSRedisCore" Version="3.6.6" />
         <PackageReference Include="Hangfire" Version="1.7.19" />
         <PackageReference Include="Hangfire" Version="1.7.19" />
         <PackageReference Include="Hangfire.Autofac" Version="2.3.1" />
         <PackageReference Include="Hangfire.Autofac" Version="2.3.1" />
@@ -57,7 +58,7 @@
         <PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="5.0.2" />
         <PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="5.0.2" />
         <PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="5.0.2" />
         <PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="5.0.2" />
         <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="5.0.1" />
         <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="5.0.1" />
-        <PackageReference Include="Microsoft.Graph" Version="3.21.0" />
+        <PackageReference Include="Microsoft.Graph" Version="3.22.0" />
         <PackageReference Include="Microsoft.Graph.Auth" Version="1.0.0-preview.6" />
         <PackageReference Include="Microsoft.Graph.Auth" Version="1.0.0-preview.6" />
         <PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.2.22" />
         <PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.2.22" />
         <PackageReference Include="OpenXmlPowerTools-NetStandard" Version="4.4.21" />
         <PackageReference Include="OpenXmlPowerTools-NetStandard" Version="4.4.21" />
@@ -71,7 +72,7 @@
         <PackageReference Include="TimeZoneConverter" Version="3.3.0" />
         <PackageReference Include="TimeZoneConverter" Version="3.3.0" />
         <PackageReference Include="WilderMinds.RssSyndication" Version="1.7.0" />
         <PackageReference Include="WilderMinds.RssSyndication" Version="1.7.0" />
         <PackageReference Include="WinInsider.System.Net.Http.Formatting" Version="1.0.14" />
         <PackageReference Include="WinInsider.System.Net.Http.Formatting" Version="1.0.14" />
-        <PackageReference Include="Z.EntityFramework.Plus.EFCore" Version="5.1.13" />
+        <PackageReference Include="Z.EntityFramework.Plus.EFCore" Version="5.1.15" />
     </ItemGroup>
     </ItemGroup>
     <ItemGroup>
     <ItemGroup>
         <Content Update="appsettings.json">
         <Content Update="appsettings.json">

+ 2 - 0
src/Masuit.MyBlogs.Core/Startup.cs

@@ -1,5 +1,6 @@
 using Autofac;
 using Autofac;
 using Autofac.Extensions.DependencyInjection;
 using Autofac.Extensions.DependencyInjection;
+using CLRStats;
 using CSRedis;
 using CSRedis;
 using Hangfire;
 using Hangfire;
 using Hangfire.MemoryStorage;
 using Hangfire.MemoryStorage;
@@ -145,6 +146,7 @@ namespace Masuit.MyBlogs.Core
             app.UseSession().UseCookiePolicy().UseMiniProfiler(); //注入Session
             app.UseSession().UseCookiePolicy().UseMiniProfiler(); //注入Session
             app.UseWhen(c => !c.Request.Path.StartsWithSegments("/_blazor"), builder => builder.UseMiddleware<RequestInterceptMiddleware>()); //启用网站请求拦截
             app.UseWhen(c => !c.Request.Path.StartsWithSegments("/_blazor"), builder => builder.UseMiddleware<RequestInterceptMiddleware>()); //启用网站请求拦截
             app.SetupHangfire();
             app.SetupHangfire();
+            app.UseCLRStatsDashboard();
             app.UseResponseCaching().UseResponseCompression(); //启动Response缓存
             app.UseResponseCaching().UseResponseCompression(); //启动Response缓存
             app.UseWhen(c => !c.Request.Path.StartsWithSegments("/_blazor"), builder => builder.UseMiddleware<TranslateMiddleware>());
             app.UseWhen(c => !c.Request.Path.StartsWithSegments("/_blazor"), builder => builder.UseMiddleware<TranslateMiddleware>());
             //app.UseActivity();// 抽奖活动 
             //app.UseActivity();// 抽奖活动