Browse Source

广告系统统计优化

懒得勤快 5 years ago
parent
commit
d66bacf6de

+ 9 - 0
src/Masuit.MyBlogs.Core/Configs/HangfireJobInit.cs

@@ -18,6 +18,7 @@ namespace Masuit.MyBlogs.Core.Configs
             RecurringJob.AddOrUpdate(() => CheckLinks(), "0 */5 * * *"); //每5h检查友链
             RecurringJob.AddOrUpdate(() => EverydayJob(), Cron.Daily(5), TimeZoneInfo.Local); //每天的任务
             RecurringJob.AddOrUpdate(() => EveryweekJob(), Cron.Weekly(DayOfWeek.Monday, 5), TimeZoneInfo.Local); //每周的任务
+            RecurringJob.AddOrUpdate(() => EverymonthJob(), Cron.Monthly(1, 0, 0), TimeZoneInfo.Local); //每月的任务
             RecurringJob.AddOrUpdate(() => EveryHourJob(), Cron.Hourly); //每小时的任务
             BackgroundJob.Enqueue(() => HangfireHelper.CreateJob(typeof(IHangfireBackJob), nameof(HangfireBackJob.StatisticsSearchKeywords), "default"));
         }
@@ -38,6 +39,14 @@ namespace Masuit.MyBlogs.Core.Configs
             HangfireHelper.CreateJob(typeof(IHangfireBackJob), nameof(HangfireBackJob.EverydayJob), "default");
         }
 
+        /// <summary>
+        /// 每日任务
+        /// </summary>
+        public static void EverymonthJob()
+        {
+            HangfireHelper.CreateJob(typeof(IHangfireBackJob), nameof(HangfireBackJob.EverymonthJob), "default");
+        }
+
         /// <summary>
         /// 每小时任务
         /// </summary>

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

@@ -2,11 +2,11 @@
 using Masuit.MyBlogs.Core.Configs;
 using Masuit.Tools;
 using Masuit.Tools.Core.Net;
+using Masuit.Tools.Core.Validator;
 using Masuit.Tools.Models;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
 using Newtonsoft.Json;
-using System;
 using System.Net.Http;
 using System.Threading.Tasks;
 using TimeZoneConverter;
@@ -35,7 +35,7 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// <param name="ip"></param>
         /// <returns></returns>
         [Route("ip/{ip?}"), ResponseCache(Duration = 600, VaryByQueryKeys = new[] { "ip" }, VaryByHeader = "Cookie")]
-        public async Task<ActionResult> GetIpInfo(string ip)
+        public async Task<ActionResult> GetIpInfo([IsIPAddress] string ip)
         {
             if (string.IsNullOrEmpty(ip))
             {

+ 15 - 1
src/Masuit.MyBlogs.Core/Extensions/Hangfire/HangfireBackJob.cs

@@ -32,6 +32,7 @@ namespace Masuit.MyBlogs.Core.Extensions.Hangfire
         private readonly IHttpClientFactory _httpClientFactory;
         private readonly IWebHostEnvironment _hostEnvironment;
         private readonly ISearchEngine<DataContext> _searchEngine;
+        private readonly IAdvertisementService _advertisementService;
 
         /// <summary>
         /// hangfire后台任务
@@ -44,7 +45,7 @@ namespace Masuit.MyBlogs.Core.Extensions.Hangfire
         /// <param name="httpClientFactory"></param>
         /// <param name="HostEnvironment"></param>
         /// <param name="searchEngine"></param>
-        public HangfireBackJob(IUserInfoService userInfoService, IPostService postService, ISystemSettingService settingService, ISearchDetailsService searchDetailsService, ILinksService linksService, IHttpClientFactory httpClientFactory, IWebHostEnvironment HostEnvironment, ISearchEngine<DataContext> searchEngine)
+        public HangfireBackJob(IUserInfoService userInfoService, IPostService postService, ISystemSettingService settingService, ISearchDetailsService searchDetailsService, ILinksService linksService, IHttpClientFactory httpClientFactory, IWebHostEnvironment HostEnvironment, ISearchEngine<DataContext> searchEngine, IAdvertisementService advertisementService)
         {
             _userInfoService = userInfoService;
             _postService = postService;
@@ -54,6 +55,7 @@ namespace Masuit.MyBlogs.Core.Extensions.Hangfire
             _httpClientFactory = httpClientFactory;
             _hostEnvironment = HostEnvironment;
             _searchEngine = searchEngine;
+            _advertisementService = advertisementService;
         }
 
         /// <summary>
@@ -155,6 +157,18 @@ namespace Masuit.MyBlogs.Core.Extensions.Hangfire
             TrackData.DumpLog();
         }
 
+        /// <summary>
+        /// 每月的任务
+        /// </summary>
+        public void EverymonthJob()
+        {
+            _advertisementService.GetAll().UpdateFromQuery(a => new Advertisement()
+            {
+                DisplayCount = 0,
+                ViewCount = 0
+            });
+        }
+
         /// <summary>
         /// 检查友链
         /// </summary>

+ 5 - 0
src/Masuit.MyBlogs.Core/Extensions/Hangfire/IHangfireBackJob.cs

@@ -34,6 +34,11 @@ namespace Masuit.MyBlogs.Core.Extensions.Hangfire
         /// </summary>
         void EverydayJob();
 
+        /// <summary>
+        /// 每月的任务
+        /// </summary>
+        void EverymonthJob();
+
         /// <summary>
         /// 友链检查
         /// </summary>

+ 8 - 1
src/Masuit.MyBlogs.Core/Models/ViewModel/AdvertisementViewModel.cs

@@ -71,7 +71,14 @@ namespace Masuit.MyBlogs.Core.Models.ViewModel
         /// <summary>
         /// 日均点击量
         /// </summary>
-        public int AverageViewCount => (int)(ViewCount * 1.0 / (DateTime.Now - CreateTime).TotalDays);
+        public int AverageViewCount
+        {
+            get
+            {
+                var month = DateTime.Today.AddDays(-DateTime.Today.Day);
+                return (int)(ViewCount * 1.0 / ((CreateTime > month ? CreateTime : DateTime.Now) - month).TotalDays);
+            }
+        }
 
         public string CategoryIds { get; set; }
         public string CategoryNames { get; set; }