From e5734895060fa99ca226d13028ec027f45905abf Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Wed, 27 Nov 2024 14:01:24 +0300 Subject: [PATCH] Fix conflicts --- .../CmsKit/Admin/Pages/PageAdminAppService.cs | 9 +++- .../CmsKit/Pages/CmsKitPublicPagesCache.cs | 6 +++ .../Pages/CmsKitPageRouteValueTransformer.cs | 8 ++-- .../Pages/CmsKitRemotePageStore.cs | 47 +++++++++++++++++++ 4 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/CmsKitPublicPagesCache.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKitRemotePageStore.cs diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs index 2860946490..b8c3e6ed7b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; +using Microsoft.Extensions.Caching.Distributed; using Volo.Abp.Application.Dtos; using Volo.Abp.Caching; using Volo.Abp.Data; @@ -29,16 +30,20 @@ public class PageAdminAppService : CmsKitAdminAppServiceBase, IPageAdminAppServi protected IDistributedCache PageCache { get; } + protected IDistributedCache DistributedCache { get; } + public PageAdminAppService( IPageRepository pageRepository, PageManager pageManager, IDistributedCache pageCache, - ICommentRepository commentRepository) + ICommentRepository commentRepository, + IDistributedCache distributedCache) { PageRepository = pageRepository; PageManager = pageManager; PageCache = pageCache; CommentRepository = commentRepository; + DistributedCache = distributedCache; } public virtual async Task GetAsync(Guid id) @@ -128,5 +133,7 @@ public class PageAdminAppService : CmsKitAdminAppServiceBase, IPageAdminAppServi protected virtual async Task InvalidateDefaultHomePageCacheAsync(bool considerUow = false) { await PageCache.RemoveAsync(PageCacheItem.GetKey(PageConsts.DefaultHomePageCacheKey), considerUow: considerUow); + + await DistributedCache.RemoveAsync(CmsKitPublicPagesCache.CacheKey); } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/CmsKitPublicPagesCache.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/CmsKitPublicPagesCache.cs new file mode 100644 index 0000000000..a54cf7bb85 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Pages/CmsKitPublicPagesCache.cs @@ -0,0 +1,6 @@ +namespace Volo.CmsKit.Pages; + +public static class CmsKitPublicPagesCache +{ + public const string CacheKey = "CmsKitPagesList"; +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKitPageRouteValueTransformer.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKitPageRouteValueTransformer.cs index d9bba6cd0b..77e19641d8 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKitPageRouteValueTransformer.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKitPageRouteValueTransformer.cs @@ -12,12 +12,12 @@ namespace Volo.CmsKit.Public.Web.Pages; public class CmsKitPageRouteValueTransformer : DynamicRouteValueTransformer, ITransientDependency { protected IFeatureChecker FeatureChecker { get; } - protected IPagePublicAppService PagePublicAppService { get; } + protected CmsKitRemotePageStore RemotePageStore { get; } - public CmsKitPageRouteValueTransformer(IFeatureChecker featureChecker, IPagePublicAppService pagePublicAppService) + public CmsKitPageRouteValueTransformer(IFeatureChecker featureChecker, CmsKitRemotePageStore remotePageStore) { FeatureChecker = featureChecker; - PagePublicAppService = pagePublicAppService; + RemotePageStore = remotePageStore; } public override async ValueTask TransformAsync(HttpContext httpContext, RouteValueDictionary values) @@ -30,7 +30,7 @@ public class CmsKitPageRouteValueTransformer : DynamicRouteValueTransformer, ITr } var slug = slugParameter.ToString().TrimStart('/'); - var exist = await PagePublicAppService.DoesSlugExistAsync(slug); + var exist = await RemotePageStore.DoesSlugExistAsync(slug); if (exist) { diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKitRemotePageStore.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKitRemotePageStore.cs new file mode 100644 index 0000000000..0feff6a723 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKitRemotePageStore.cs @@ -0,0 +1,47 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Caching; +using Volo.Abp.DependencyInjection; +using Volo.CmsKit.Pages; +using Volo.CmsKit.Public.Pages; + +namespace Volo.CmsKit.Public.Web.Pages; + +public class CmsKitRemotePageStore : ITransientDependency +{ + protected IDistributedCache Cache { get; } + + protected IPagePublicAppService PagePublicAppService { get; } + + public CmsKitRemotePageStore( + IDistributedCache cache, + IPagePublicAppService pagePublicAppService) + { + Cache = cache; + PagePublicAppService = pagePublicAppService; + } + + public virtual async Task DoesSlugExistAsync(string slug) + { + var cacheItem = await Cache.GetAsync(CmsKitPublicPagesCache.CacheKey); + + if (cacheItem == null) + { + cacheItem = new CmsKitPageSlugCacheItem(); + cacheItem.Items[slug] = await PagePublicAppService.DoesSlugExistAsync(slug); + await Cache.SetAsync(CmsKitPublicPagesCache.CacheKey, cacheItem); + } + + if (cacheItem.Items.TryGetValue(slug, out var exist)) + { + return exist; + } + + return false; + } +} + +public class CmsKitPageSlugCacheItem +{ + public Dictionary Items { get; set; } = new(); +} \ No newline at end of file