1
0
懒得勤快 3 жил өмнө
parent
commit
9469a72d5f

+ 9 - 2
src/Masuit.MyBlogs.Core/Common/UserAgent.cs

@@ -8,7 +8,7 @@ namespace Masuit.MyBlogs.Core.Common
         private static readonly IMemoryCache Cache = new MemoryCache(new MemoryCacheOptions());
         private static readonly IMemoryCache Cache = new MemoryCache(new MemoryCacheOptions());
 
 
         internal static readonly Dictionary<string, string> Platforms = new Dictionary<string, string>() {
         internal static readonly Dictionary<string, string> Platforms = new Dictionary<string, string>() {
-            {"windows nt 10.0", "Windows 10"},
+            {"windows nt 10.0", "Windows 10/11"},
             {"windows nt 6.3", "Windows 8.1"},
             {"windows nt 6.3", "Windows 8.1"},
             {"windows nt 6.2", "Windows 8"},
             {"windows nt 6.2", "Windows 8"},
             {"windows nt 6.1", "Windows 7"},
             {"windows nt 6.1", "Windows 7"},
@@ -213,15 +213,22 @@ namespace Masuit.MyBlogs.Core.Common
         };
         };
 
 
         protected string agent;
         protected string agent;
+
         public bool IsBrowser { get; set; }
         public bool IsBrowser { get; set; }
+
         public bool IsRobot { get; set; }
         public bool IsRobot { get; set; }
+
         public bool IsMobile { get; set; }
         public bool IsMobile { get; set; }
 
 
         // Current values
         // Current values
         public string Platform { get; set; } = "";
         public string Platform { get; set; } = "";
+
         public string Browser { get; set; } = "";
         public string Browser { get; set; } = "";
+
         public string BrowserVersion { get; set; } = "";
         public string BrowserVersion { get; set; } = "";
+
         public string Mobile { get; set; } = "";
         public string Mobile { get; set; } = "";
+
         public string Robot { get; set; } = "";
         public string Robot { get; set; } = "";
 
 
         internal UserAgent(string userAgentString = null)
         internal UserAgent(string userAgentString = null)
@@ -305,4 +312,4 @@ namespace Masuit.MyBlogs.Core.Common
             });
             });
         }
         }
     }
     }
-}
+}

+ 11 - 5
src/Masuit.MyBlogs.Core/Controllers/BaseController.cs

@@ -83,12 +83,19 @@ namespace Masuit.MyBlogs.Core.Controllers
                 return text;
                 return text;
             }
             }
 
 
+            var location = Request.Location();
+            var template = Template.Create(text).Set("clientip", ClientIP).Set("location", location.Address).Set("network", location.Network);
+            if (text.Contains("{{browser}}") || text.Contains("{{os}}"))
+            {
+                var agent = UserAgent.Parse(Request.Headers[HeaderNames.UserAgent] + "");
+                template.Set("browser", agent.Browser + " " + agent.BrowserVersion).Set("os", agent.Platform);
+            }
+
             var pattern = @"\{\{[\w._-]+\}\}";
             var pattern = @"\{\{[\w._-]+\}\}";
-            var keys = Regex.Matches(text, pattern).Select(m => m.Value.Trim('{', '}')).ToArray();
+            var keys = Regex.Matches(template.Render(), pattern).Select(m => m.Value.Trim('{', '}')).ToArray();
             if (keys.Length > 0)
             if (keys.Length > 0)
             {
             {
                 var dic = VariablesService.GetQueryFromCache(v => keys.Contains(v.Key)).ToDictionary(v => v.Key, v => v.Value);
                 var dic = VariablesService.GetQueryFromCache(v => keys.Contains(v.Key)).ToDictionary(v => v.Key, v => v.Value);
-                var template = Template.Create(text);
                 foreach (var (key, value) in dic)
                 foreach (var (key, value) in dic)
                 {
                 {
                     string valve = value;
                     string valve = value;
@@ -96,13 +103,12 @@ namespace Masuit.MyBlogs.Core.Controllers
                     {
                     {
                         valve = ReplaceVariables(valve, depth++);
                         valve = ReplaceVariables(valve, depth++);
                     }
                     }
+
                     template.Set(key, valve);
                     template.Set(key, valve);
                 }
                 }
-
-                return template.Render();
             }
             }
 
 
-            return text;
+            return template.Render();
         }
         }
 
 
         public override Task OnActionExecutionAsync(ActionExecutingContext filterContext, ActionExecutionDelegate next)
         public override Task OnActionExecutionAsync(ActionExecutingContext filterContext, ActionExecutionDelegate next)

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

@@ -318,7 +318,7 @@ namespace Masuit.MyBlogs.Core.Controllers
         [ResponseCache(Duration = 600, VaryByHeader = "Cookie")]
         [ResponseCache(Duration = 600, VaryByHeader = "Cookie")]
         public ActionResult GetTag()
         public ActionResult GetTag()
         {
         {
-            return ResultData(PostService.GetTags().Where(p => p.Value > 1).Select(x => x.Key).OrderBy(s => s));
+            return ResultData(PostService.GetTags().Select(x => x.Key).OrderBy(s => s));
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -1035,13 +1035,14 @@ namespace Masuit.MyBlogs.Core.Controllers
                 Title = p.Title,
                 Title = p.Title,
                 ViewCount = (int)p.AverageViewCount
                 ViewCount = (int)p.AverageViewCount
             }).Cacheable().ToListAsync(cancellationToken);
             }).Cacheable().ToListAsync(cancellationToken);
+            var yesterday = DateTime.Now.AddDays(-1);
             var trending = await postsQuery.Select(p => new PostModelBase()
             var trending = await postsQuery.Select(p => new PostModelBase()
             {
             {
                 Id = p.Id,
                 Id = p.Id,
                 Title = p.Title,
                 Title = p.Title,
-                ViewCount = p.PostVisitRecordStats.Where(t => t.Date >= DateTime.Today).Sum(e => e.Count)
+                ViewCount = p.PostVisitRecordStats.Where(t => t.Date >= yesterday).Sum(e => e.Count)
             }).OrderByDescending(p => p.ViewCount).Take(10).Cacheable().ToListAsync(cancellationToken);
             }).OrderByDescending(p => p.ViewCount).Take(10).Cacheable().ToListAsync(cancellationToken);
-            var readCount = PostVisitRecordService.Count(e => e.Time >= DateTime.Today);
+            var readCount = PostVisitRecordService.Count(e => e.Time >= yesterday);
             return ResultData(new
             return ResultData(new
             {
             {
                 mostHots,
                 mostHots,