Bläddra i källkod

标签支持多标签拉取

懒得勤快 4 år sedan
förälder
incheckning
0e9e56a28e

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

@@ -107,8 +107,8 @@ namespace Masuit.MyBlogs.Core.Controllers
         [Route("tag/{tag}"), ResponseCache(Duration = 600, VaryByQueryKeys = new[] { "page", "size", "orderBy" }, VaryByHeader = "Cookie")]
         public async Task<ActionResult> Tag(string tag, [Optional] OrderBy? orderBy, [Range(1, int.MaxValue, ErrorMessage = "页码必须大于0")] int page = 1, [Range(1, 50, ErrorMessage = "页大小必须在0到50之间")] int size = 15)
         {
-            tag = tag.Replace(",", "|").Replace(",", "|").Split('|').Select(Regex.Escape).Join("|");
-            var posts = await PostService.GetQuery(p => Regex.IsMatch(p.Label, tag) && p.Status == Status.Published).OrderBy($"{nameof(PostDto.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedListAsync<Post, PostDto>(page, size, MapperConfig);
+            Expression<Func<Post, bool>> where = p => p.Status == Status.Published;
+            var posts = await PostService.GetQuery(tag.Split(",").Aggregate(where, (current, s) => current.And(p => Regex.IsMatch(p.Label, s)))).OrderBy($"{nameof(PostDto.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedListAsync<Post, PostDto>(page, size, MapperConfig);
             CheckPermission(posts.Data);
             var viewModel = await GetIndexPageViewModel();
             ViewBag.Tag = tag;

+ 5 - 4
src/Masuit.MyBlogs.Core/Extensions/Hangfire/HangfireBackJob.cs

@@ -208,18 +208,19 @@ namespace Masuit.MyBlogs.Core.Extensions.Hangfire
         public void UpdateLinkWeight(string referer, string ip)
         {
             var uri = new Uri(referer);
-            _linksService.GetQuery(l => l.Url.Contains(uri.Host)).AsParallel().ForAll(l =>
+            var list = _linksService.GetQuery(l => l.Url.Contains(uri.Host)).ToList();
+            foreach (var link in list)
             {
-                l.Loopbacks.Add(new LinkLoopback()
+                link.Loopbacks.Add(new LinkLoopback()
                 {
                     IP = ip,
                     Referer = referer,
                     Time = DateTime.Now
                 });
-            });
-            _linksService.SaveChanges();
+            }
             var time = DateTime.Now.AddMonths(-1);
             _loopbackService.GetQuery(b => b.Time < time).DeleteFromQuery();
+            _linksService.SaveChanges();
         }
 
         /// <summary>

+ 12 - 10
src/Masuit.MyBlogs.Core/wwwroot/Scripts/global/scripts.js

@@ -209,18 +209,19 @@ function CopyrightProtect() {
                     return false;
                 }
             }
-            document.ondragstart=async function () {
+            document.ondragstart=function (e) {
+                e.returnValue = false;
                 hackClip();
                 return false;
             }
             $(".article-content").on("copy",function (e) {
-                hackClip();
                 e.returnValue = false;
+                hackClip();
                 return false;
             });
             document.oncontextmenu = function (e) {
-                hackClip();
                 e.returnValue = false;
+                hackClip();
                 return false;
             }
         } catch (ex) {
@@ -245,13 +246,13 @@ function CopyrightProtect4Editor() {
                 }
             }
             document.getElementById("ueditor_0").contentWindow.document.body.ondragstart = function (e) {
-                hackClip();
                 e.returnValue = false;
+                hackClip();
                 return false;
             }
             document.getElementById("ueditor_0").contentWindow.document.body.oncopy = function (e) {
-                hackClip();
                 e.returnValue = false;
+                hackClip();
                 return false;
             }
         } catch (ex) {
@@ -268,9 +269,9 @@ function GlobalCopyrightProtect() {
                 var currKey = 0, evt = e || window.event;
                 currKey = evt.keyCode || evt.which || evt.charCode;
                 if (currKey == 123 || (evt.ctrlKey && currKey == 67) || (evt.ctrlKey && currKey == 83)|| (evt.ctrlKey && currKey == 85)) { //禁止F12,Ctrl+C,Ctrl+U
-                    clearSelect();
                     evt.cancelBubble = true;
                     evt.returnValue = false;
+                    clearSelect();
                     return false;
                 }
             });
@@ -278,24 +279,25 @@ function GlobalCopyrightProtect() {
                 var currKey = 0, evt = e || window.event;
                 currKey = evt.keyCode || evt.which || evt.charCode;
                 if (currKey == 123 || (evt.ctrlKey && currKey == 65) || (evt.ctrlKey && currKey == 83) || (evt.ctrlKey && currKey == 85) || (evt.ctrlKey && evt.shiftKey) || evt.altKey) {
-                    clearSelect();
                     evt.cancelBubble = true;
                     evt.returnValue = false;
+                    clearSelect();
                     return false;
                 }
             }
-            document.ondragstart=function () {
+            document.ondragstart=function (e) {
+                e.returnValue = false;
                 hackClip();
                 return false;
             }
             $(".article-content").on("copy",function (e) {
-                hackClip();
                 e.returnValue = false;
+                hackClip();
                 return false;
             });
             document.oncontextmenu = function () {
-                hackClip();
                 event.returnValue = false;
+                hackClip();
                 return false;
             }
         } catch (ex) {