Bläddra i källkod

修正一些bug

懒得勤快 4 år sedan
förälder
incheckning
3c37e648f6

+ 0 - 2
src/Masuit.MyBlogs.Core/Controllers/BaseController.cs

@@ -111,7 +111,6 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// <param name="filterContext">有关当前请求和操作的信息。</param>
         public override void OnActionExecuting(ActionExecutingContext filterContext)
         {
-            base.OnActionExecuting(filterContext);
             ViewBag.Desc = CommonHelper.SystemSettings["Description"];
             var user = filterContext.HttpContext.Session.Get<UserInfoDto>(SessionKey.UserInfo);
 #if DEBUG
@@ -175,7 +174,6 @@ namespace Masuit.MyBlogs.Core.Controllers
                 };
                 ViewBag.Footer = model;
             }
-            base.OnActionExecuted(filterContext);
         }
 
         /// <summary>

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

@@ -218,7 +218,7 @@ namespace Masuit.MyBlogs.Core.Controllers
                     break;
                 case "compress":
                     var filename = Path.Combine(Path.Combine(root, req.Destination.TrimStart('\\', '/')), Path.GetFileNameWithoutExtension(req.CompressedFilename) + ".zip");
-                    SevenZipCompressor.Zip(req.Items.Select(s => Path.Combine(root, s.TrimStart('\\', '/'))).ToList(), filename);
+                    SevenZipCompressor.Zip(req.Items.Select(s => Path.Combine(root, s.TrimStart('\\', '/'))), filename);
                     list.Add(new
                     {
                         success = "true"
@@ -262,7 +262,7 @@ namespace Masuit.MyBlogs.Core.Controllers
                     }
                     break;
                 case "downloadMultiple":
-                    var buffer = SevenZipCompressor.ZipStream(items.Select(s => Path.Combine(HostEnvironment.ContentRootPath, root, s.TrimStart('\\', '/'))).ToList()).ToArray();
+                    var buffer = SevenZipCompressor.ZipStream(items.Select(s => Path.Combine(HostEnvironment.ContentRootPath, root, s.TrimStart('\\', '/')))).ToArray();
                     return this.ResumeFile(buffer, Path.GetFileName(toFilename));
             }
 

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

@@ -1,4 +1,5 @@
 using AutoMapper.QueryableExtensions;
+using EFCoreSecondLevelCacheInterceptor;
 using Masuit.MyBlogs.Core.Common;
 using Masuit.MyBlogs.Core.Extensions;
 using Masuit.MyBlogs.Core.Infrastructure.Repository;
@@ -24,7 +25,6 @@ using System.Linq.Dynamic.Core;
 using System.Linq.Expressions;
 using System.Runtime.InteropServices;
 using System.Threading.Tasks;
-using Z.EntityFramework.Plus;
 
 namespace Masuit.MyBlogs.Core.Controllers
 {
@@ -64,7 +64,7 @@ namespace Masuit.MyBlogs.Core.Controllers
             var viewModel = await GetIndexPageViewModel();
             viewModel.Banner = banners;
             viewModel.Posts = posts;
-            ViewBag.FastShare = fastShares.ToList();
+            ViewBag.FastShare = fastShares;
             viewModel.PageParams = new Pagination(1, 15, posts.TotalCount, OrderBy.ModifyDate);
             viewModel.SidebarAds = AdsService.GetsByWeightedPrice(2, AdvertiseType.SideBar);
             viewModel.ListAdvertisement = AdsService.GetByWeightedPrice(AdvertiseType.PostList);
@@ -224,14 +224,14 @@ namespace Masuit.MyBlogs.Core.Controllers
             var notices = await NoticeService.GetPagesFromCacheAsync<DateTime, NoticeDto>(1, 5, n => n.NoticeStatus == NoticeStatus.Normal, n => n.ModifyDate, false); //加载前5条公告
             var cats = await CategoryService.GetQueryFromCacheAsync<string, CategoryDto>(c => c.Status == Status.Available, c => c.Name); //加载分类目录
             var hotSearches = RedisHelper.Get<List<KeywordsRank>>("SearchRank:Week").Take(10).ToList(); //热词统计
-            var hot6Post = await postsQuery.OrderBy((new Random().Next() % 3) switch
+            var hot6Post = postsQuery.OrderBy((new Random().Next() % 3) switch
             {
                 1 => nameof(OrderBy.VoteUpCount),
                 2 => nameof(OrderBy.AverageViewCount),
                 _ => nameof(OrderBy.TotalViewCount)
-            } + " desc").Skip(0).Take(5).FromCacheAsync(); //热门文章
+            } + " desc").Skip(0).Take(5).Cacheable(); //热门文章
             var newdic = new Dictionary<string, int>(); //标签云最终结果
-            var tagdic = postsQuery.Where(p => !string.IsNullOrEmpty(p.Label)).Select(p => p.Label).Distinct().FromCache().ToList().SelectMany(s => s.Split(',', ',')).GroupBy(s => s).ToDictionary(g => g.Key, g => g.Count()); //统计标签
+            var tagdic = postsQuery.Where(p => !string.IsNullOrEmpty(p.Label)).Select(p => p.Label).Distinct().Cacheable().ToList().SelectMany(s => s.Split(',', ',')).GroupBy(s => s).ToDictionary(g => g.Key, g => g.Count()); //统计标签
 
             if (tagdic.Any())
             {
@@ -245,7 +245,7 @@ namespace Masuit.MyBlogs.Core.Controllers
 
             return new HomePageViewModel()
             {
-                Categories = cats.ToList(),
+                Categories = cats,
                 HotSearch = hotSearches,
                 Notices = notices.Data,
                 Tags = newdic,

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

@@ -1,5 +1,6 @@
 using AngleSharp;
 using CacheManager.Core;
+using EFCoreSecondLevelCacheInterceptor;
 using Hangfire;
 using JiebaNet.Segmenter;
 using Masuit.LuceneEFCore.SearchEngine.Interfaces;
@@ -354,7 +355,7 @@ namespace Masuit.MyBlogs.Core.Controllers
         [Route("all"), ResponseCache(Duration = 600, VaryByHeader = "Cookie")]
         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
+            var tags = PostService.GetQuery(p => !string.IsNullOrEmpty(p.Label)).Select(p => p.Label).Distinct().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 = await CategoryService.GetAll(c => c.Post.Count, false).Select(c => new TagCloudViewModel
             {
@@ -1009,7 +1010,7 @@ namespace Masuit.MyBlogs.Core.Controllers
             var keys = await RedisHelper.KeysAsync(nameof(PostOnline) + ":*");
             var sets = await keys.SelectAsync(async s => (Id: s.Split(':')[1].ToInt32(), Clients: await RedisHelper.HGetAsync<HashSet<string>>(s, "value")));
             var ids = sets.Where(t => t.Clients.Count > 0).OrderByDescending(t => t.Clients.Count).Take(10).Select(t => t.Id).ToArray();
-            var mostHots = await PostService.GetQuery<PostModelBase>(p => ids.Contains(p.Id)).FromCacheAsync().ContinueWith(t =>
+            var mostHots = await PostService.GetQuery<PostModelBase>(p => ids.Contains(p.Id)).Cacheable().ToListAsync().ContinueWith(t =>
             {
                 foreach (var item in t.Result)
                 {
@@ -1024,13 +1025,13 @@ namespace Masuit.MyBlogs.Core.Controllers
                 Id = p.Id,
                 Title = p.Title,
                 ViewCount = p.TotalViewCount
-            }).FromCacheAsync();
+            }).Cacheable().ToListAsync();
             var mostAverage = await postsQuery.OrderByDescending(p => p.AverageViewCount).Take(10).Select(p => new PostModelBase()
             {
                 Id = p.Id,
                 Title = p.Title,
                 ViewCount = (int)p.AverageViewCount
-            }).FromCacheAsync();
+            }).Cacheable().ToListAsync();
             return ResultData(new
             {
                 mostHots,

+ 1 - 1
src/Masuit.MyBlogs.Core/Extensions/DriveHelpers/ServiceCollectionExtension.cs

@@ -8,7 +8,7 @@ namespace Masuit.MyBlogs.Core.Extensions.DriveHelpers
     {
         public static IServiceCollection AddOneDrive(this IServiceCollection services)
         {
-            services.AddDbContext<DriveContext>(ServiceLifetime.Transient);
+            services.AddDbContext<DriveContext>(ServiceLifetime.Scoped);
             //不要被 CG Token获取采用单一实例
             services.AddSingleton(new TokenService());
             services.AddTransient<IDriveAccountService, DriveAccountService>();

+ 1 - 1
src/Masuit.MyBlogs.Core/Infrastructure/Repository/BaseRepository.cs

@@ -507,7 +507,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Repository
         /// <returns>实体</returns>
         public virtual TDto Get<TDto>(Expression<Func<T, bool>> where) where TDto : class
         {
-            return EF.CompileQuery((DataContext ctx) => ctx.Set<T>().Where(where).AsNoTracking().ProjectTo<TDto>(MapperConfig).FirstOrDefault())(DataContext);
+            return DataContext.Set<T>().Where(where).AsNoTracking().ProjectTo<TDto>(MapperConfig).FirstOrDefault();
         }
 
         /// <summary>

+ 0 - 9
src/Masuit.MyBlogs.Core/Infrastructure/Services/PostService.cs

@@ -1,5 +1,4 @@
 using CacheManager.Core;
-using Lucene.Net.Search;
 using Masuit.LuceneEFCore.SearchEngine;
 using Masuit.LuceneEFCore.SearchEngine.Interfaces;
 using Masuit.MyBlogs.Core.Common;
@@ -149,14 +148,6 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Services
                 searchOptions.Score = 0.2f;
             }
 
-            searchOptions.OrderBy = new List<SortField>()
-            {
-                SortField.FIELD_DOC,
-                SortField.FIELD_SCORE
-            };
-            searchOptions.SetBoosts(nameof(Post.Keyword), 2000);
-            searchOptions.SetBoosts(nameof(Post.Content), 2000);
-            searchOptions.SetBoosts(nameof(Post.Title), 1000);
             return searchOptions;
         }
 

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

@@ -2,8 +2,8 @@
 
     <PropertyGroup>
         <TargetFramework>net5.0</TargetFramework>
-        <ServerGarbageCollection>false</ServerGarbageCollection>
-        <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
+        <ServerGarbageCollection>true</ServerGarbageCollection>
+        <ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
         <Authors>懒得勤快</Authors>
         <Product>懒得勤快的博客</Product>
         <Description>masuit.com</Description>
@@ -34,7 +34,7 @@
         <PackageReference Include="CacheManager.StackExchange.Redis" Version="1.2.0" />
         <PackageReference Include="CHTCHSConv" Version="1.0.0" />
         <PackageReference Include="CSRedisCore" Version="3.6.6" />
-        <PackageReference Include="EFCoreSecondLevelCacheInterceptor" Version="2.8.0" />
+        <PackageReference Include="EFCoreSecondLevelCacheInterceptor" Version="2.9.0" />
         <PackageReference Include="Hangfire" Version="1.7.22" />
         <PackageReference Include="Hangfire.Autofac" Version="2.3.1" />
         <PackageReference Include="Hangfire.MemoryStorage" Version="1.7.0" />
@@ -42,12 +42,12 @@
         <PackageReference Include="IP2Region" Version="1.2.0" />
         <PackageReference Include="Karambolo.AspNetCore.Bundling.NUglify" Version="3.4.1" />
         <PackageReference Include="MaxMind.GeoIP2" Version="4.0.1" />
-        <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.5" />
-        <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.5" />
-        <PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="5.0.5" />
-        <PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="5.0.5" />
+        <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.6" />
+        <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.6" />
+        <PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="5.0.6" />
+        <PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="5.0.6" />
         <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="5.0.1" />
-        <PackageReference Include="Microsoft.Graph" Version="3.31.0" />
+        <PackageReference Include="Microsoft.Graph" Version="3.32.0" />
         <PackageReference Include="Microsoft.Graph.Auth" Version="1.0.0-preview.6" />
         <PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.2.22" />
         <PackageReference Include="OpenXmlPowerTools-NetStandard" Version="4.4.21" />
@@ -60,7 +60,7 @@
         <PackageReference Include="TimeZoneConverter" Version="3.5.0" />
         <PackageReference Include="WilderMinds.RssSyndication" Version="1.7.0" />
         <PackageReference Include="WinInsider.System.Net.Http.Formatting" Version="1.0.14" />
-        <PackageReference Include="Z.EntityFramework.Plus.EFCore" Version="5.1.35" />
+        <PackageReference Include="Z.EntityFramework.Plus.EFCore" Version="5.1.36" />
     </ItemGroup>
     <ItemGroup>
         <Content Update="appsettings.json">