瀏覽代碼

修正文章平均访问统计的bug

懒得勤快 2 年之前
父節點
當前提交
3556b3a1ec

+ 0 - 1
src/Masuit.MyBlogs.Core/Configs/MappingProfile.cs

@@ -45,7 +45,6 @@ public sealed class MappingProfile : Profile
 			.ForMember(p => p.Status, e => e.MapFrom(p => p.Status.GetDisplay()))
 			.ForMember(p => p.ModifyCount, e => e.MapFrom(p => p.PostHistoryVersion.Count))
 			.ForMember(p => p.ViewCount, e => e.MapFrom(p => p.TotalViewCount))
-			.ForMember(p => p.AverageViewCount, e => e.MapFrom(p => p.PostVisitRecordStats.Sum(t => t.Count) / (p.PostVisitRecordStats.Max(s => s.Date) - p.PostVisitRecordStats.Min(s => s.Date)).TotalDays))
 			.ForMember(p => p.Seminars, e => e.MapFrom(p => p.Seminar.Select(s => s.Id).ToArray()))
 			.ForMember(p => p.LimitDesc, e => e.MapFrom(p => p.LimitMode > RegionLimitMode.All ? string.Format(p.LimitMode.GetDescription(), p.Regions, p.ExceptRegions) : "无限制"));
 

+ 1 - 1
src/Masuit.MyBlogs.Core/Controllers/PostController.cs

@@ -4,6 +4,7 @@ using Hangfire;
 using Masuit.LuceneEFCore.SearchEngine;
 using Masuit.LuceneEFCore.SearchEngine.Interfaces;
 using Masuit.MyBlogs.Core.Common;
+using Masuit.MyBlogs.Core.Common.Mails;
 using Masuit.MyBlogs.Core.Configs;
 using Masuit.MyBlogs.Core.Extensions;
 using Masuit.MyBlogs.Core.Extensions.Firewall;
@@ -25,7 +26,6 @@ using System.Linq.Dynamic.Core;
 using System.Net;
 using System.Text;
 using System.Text.RegularExpressions;
-using Masuit.MyBlogs.Core.Common.Mails;
 using Z.EntityFramework.Plus;
 using SameSiteMode = Microsoft.AspNetCore.Http.SameSiteMode;
 

+ 11 - 2
src/Masuit.MyBlogs.Core/Extensions/Hangfire/HangfireBackJob.cs

@@ -1,10 +1,10 @@
 using FreeRedis;
 using Masuit.LuceneEFCore.SearchEngine.Interfaces;
 using Masuit.MyBlogs.Core.Common;
+using Masuit.MyBlogs.Core.Common.Mails;
 using Masuit.Tools.Logging;
 using Microsoft.EntityFrameworkCore;
 using System.Net;
-using Masuit.MyBlogs.Core.Common.Mails;
 
 namespace Masuit.MyBlogs.Core.Extensions.Hangfire;
 
@@ -108,7 +108,16 @@ public sealed class HangfireBackJob : Disposable, IHangfireBackJob
 		}
 
 		post.TotalViewCount += 1;
-		post.AverageViewCount = recordService.GetQuery(e => e.PostId == pid).GroupBy(r => r.Time.Date).Select(g => g.Count()).DefaultIfEmpty().Average();
+		var count = recordService.Count(e => e.PostId == pid);
+		if (count > 0)
+		{
+			post.AverageViewCount = count / (recordService.GetQuery(e => e.PostId == pid).MaxOrDefault(e => e.Time) - recordService.GetQuery(e => e.PostId == pid).MinOrDefault(e => e.Time)).TotalDays;
+		}
+		else
+		{
+			post.AverageViewCount = 1;
+		}
+
 		recordService.AddEntity(new PostVisitRecord()
 		{
 			IP = ip,

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

@@ -4,6 +4,7 @@
         <TargetFramework>net7.0</TargetFramework>
         <ServerGarbageCollection>false</ServerGarbageCollection>
         <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
+        <TieredPGO>true</TieredPGO>
         <Authors>懒得勤快</Authors>
         <Product>懒得勤快的博客</Product>
         <Description>masuit.com</Description>
@@ -11,7 +12,6 @@
         <NeutralLanguage>zh-CN</NeutralLanguage>
         <ImplicitUsings>enable</ImplicitUsings>
         <PackageReadmeFile>README.md</PackageReadmeFile>
-        <TieredPGO>true</TieredPGO>
     </PropertyGroup>
 
     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">

+ 2 - 0
src/Masuit.MyBlogs.Core/Models/Entity/Post.cs

@@ -21,6 +21,8 @@ public class Post : BaseEntity
 		Status = Status.Pending;
 		Seminar = new HashSet<Seminar>();
 		PostMergeRequests = new HashSet<PostMergeRequest>();
+		PostVisitRecordStats = new List<PostVisitRecordStats>();
+		PostVisitRecords = new List<PostVisitRecord>();
 	}
 
 	/// <summary>