1
0
懒得勤快 4 жил өмнө
parent
commit
30ccd7205a

+ 0 - 112
src/Masuit.MyBlogs.Core/Controllers/ActivityController.cs

@@ -1,112 +0,0 @@
-using Castle.Core.Internal;
-using Masuit.MyBlogs.Core.Extensions;
-using Masuit.Tools;
-using Masuit.Tools.AspNetCore.Mime;
-using Masuit.Tools.Security;
-using Microsoft.AspNetCore.Http;
-using Microsoft.AspNetCore.Mvc;
-using Svg;
-using System;
-using System.Drawing;
-using System.IO;
-using System.Linq;
-
-namespace Masuit.MyBlogs.Core.Controllers
-{
-    public class ActivityController : Controller
-    {
-        [HttpGet("sharecode")]
-        public IActionResult GetCode(string q)
-        {
-            if (string.IsNullOrEmpty(q))
-            {
-                throw new NotFoundException("联系方式不能为空");
-            }
-
-            var enc = q.AESEncrypt();
-            Response.Cookies.Append("ShareCode", enc, new CookieOptions()
-            {
-                Expires = DateTime.Now.AddYears(1),
-                SameSite = SameSiteMode.Lax
-            });
-            return Content(enc);
-        }
-
-        public IActionResult ViewCount(string email)
-        {
-            return Ok(RedisHelper.SMembers("Share:" + email).Length);
-        }
-
-        public ActionResult Users(string type = "json", int count = 5)
-        {
-            var keys = RedisHelper.Keys("Share:*").ToDictionary(s => s[6..].MaskEmail(), s => RedisHelper.SMembers(s).Length).OrderByDescending(p => p.Value).ToList();
-            switch (type)
-            {
-                case "svg":
-                    var svg = new SvgDocument()
-                    {
-                        Height = keys.Count * 19
-                    };
-                    var svgText = new SvgText();
-                    for (var i = 0; i < keys.Count; i++)
-                    {
-                        var s = keys[i];
-                        svgText.Children.Add(new SvgTextSpan()
-                        {
-                            Text = s.Key,
-                            Fill = new SvgColourServer(s.Value >= count ? Color.Red : Color.Black),
-                            FontWeight = SvgFontWeight.Bold,
-                            Y = new SvgUnitCollection()
-                            {
-                                new SvgUnit(18*(i+1))
-                            },
-                            X = new SvgUnitCollection()
-                            {
-                                new SvgUnit(0)
-                            },
-                            FontSize = 16
-                        });
-                    }
-
-                    svg.Children.Add(svgText);
-                    using (var stream = new MemoryStream())
-                    {
-                        svg.Write(stream);
-                        return File(stream.ToArray(), ContentType.Svg);
-                    }
-                default:
-                    return Json(keys);
-            }
-        }
-
-        public ActionResult Count(int? count)
-        {
-            var keys = RedisHelper.Keys("Share:*");
-            if (count.HasValue)
-            {
-                keys = keys.FindAll(s => RedisHelper.SMembers(s).Length >= count);
-            }
-
-            using var stream = new MemoryStream();
-            new SvgDocument()
-            {
-                Height = 20,
-                Width = 13 * keys.Length.ToString().Length,
-                Children =
-                {
-                    new SvgText(keys.Length.ToString())
-                    {
-                        Fill = new SvgColourServer(Color.Red),
-                        FontWeight = SvgFontWeight.Bold,
-                        Y = new SvgUnitCollection()
-                        {
-                            new SvgUnit(18)
-                        },
-                        FontSize = 20
-                    }
-                }
-            }.Write(stream);
-            return File(stream.ToArray(), ContentType.Svg);
-        }
-    }
-}

+ 20 - 19
src/Masuit.MyBlogs.Core/Controllers/LinksController.cs

@@ -170,10 +170,11 @@ namespace Masuit.MyBlogs.Core.Controllers
         [MyAuthorize]
         public async Task<ActionResult> Edit(Links model)
         {
-            Links links = await LinksService.GetByIdAsync(model.Id);
-            links.Name = model.Name;
-            links.Url = model.Url;
-            bool b = await LinksService.SaveChangesAsync() > 0;
+            var b = await LinksService.GetQuery(m => m.Id == model.Id).UpdateFromQueryAsync(m => new Links()
+            {
+                Name = model.Name,
+                Url = model.Url
+            }) > 0;
             return ResultData(null, b, b ? "保存成功" : "保存失败");
         }
 
@@ -192,15 +193,15 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// 切换友情链接的白名单状态
         /// </summary>
         /// <param name="id"></param>
-        /// <param name="state"></param>
         /// <returns></returns>
         [HttpPost]
         [MyAuthorize]
-        public async Task<ActionResult> ToggleWhitelist(int id, bool state)
+        public async Task<ActionResult> ToggleWhitelist(int id)
         {
-            Links link = await LinksService.GetByIdAsync(id);
-            link.Except = !state;
-            bool b = await LinksService.SaveChangesAsync() > 0;
+            var b = await LinksService.GetQuery(m => m.Id == id).UpdateFromQueryAsync(m => new Links()
+            {
+                Except = !m.Except
+            }) > 0;
             return ResultData(null, b, b ? "切换成功!" : "切换失败!");
         }
 
@@ -208,15 +209,15 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// 切换友情链接的推荐状态
         /// </summary>
         /// <param name="id"></param>
-        /// <param name="state"></param>
         /// <returns></returns>
         [HttpPost]
         [MyAuthorize]
-        public async Task<ActionResult> ToggleRecommend(int id, bool state)
+        public async Task<ActionResult> ToggleRecommend(int id)
         {
-            Links link = await LinksService.GetByIdAsync(id);
-            link.Recommend = !state;
-            bool b = await LinksService.SaveChangesAsync() > 0;
+            var b = await LinksService.GetQuery(m => m.Id == id).UpdateFromQueryAsync(m => new Links()
+            {
+                Recommend = !m.Recommend
+            }) > 0;
             return ResultData(null, b, b ? "切换成功!" : "切换失败!");
         }
 
@@ -224,15 +225,15 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// 切换友情链接可用状态
         /// </summary>
         /// <param name="id"></param>
-        /// <param name="state"></param>
         /// <returns></returns>
         [HttpPost]
         [MyAuthorize]
-        public async Task<ActionResult> Toggle(int id, bool state)
+        public async Task<ActionResult> Toggle(int id)
         {
-            Links link = await LinksService.GetByIdAsync(id);
-            link.Status = !state ? Status.Available : Status.Unavailable;
-            bool b = await LinksService.SaveChangesAsync() > 0;
+            var b = await LinksService.GetQuery(m => m.Id == id).UpdateFromQueryAsync(m => new Links()
+            {
+                Status = m.Status == Status.Unavailable ? Status.Available : Status.Unavailable
+            }) > 0;
             return ResultData(null, b, b ? "切换成功!" : "切换失败!");
         }
     }

+ 12 - 13
src/Masuit.MyBlogs.Core/Controllers/MsgController.cs

@@ -283,9 +283,10 @@ namespace Masuit.MyBlogs.Core.Controllers
         [MyAuthorize]
         public async Task<ActionResult> Read(int id)
         {
-            var msg = await MessageService.GetByIdAsync(id);
-            msg.Read = true;
-            await MessageService.SaveChangesAsync();
+            await MessageService.GetQuery(m => m.Id == id).UpdateFromQueryAsync(m => new InternalMessage()
+            {
+                Read = true
+            });
             return Content("ok");
         }
 
@@ -297,9 +298,10 @@ namespace Masuit.MyBlogs.Core.Controllers
         [MyAuthorize]
         public async Task<ActionResult> Unread(int id)
         {
-            var msg = await MessageService.GetByIdAsync(id);
-            msg.Read = false;
-            await MessageService.SaveChangesAsync();
+            await MessageService.GetQuery(m => m.Id == id).UpdateFromQueryAsync(m => new InternalMessage()
+            {
+                Read = false
+            });
             return Content("ok");
         }
 
@@ -356,15 +358,12 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// <param name="id"></param>
         /// <returns></returns>
         [MyAuthorize]
-        public ActionResult MarkRead(int id)
+        public async Task<ActionResult> MarkRead(int id)
         {
-            var msgs = MessageService.GetQuery(m => m.Id <= id).ToList();
-            foreach (var t in msgs)
+            await MessageService.GetQuery(m => m.Id <= id).UpdateFromQueryAsync(m => new InternalMessage()
             {
-                t.Read = true;
-            }
-
-            MessageService.SaveChanges();
+                Read = true
+            });
             return ResultData(null);
         }
 

+ 24 - 19
src/Masuit.MyBlogs.Core/Controllers/PostController.cs

@@ -24,6 +24,7 @@ using Masuit.Tools.Systems;
 using Microsoft.AspNetCore.Hosting;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
 using Microsoft.Net.Http.Headers;
 using System;
 using System.ComponentModel.DataAnnotations;
@@ -228,9 +229,10 @@ namespace Masuit.MyBlogs.Core.Controllers
                 return ResultData(null, false, "您刚才已经投过票了,感谢您的参与!");
             }
 
-            Post post = await PostService.GetByIdAsync(id) ?? throw new NotFoundException("文章未找到");
-            post.VoteDownCount = post.VoteDownCount + 1;
-            var b = await PostService.SaveChangesAsync() > 0;
+            var b = await PostService.GetQuery(p => p.Id == id).UpdateFromQueryAsync(p => new Post()
+            {
+                VoteDownCount = p.VoteDownCount + 1
+            }) > 0;
             if (b)
             {
                 HttpContext.Session.Set("post-vote" + id, id.GetBytes());
@@ -251,9 +253,10 @@ namespace Masuit.MyBlogs.Core.Controllers
                 return ResultData(null, false, "您刚才已经投过票了,感谢您的参与!");
             }
 
-            Post post = await PostService.GetByIdAsync(id) ?? throw new NotFoundException("文章未找到");
-            post.VoteUpCount += 1;
-            var b = await PostService.SaveChangesAsync() > 0;
+            var b = await PostService.GetQuery(p => p.Id == id).UpdateFromQueryAsync(p => new Post()
+            {
+                VoteUpCount = p.VoteUpCount + 1
+            }) > 0;
             if (b)
             {
                 HttpContext.Session.Set("post-vote" + id, id.GetBytes());
@@ -268,7 +271,7 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// <returns></returns>
         public async Task<ActionResult> Publish()
         {
-            var list = await CategoryService.GetQueryFromCacheAsync(c => c.Status == Status.Available).ConfigureAwait(false);
+            var list = await CategoryService.GetQueryFromCacheAsync(c => c.Status == Status.Available);
             return View(list);
         }
 
@@ -305,7 +308,7 @@ namespace Masuit.MyBlogs.Core.Controllers
 
             post.Label = string.IsNullOrEmpty(post.Label?.Trim()) ? null : post.Label.Replace(",", ",");
             post.Status = Status.Pending;
-            post.Content = await ImagebedClient.ReplaceImgSrc(post.Content.HtmlSantinizerStandard().ClearImgAttributes(), cancellationToken).ConfigureAwait(false);
+            post.Content = await ImagebedClient.ReplaceImgSrc(post.Content.HtmlSantinizerStandard().ClearImgAttributes(), cancellationToken);
             Post p = post.Mapper<Post>();
             p.IP = ClientIP;
             p.Modifier = p.Author;
@@ -342,22 +345,22 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// </summary>
         /// <returns></returns>
         [Route("all"), ResponseCache(Duration = 600, VaryByHeader = "Cookie")]
-        public ActionResult All()
+        public async Task<ActionResult> All()
         {
             var tags = PostService.GetQuery(p => !string.IsNullOrEmpty(p.Label)).Select(p => p.Label).ToList().SelectMany(s => s.Split(',', ',')).GroupBy(t => t).Where(g => g.Count() > 1).OrderByDescending(g => g.Count()).ThenBy(g => g.Key).ToList(); //tag
             ViewBag.tags = tags;
-            ViewBag.cats = CategoryService.GetAll(c => c.Post.Count, false).Select(c => new TagCloudViewModel
+            ViewBag.cats = await CategoryService.GetAll(c => c.Post.Count, false).Select(c => new TagCloudViewModel
             {
                 Id = c.Id,
                 Name = c.Name,
                 Count = c.Post.Count(p => p.Status == Status.Published || CurrentUser.IsAdmin)
-            }).ToList(); //category
-            ViewBag.seminars = SeminarService.GetAll(c => c.Post.Count, false).Select(c => new TagCloudViewModel
+            }).ToListAsync(); //category
+            ViewBag.seminars = await SeminarService.GetAll(c => c.Post.Count, false).Select(c => new TagCloudViewModel
             {
                 Id = c.Id,
                 Name = c.Title,
                 Count = c.Post.Count(p => p.Status == Status.Published || CurrentUser.IsAdmin)
-            }).ToList(); //seminars
+            }).ToListAsync(); //seminars
             return View();
         }
 
@@ -957,9 +960,10 @@ namespace Masuit.MyBlogs.Core.Controllers
         [MyAuthorize]
         public async Task<ActionResult> Refresh(int id)
         {
-            var post = await PostService.GetByIdAsync(id) ?? throw new NotFoundException("文章未找到");
-            post.ModifyDate = DateTime.Now;
-            await PostService.SaveChangesAsync();
+            await PostService.GetQuery(p => p.Id == id).UpdateFromQueryAsync(p => new Post()
+            {
+                ModifyDate = DateTime.Now
+            });
             return RedirectToAction("Details", new { id });
         }
 
@@ -972,9 +976,10 @@ namespace Masuit.MyBlogs.Core.Controllers
         [HttpPost("post/block/{id}")]
         public async Task<ActionResult> Block(int id)
         {
-            var merge = await PostService.GetByIdAsync(id) ?? throw new NotFoundException("文章未找到");
-            merge.Status = Status.Forbidden;
-            var b = await PostService.SaveChangesAsync() > 0;
+            var b = await PostService.GetQuery(p => p.Id == id).UpdateFromQueryAsync(p => new Post()
+            {
+                Status = Status.Forbidden
+            }) > 0;
             return b ? ResultData(null, true, "操作成功!") : ResultData(null, false, "操作失败!");
         }
         #endregion

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

@@ -58,11 +58,12 @@ namespace Masuit.MyBlogs.Core.Controllers
         [HttpPost]
         public async Task<ActionResult> Update(FastShare model)
         {
-            FastShare share = await FastShareService.GetByIdAsync(model.Id);
-            share.Title = model.Title;
-            share.Link = model.Link;
-            share.Sort = model.Sort;
-            bool b = await FastShareService.SaveChangesAsync() > 0;
+            var b = await FastShareService.GetQuery(s => s.Id == model.Id).UpdateFromQueryAsync(s => new FastShare()
+            {
+                Title = model.Title,
+                Link = model.Link,
+                Sort = model.Sort
+            }) > 0;
             return ResultData(null, b, b ? "更新成功" : "更新失败");
         }
     }

+ 0 - 49
src/Masuit.MyBlogs.Core/Extensions/ActivityMiddleware.cs

@@ -1,49 +0,0 @@
-using Masuit.MyBlogs.Core.Common;
-using Masuit.Tools.Security;
-using Microsoft.AspNetCore.Http;
-using System;
-using System.Threading.Tasks;
-
-namespace Masuit.MyBlogs.Core.Extensions
-{
-    /// <summary>
-    /// 请求拦截器
-    /// </summary>
-    public class ActivityMiddleware
-    {
-        private readonly RequestDelegate _next;
-
-        /// <summary>
-        /// 构造函数
-        /// </summary>
-        /// <param name="next"></param>
-        public ActivityMiddleware(RequestDelegate next)
-        {
-            _next = next;
-        }
-
-        public async Task Invoke(HttpContext context)
-        {
-            var req = context.Request;
-            var share = req.Query["share"].ToString();
-            if (req.IsRobot() || string.IsNullOrEmpty(share) || share == req.Cookies["ShareCode"])
-            {
-                await _next.Invoke(context);
-                return;
-            }
-
-            var mail = share.AESDecrypt();
-            if (string.IsNullOrEmpty(mail))
-            {
-                await _next.Invoke(context);
-                return;
-            }
-
-            var ip = context.Connection.RemoteIpAddress.MapToIPv4().ToString();
-            RedisHelper.SAddAsync("Share:" + mail, ip).ContinueWith(task => RedisHelper.Expire("Share:" + mail, TimeSpan.FromDays(30)));
-            //var query = req.Query.Where(x => x.Key != "share").Select(x => x.Key + "=" + x.Value).Join("&");
-            //context.Response.Redirect((req.Path + "?" + query).Trim('?'));
-            await _next.Invoke(context);
-        }
-    }
-}

+ 0 - 1
src/Masuit.MyBlogs.Core/Masuit.MyBlogs.Core.csproj

@@ -66,7 +66,6 @@
         <PackageReference Include="PanGu.HighLight" Version="1.0.0" />
         <PackageReference Include="Polly" Version="7.2.1" />
         <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="5.0.0-alpha.2" />
-        <PackageReference Include="Svg" Version="3.2.3" />
         <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="5.0.1" />
         <PackageReference Include="System.Linq.Dynamic.Core" Version="1.2.8" />
         <PackageReference Include="TimeZoneConverter" Version="3.4.0" />

+ 5 - 10
src/Masuit.MyBlogs.Core/wwwroot/ng-views/controllers/links.js

@@ -131,16 +131,13 @@
 	}
 	$scope.toggleWhite= function(row) {
 		$scope.request("/links/ToggleWhitelist", {
-			id:row.Id,
-			state:row.Except
+			id:row.Id
 		}, function (data) {
-			
-		});
+        });
 	}
 	$scope.toggleState= function(row) {
 		$scope.request("/links/Toggle", {
-			id:row.Id,
-			state:row.Status==1
+			id:row.Id
 		}, function (data) {
 			
 		});
@@ -148,10 +145,8 @@
 
 	$scope.toggleRecommend = function(row) {
 		$scope.request("/links/ToggleRecommend", {
-			id:row.Id,
-			state:row.Recommend
+			id:row.Id
 		}, function (data) {
-			
-		});
+        });
 	}
 }]);