From df8a39e428af0eb05636a70c7a6a6d56f8ebe1f3 Mon Sep 17 00:00:00 2001 From: cKey <35512826+colinin@users.noreply.github.com> Date: Sun, 11 Oct 2020 21:15:01 +0800 Subject: [PATCH] remaed LINGYUN.Abp.Features.Validation --- aspnet-core/LINGYUN.MicroService.sln | 10 ++--- ...Abp.Features.LimitValidation.Redis.csproj} | 6 +-- .../Redis/AbpFeaturesValidationRedisModule.cs | 4 +- .../AbpRedisRequiresLimitFeatureOptions.cs | 2 +- .../LimitValidation}/Redis/Lua/check.lua | 0 .../LimitValidation}/Redis/Lua/process.lua | 0 .../Redis/RedisRequiresLimitFeatureChecker.cs | 14 +++--- .../System/BytesExtensions.cs | 0 .../System/StringExtensions.cs | 0 ...INGYUN.Abp.Features.LimitValidation.csproj | 24 +++++++++++ .../AbpFeatureLimitException.cs | 33 ++++++++++++++ .../AbpFeaturesLimitValidationModule.cs | 35 +++++++++++++++ .../AbpFeaturesLimitValidationOptions.cs} | 6 +-- .../FeaturesLimitValidationInterceptor.cs} | 16 ++++--- ...resLimitValidationInterceptorRegistrar.cs} | 6 +-- .../IRequiresLimitFeatureChecker.cs | 4 +- .../Features/LimitValidation}/LimitPolicy.cs | 2 +- .../FeaturesLimitValidationResource.cs | 9 ++++ .../Localization/Resources/en.json | 6 +++ .../Localization/Resources/zh-Hans.json | 6 +++ .../NullRequiresLimitFeatureChecker.cs | 6 +-- .../RequiresLimitFeatureAttribute.cs | 2 +- .../RequiresLimitFeatureContext.cs | 8 ++-- .../README.en.md | 43 +++++++++++++++++++ .../README.md | 43 +++++++++++++++++++ .../LINGYUN.Abp.Features.Validation.csproj | 14 ------ .../Validation/AbpFeaturesValidationModule.cs | 20 --------- .../README.md | 14 ++++++ .../LINGYUN.Abp.Features.Client/README.md | 14 ++++++ ...atures.LimitValidation.Redis.Tests.csproj} | 4 +- ...AbpFeaturesLimitValidationRedisTestBase.cs | 9 ++++ ...FeaturesLimitValidationRedisTestModule.cs} | 6 +-- .../RedisRequiresLimitFeatureCheckerTests.cs | 21 +++++---- ...Abp.Features.LimitValidation.Tests.csproj} | 2 +- .../AbpFeaturesLimitValidationTestBase.cs | 8 ++++ .../AbpFeaturesLimitValidationTestModule.cs} | 6 +-- .../FakeRequiresFeatureLimitChecker.cs | 15 +++---- .../FeaturesLimitValidationTests.cs} | 12 +++--- .../TestFeatureDefinitionProvider.cs | 2 +- .../LimitValidation}/TestFeatureNames.cs | 2 +- .../LimitValidation}/TestFeatureTenant.cs | 2 +- .../TestValidationFeatureClass.cs | 2 +- .../AbpFeaturesValidationRedisTestBase.cs | 9 ---- .../AbpFeaturesValidationTestBase.cs | 8 ---- 44 files changed, 321 insertions(+), 134 deletions(-) rename aspnet-core/modules/common/{LINGYUN.Abp.Features.Validation.Redis/LINGYUN.Abp.Features.Validation.Redis.csproj => LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN.Abp.Features.LimitValidation.Redis.csproj} (67%) rename aspnet-core/modules/common/{LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation => LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation}/Redis/AbpFeaturesValidationRedisModule.cs (89%) rename aspnet-core/modules/common/{LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation => LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation}/Redis/AbpRedisRequiresLimitFeatureOptions.cs (90%) rename aspnet-core/modules/common/{LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation => LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation}/Redis/Lua/check.lua (100%) rename aspnet-core/modules/common/{LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation => LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation}/Redis/Lua/process.lua (100%) rename aspnet-core/modules/common/{LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation => LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation}/Redis/RedisRequiresLimitFeatureChecker.cs (93%) rename aspnet-core/modules/common/{LINGYUN.Abp.Features.Validation.Redis => LINGYUN.Abp.Features.LimitValidation.Redis}/System/BytesExtensions.cs (100%) rename aspnet-core/modules/common/{LINGYUN.Abp.Features.Validation.Redis => LINGYUN.Abp.Features.LimitValidation.Redis}/System/StringExtensions.cs (100%) create mode 100644 aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN.Abp.Features.LimitValidation.csproj create mode 100644 aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/AbpFeatureLimitException.cs create mode 100644 aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationModule.cs rename aspnet-core/modules/common/{LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/AbpFeaturesValidationOptions.cs => LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationOptions.cs} (92%) rename aspnet-core/modules/common/{LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/FeaturesValidationInterceptor.cs => LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/FeaturesLimitValidationInterceptor.cs} (87%) rename aspnet-core/modules/common/{LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/FeaturesValidationInterceptorRegistrar.cs => LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/FeaturesLimitValidationInterceptorRegistrar.cs} (85%) rename aspnet-core/modules/common/{LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation => LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation}/IRequiresLimitFeatureChecker.cs (59%) rename aspnet-core/modules/common/{LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation => LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation}/LimitPolicy.cs (92%) create mode 100644 aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/Localization/FeaturesLimitValidationResource.cs create mode 100644 aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/Localization/Resources/en.json create mode 100644 aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/Localization/Resources/zh-Hans.json rename aspnet-core/modules/common/{LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation => LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation}/NullRequiresLimitFeatureChecker.cs (66%) rename aspnet-core/modules/common/{LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation => LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation}/RequiresLimitFeatureAttribute.cs (97%) rename aspnet-core/modules/common/{LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation => LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation}/RequiresLimitFeatureContext.cs (84%) create mode 100644 aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.en.md create mode 100644 aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.md delete mode 100644 aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN.Abp.Features.Validation.csproj delete mode 100644 aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/AbpFeaturesValidationModule.cs create mode 100644 aspnet-core/modules/features/LINGYUN.Abp.FeatureManagement.Client/README.md create mode 100644 aspnet-core/modules/features/LINGYUN.Abp.Features.Client/README.md rename aspnet-core/tests/{LINGYUN.Abp.Features.Validation.Redis.Tests/LINGYUN.Abp.Features.Validation.Redis.Tests.csproj => LINGYUN.Abp.Features.LimitValidation.Redis.Tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests.csproj} (75%) create mode 100644 aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests/LINGYUN/Abp/Features/LimitValidation/Redis/AbpFeaturesLimitValidationRedisTestBase.cs rename aspnet-core/tests/{LINGYUN.Abp.Features.Validation.Redis.Tests/LINGYUN/Abp/Features/Validation/Redis/AbpFeaturesValidationRedisTestModule.cs => LINGYUN.Abp.Features.LimitValidation.Redis.Tests/LINGYUN/Abp/Features/LimitValidation/Redis/AbpFeaturesLimitValidationRedisTestModule.cs} (80%) rename aspnet-core/tests/{LINGYUN.Abp.Features.Validation.Redis.Tests/LINGYUN/Abp/Features/Validation => LINGYUN.Abp.Features.LimitValidation.Redis.Tests/LINGYUN/Abp/Features/LimitValidation}/Redis/RedisRequiresLimitFeatureCheckerTests.cs (77%) rename aspnet-core/tests/{LINGYUN.Abp.Features.Validation.Tests/LINGYUN.Abp.Features.Validation.Tests.csproj => LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN.Abp.Features.LimitValidation.Tests.csproj} (90%) create mode 100644 aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationTestBase.cs rename aspnet-core/tests/{LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/AbpFeaturesValidationTestModule.cs => LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationTestModule.cs} (79%) rename aspnet-core/tests/{LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation => LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation}/FakeRequiresFeatureLimitChecker.cs (77%) rename aspnet-core/tests/{LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/FeaturesValidationTests.cs => LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/FeaturesLimitValidationTests.cs} (82%) rename aspnet-core/tests/{LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation => LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation}/TestFeatureDefinitionProvider.cs (94%) rename aspnet-core/tests/{LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation => LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation}/TestFeatureNames.cs (85%) rename aspnet-core/tests/{LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation => LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation}/TestFeatureTenant.cs (72%) rename aspnet-core/tests/{LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation => LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation}/TestValidationFeatureClass.cs (91%) delete mode 100644 aspnet-core/tests/LINGYUN.Abp.Features.Validation.Redis.Tests/LINGYUN/Abp/Features/Validation/Redis/AbpFeaturesValidationRedisTestBase.cs delete mode 100644 aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/AbpFeaturesValidationTestBase.cs diff --git a/aspnet-core/LINGYUN.MicroService.sln b/aspnet-core/LINGYUN.MicroService.sln index 09a69f980..6f27faf2b 100644 --- a/aspnet-core/LINGYUN.MicroService.sln +++ b/aspnet-core/LINGYUN.MicroService.sln @@ -217,13 +217,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IdentityServer4 EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Settings", "modules\common\LINGYUN.Abp.Settings\LINGYUN.Abp.Settings.csproj", "{6AA0785D-9B6C-4EAE-AB83-0C4CF2B6B473}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.Validation", "modules\common\LINGYUN.Abp.Features.Validation\LINGYUN.Abp.Features.Validation.csproj", "{65DE28D5-DFEA-43E5-B820-BAF09A1FC4ED}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.LimitValidation", "modules\common\LINGYUN.Abp.Features.LimitValidation\LINGYUN.Abp.Features.LimitValidation.csproj", "{65DE28D5-DFEA-43E5-B820-BAF09A1FC4ED}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.Validation.Redis", "modules\common\LINGYUN.Abp.Features.Validation.Redis\LINGYUN.Abp.Features.Validation.Redis.csproj", "{D3E65610-4167-4235-9C9D-1E1FAD4C0CE6}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.LimitValidation.Redis", "modules\common\LINGYUN.Abp.Features.LimitValidation.Redis\LINGYUN.Abp.Features.LimitValidation.Redis.csproj", "{D3E65610-4167-4235-9C9D-1E1FAD4C0CE6}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.Validation.Redis.Tests", "tests\LINGYUN.Abp.Features.Validation.Redis.Tests\LINGYUN.Abp.Features.Validation.Redis.Tests.csproj", "{F12F4645-C0FE-4129-8C71-65B4039DC445}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.LimitValidation.Redis.Tests", "tests\LINGYUN.Abp.Features.LimitValidation.Redis.Tests\LINGYUN.Abp.Features.LimitValidation.Redis.Tests.csproj", "{F12F4645-C0FE-4129-8C71-65B4039DC445}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.Validation.Tests", "tests\LINGYUN.Abp.Features.Validation.Tests\LINGYUN.Abp.Features.Validation.Tests.csproj", "{C457FA70-8732-44B8-A018-C96D14025D4B}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.LimitValidation.Tests", "tests\LINGYUN.Abp.Features.LimitValidation.Tests\LINGYUN.Abp.Features.LimitValidation.Tests.csproj", "{C457FA70-8732-44B8-A018-C96D14025D4B}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "features", "features", "{08BD73E6-72CE-4A8A-896D-2DFFF4D7D2F8}" EndProject @@ -247,7 +247,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "permission-management", "pe EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.PermissionManagement.Domain", "modules\permissions-management\LINGYUN.Abp.PermissionManagement.Domain\LINGYUN.Abp.PermissionManagement.Domain.csproj", "{B46D6DAF-98C6-441F-9FA5-3CAD7CF27727}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.PermissionManagement.Domain.Identity", "modules\identity\LINGYUN.Abp.PermissionManagement.Domain.Identity\LINGYUN.Abp.PermissionManagement.Domain.Identity.csproj", "{2D377D3A-70EC-4BB3-9F4C-6C933693DA98}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.PermissionManagement.Domain.Identity", "modules\identity\LINGYUN.Abp.PermissionManagement.Domain.Identity\LINGYUN.Abp.PermissionManagement.Domain.Identity.csproj", "{2D377D3A-70EC-4BB3-9F4C-6C933693DA98}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/LINGYUN.Abp.Features.Validation.Redis.csproj b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN.Abp.Features.LimitValidation.Redis.csproj similarity index 67% rename from aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/LINGYUN.Abp.Features.Validation.Redis.csproj rename to aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN.Abp.Features.LimitValidation.Redis.csproj index 1c4ca9246..faff2f7ab 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/LINGYUN.Abp.Features.Validation.Redis.csproj +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN.Abp.Features.LimitValidation.Redis.csproj @@ -15,12 +15,12 @@ - - + + - + diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation/Redis/AbpFeaturesValidationRedisModule.cs b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation/Redis/AbpFeaturesValidationRedisModule.cs similarity index 89% rename from aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation/Redis/AbpFeaturesValidationRedisModule.cs rename to aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation/Redis/AbpFeaturesValidationRedisModule.cs index 0168165aa..c328bb60e 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation/Redis/AbpFeaturesValidationRedisModule.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation/Redis/AbpFeaturesValidationRedisModule.cs @@ -3,10 +3,10 @@ using Microsoft.Extensions.DependencyInjection.Extensions; using Volo.Abp.Modularity; using Volo.Abp.VirtualFileSystem; -namespace LINGYUN.Abp.Features.Validation.Redis +namespace LINGYUN.Abp.Features.LimitValidation.Redis { [DependsOn( - typeof(AbpFeaturesValidationModule))] + typeof(AbpFeaturesLimitValidationModule))] public class AbpFeaturesValidationRedisModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation/Redis/AbpRedisRequiresLimitFeatureOptions.cs b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation/Redis/AbpRedisRequiresLimitFeatureOptions.cs similarity index 90% rename from aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation/Redis/AbpRedisRequiresLimitFeatureOptions.cs rename to aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation/Redis/AbpRedisRequiresLimitFeatureOptions.cs index af8fb5248..cd11120d2 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation/Redis/AbpRedisRequiresLimitFeatureOptions.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation/Redis/AbpRedisRequiresLimitFeatureOptions.cs @@ -1,7 +1,7 @@ using Microsoft.Extensions.Options; using StackExchange.Redis; -namespace LINGYUN.Abp.Features.Validation.Redis +namespace LINGYUN.Abp.Features.LimitValidation.Redis { public class AbpRedisRequiresLimitFeatureOptions : IOptions { diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation/Redis/Lua/check.lua b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation/Redis/Lua/check.lua similarity index 100% rename from aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation/Redis/Lua/check.lua rename to aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation/Redis/Lua/check.lua diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation/Redis/Lua/process.lua b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation/Redis/Lua/process.lua similarity index 100% rename from aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation/Redis/Lua/process.lua rename to aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation/Redis/Lua/process.lua diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation/Redis/RedisRequiresLimitFeatureChecker.cs b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation/Redis/RedisRequiresLimitFeatureChecker.cs similarity index 93% rename from aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation/Redis/RedisRequiresLimitFeatureChecker.cs rename to aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation/Redis/RedisRequiresLimitFeatureChecker.cs index 690df549f..c64feefb9 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/LINGYUN/Abp/Features/Validation/Redis/RedisRequiresLimitFeatureChecker.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation/Redis/RedisRequiresLimitFeatureChecker.cs @@ -8,18 +8,17 @@ using System.Text; using System.Threading; using System.Threading.Tasks; using Volo.Abp; -using Volo.Abp.Authorization; using Volo.Abp.DependencyInjection; using Volo.Abp.MultiTenancy; using Volo.Abp.VirtualFileSystem; -namespace LINGYUN.Abp.Features.Validation.Redis +namespace LINGYUN.Abp.Features.LimitValidation.Redis { [DisableConventionalRegistration] public class RedisRequiresLimitFeatureChecker : IRequiresLimitFeatureChecker { - private const string CHECK_LUA_SCRIPT = "/LINGYUN/Abp/Features/Validation/Redis/Lua/check.lua"; - private const string PROCESS_LUA_SCRIPT = "/LINGYUN/Abp/Features/Validation/Redis/Lua/process.lua"; + private const string CHECK_LUA_SCRIPT = "/LINGYUN/Abp/Features/LimitValidation/Redis/Lua/check.lua"; + private const string PROCESS_LUA_SCRIPT = "/LINGYUN/Abp/Features/LimitValidation/Redis/Lua/process.lua"; public ILogger Logger { protected get; set; } @@ -54,15 +53,12 @@ namespace LINGYUN.Abp.Features.Validation.Redis Logger = NullLogger.Instance; } - public virtual async Task CheckAsync(RequiresLimitFeatureContext context, CancellationToken cancellation = default) + public virtual async Task CheckAsync(RequiresLimitFeatureContext context, CancellationToken cancellation = default) { await ConnectAsync(cancellation); var result = await EvaluateAsync(CHECK_LUA_SCRIPT, context, cancellation); - if (result + 1 > context.Limit) - { - throw new AbpAuthorizationException("已经超出功能次数限制,请联系管理员"); - } + return result + 1 <= context.Limit; } public virtual async Task ProcessAsync(RequiresLimitFeatureContext context, CancellationToken cancellation = default) diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/System/BytesExtensions.cs b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/System/BytesExtensions.cs similarity index 100% rename from aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/System/BytesExtensions.cs rename to aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/System/BytesExtensions.cs diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/System/StringExtensions.cs b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/System/StringExtensions.cs similarity index 100% rename from aspnet-core/modules/common/LINGYUN.Abp.Features.Validation.Redis/System/StringExtensions.cs rename to aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/System/StringExtensions.cs diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN.Abp.Features.LimitValidation.csproj b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN.Abp.Features.LimitValidation.csproj new file mode 100644 index 000000000..f7ad8f2ee --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN.Abp.Features.LimitValidation.csproj @@ -0,0 +1,24 @@ + + + + + + netstandard2.0 + + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/AbpFeatureLimitException.cs b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/AbpFeatureLimitException.cs new file mode 100644 index 000000000..6e13b5006 --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/AbpFeatureLimitException.cs @@ -0,0 +1,33 @@ +using LINGYUN.Abp.Features.LimitValidation.Localization; +using Microsoft.Extensions.Localization; +using Volo.Abp; +using Volo.Abp.ExceptionHandling; +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.Features.LimitValidation +{ + public class AbpFeatureLimitException : AbpException, ILocalizeErrorMessage, IBusinessException + { + /// + /// 功能名称名称 + /// + public string Feature { get; } + /// + /// 上限 + /// + public int Limit { get; } + + public AbpFeatureLimitException(string feature, int limit) + : base($"Features {feature} has exceeded the maximum number of calls {limit}, please apply for the appropriate permission") + { + Feature = feature; + Limit = limit; + } + public string LocalizeMessage(LocalizationContext context) + { + var localizer = context.LocalizerFactory.Create(); + + return localizer["FeaturesLimitException", Limit]; + } + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationModule.cs b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationModule.cs new file mode 100644 index 000000000..73651a62b --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationModule.cs @@ -0,0 +1,35 @@ +using LINGYUN.Abp.Features.LimitValidation.Localization; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Features; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; + +namespace LINGYUN.Abp.Features.LimitValidation +{ + [DependsOn(typeof(AbpFeaturesModule))] + public class AbpFeaturesLimitValidationModule : AbpModule + { + public override void PreConfigureServices(ServiceConfigurationContext context) + { + context.Services.OnRegistred(FeaturesLimitValidationInterceptorRegistrar.RegisterIfNeeded); + + Configure(options => + { + options.MapDefaultEffectPolicys(); + }); + + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + Configure(options => + { + options.Resources + .Add("en") + .AddVirtualJson("/LINGYUN/Abp/Features/LimitValidation/Localization/Resources"); + }); + } + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/AbpFeaturesValidationOptions.cs b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationOptions.cs similarity index 92% rename from aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/AbpFeaturesValidationOptions.cs rename to aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationOptions.cs index f26d98f0c..153841767 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/AbpFeaturesValidationOptions.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationOptions.cs @@ -3,12 +3,12 @@ using System; using System.Collections.Generic; using Volo.Abp; -namespace LINGYUN.Abp.Features.Validation +namespace LINGYUN.Abp.Features.LimitValidation { - public class AbpFeaturesValidationOptions + public class AbpFeaturesLimitValidationOptions { public IDictionary> EffectPolicys { get; } - public AbpFeaturesValidationOptions() + public AbpFeaturesLimitValidationOptions() { EffectPolicys = new Dictionary>(); } diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/FeaturesValidationInterceptor.cs b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/FeaturesLimitValidationInterceptor.cs similarity index 87% rename from aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/FeaturesValidationInterceptor.cs rename to aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/FeaturesLimitValidationInterceptor.cs index 5093d4bff..8fda52f0e 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/FeaturesValidationInterceptor.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/FeaturesLimitValidationInterceptor.cs @@ -7,20 +7,20 @@ using Volo.Abp.DynamicProxy; using Volo.Abp.Features; using Volo.Abp.Validation.StringValues; -namespace LINGYUN.Abp.Features.Validation +namespace LINGYUN.Abp.Features.LimitValidation { - public class FeaturesValidationInterceptor : AbpInterceptor, ITransientDependency + public class FeaturesLimitValidationInterceptor : AbpInterceptor, ITransientDependency { private readonly IFeatureChecker _featureChecker; - private readonly AbpFeaturesValidationOptions _options; + private readonly AbpFeaturesLimitValidationOptions _options; private readonly IRequiresLimitFeatureChecker _limitFeatureChecker; private readonly IFeatureDefinitionManager _featureDefinitionManager; - public FeaturesValidationInterceptor( + public FeaturesLimitValidationInterceptor( IFeatureChecker featureChecker, IRequiresLimitFeatureChecker limitFeatureChecker, IFeatureDefinitionManager featureDefinitionManager, - IOptions options) + IOptions options) { _options = options.Value; _featureChecker = featureChecker; @@ -62,7 +62,11 @@ namespace LINGYUN.Abp.Features.Validation protected virtual async Task PreCheckFeatureAsync(RequiresLimitFeatureContext context) { - await _limitFeatureChecker.CheckAsync(context); + var allowed = await _limitFeatureChecker.CheckAsync(context); + if (!allowed) + { + throw new AbpFeatureLimitException(context.LimitFeature, context.Limit); + } } protected virtual async Task PostCheckFeatureAsync(RequiresLimitFeatureContext context) diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/FeaturesValidationInterceptorRegistrar.cs b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/FeaturesLimitValidationInterceptorRegistrar.cs similarity index 85% rename from aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/FeaturesValidationInterceptorRegistrar.cs rename to aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/FeaturesLimitValidationInterceptorRegistrar.cs index 40f7fa486..baf7ad4c2 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/FeaturesValidationInterceptorRegistrar.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/FeaturesLimitValidationInterceptorRegistrar.cs @@ -4,15 +4,15 @@ using System.Reflection; using Volo.Abp.DependencyInjection; using Volo.Abp.DynamicProxy; -namespace LINGYUN.Abp.Features.Validation +namespace LINGYUN.Abp.Features.LimitValidation { - public static class FeaturesValidationInterceptorRegistrar + public static class FeaturesLimitValidationInterceptorRegistrar { public static void RegisterIfNeeded(IOnServiceRegistredContext context) { if (ShouldIntercept(context.ImplementationType)) { - context.Interceptors.TryAdd(); + context.Interceptors.TryAdd(); } } diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/IRequiresLimitFeatureChecker.cs b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/IRequiresLimitFeatureChecker.cs similarity index 59% rename from aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/IRequiresLimitFeatureChecker.cs rename to aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/IRequiresLimitFeatureChecker.cs index cc73875d5..73c2349aa 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/IRequiresLimitFeatureChecker.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/IRequiresLimitFeatureChecker.cs @@ -1,11 +1,11 @@ using System.Threading; using System.Threading.Tasks; -namespace LINGYUN.Abp.Features.Validation +namespace LINGYUN.Abp.Features.LimitValidation { public interface IRequiresLimitFeatureChecker { - Task CheckAsync(RequiresLimitFeatureContext context, CancellationToken cancellation = default); + Task CheckAsync(RequiresLimitFeatureContext context, CancellationToken cancellation = default); Task ProcessAsync(RequiresLimitFeatureContext context, CancellationToken cancellation = default); } diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/LimitPolicy.cs b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/LimitPolicy.cs similarity index 92% rename from aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/LimitPolicy.cs rename to aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/LimitPolicy.cs index 587e13675..1983239ce 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/LimitPolicy.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/LimitPolicy.cs @@ -1,4 +1,4 @@ -namespace LINGYUN.Abp.Features.Validation +namespace LINGYUN.Abp.Features.LimitValidation { public enum LimitPolicy : byte { diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/Localization/FeaturesLimitValidationResource.cs b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/Localization/FeaturesLimitValidationResource.cs new file mode 100644 index 000000000..6773048d3 --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/Localization/FeaturesLimitValidationResource.cs @@ -0,0 +1,9 @@ +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.Features.LimitValidation.Localization +{ + [LocalizationResourceName("AbpFeaturesLimitValidation")] + public class FeaturesLimitValidationResource + { + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/Localization/Resources/en.json b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/Localization/Resources/en.json new file mode 100644 index 000000000..46799f19f --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/Localization/Resources/en.json @@ -0,0 +1,6 @@ +{ + "culture": "en", + "texts": { + "FeaturesLimitException": "Service has exceeded the maximum number of calls {0}. Please apply for the appropriate permissions" + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/Localization/Resources/zh-Hans.json b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/Localization/Resources/zh-Hans.json new file mode 100644 index 000000000..cb948209e --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/Localization/Resources/zh-Hans.json @@ -0,0 +1,6 @@ +{ + "culture": "zh-Hans", + "texts": { + "FeaturesLimitException": "服务已超过最大调用次数 {0},请申请适当的权限" + } +} diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/NullRequiresLimitFeatureChecker.cs b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/NullRequiresLimitFeatureChecker.cs similarity index 66% rename from aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/NullRequiresLimitFeatureChecker.cs rename to aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/NullRequiresLimitFeatureChecker.cs index e6bed432c..0c94ec787 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/NullRequiresLimitFeatureChecker.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/NullRequiresLimitFeatureChecker.cs @@ -2,13 +2,13 @@ using System.Threading.Tasks; using Volo.Abp.DependencyInjection; -namespace LINGYUN.Abp.Features.Validation +namespace LINGYUN.Abp.Features.LimitValidation { public class NullRequiresLimitFeatureChecker : IRequiresLimitFeatureChecker, ISingletonDependency { - public Task CheckAsync(RequiresLimitFeatureContext context, CancellationToken cancellation = default) + public Task CheckAsync(RequiresLimitFeatureContext context, CancellationToken cancellation = default) { - return Task.CompletedTask; + return Task.FromResult(true); } public Task ProcessAsync(RequiresLimitFeatureContext context, CancellationToken cancellation = default) diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/RequiresLimitFeatureAttribute.cs b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/RequiresLimitFeatureAttribute.cs similarity index 97% rename from aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/RequiresLimitFeatureAttribute.cs rename to aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/RequiresLimitFeatureAttribute.cs index 23e39ec48..8ed810a22 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/RequiresLimitFeatureAttribute.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/RequiresLimitFeatureAttribute.cs @@ -2,7 +2,7 @@ using System; using Volo.Abp; -namespace LINGYUN.Abp.Features.Validation +namespace LINGYUN.Abp.Features.LimitValidation { /// /// 单个功能的调用量限制 diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/RequiresLimitFeatureContext.cs b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/RequiresLimitFeatureContext.cs similarity index 84% rename from aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/RequiresLimitFeatureContext.cs rename to aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/RequiresLimitFeatureContext.cs index 7e15f1e4f..ab8a8f8e7 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/RequiresLimitFeatureContext.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/RequiresLimitFeatureContext.cs @@ -1,4 +1,4 @@ -namespace LINGYUN.Abp.Features.Validation +namespace LINGYUN.Abp.Features.LimitValidation { public class RequiresLimitFeatureContext { @@ -11,7 +11,7 @@ /// public int Interval { get; } /// - /// 功能限制时长 + /// 功能限制次数 /// public int Limit { get; } /// @@ -19,10 +19,10 @@ /// public string LimitFeature { get; } - public AbpFeaturesValidationOptions Options { get; } + public AbpFeaturesLimitValidationOptions Options { get; } public RequiresLimitFeatureContext( string limitFeature, - AbpFeaturesValidationOptions options, + AbpFeaturesLimitValidationOptions options, LimitPolicy policy = LimitPolicy.Month, int interval = 1, int limit = 1) diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.en.md b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.en.md new file mode 100644 index 000000000..4e1aa34cf --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.en.md @@ -0,0 +1,43 @@ +English | [简体中文](./README.md) + +# LINGYUN.Abp.Features.LimitValidation + +Features limit validation component + +Check the number of function calls defined to limit calls to the application by specific entities (tenants, users, clients, and so on) + +Predefined policy + +LimitPolicy.Minute Calculate the flow by the minutes +LimitPolicy.Hours Calculate the flow by the hours +LimitPolicy.Days Calculate the flow by days +LimitPolicy.Weeks Calculate the flow by weeks +LimitPolicy.Month Calculate the flow by the number of month +LimitPolicy.Years Calculate the flow by the number of years + +## How to use + + +```csharp +[DependsOn(typeof(AbpFeaturesLimitValidationModule))] +public class YouProjectModule : AbpModule +{ + // other +} +``` + +If you want to limit the policy duration by self-processing, override the default policy for the corresponding policy and always return a clock scale in seconds + +```csharp +[DependsOn(typeof(AbpFeaturesLimitValidationModule))] +public class YouProjectModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.MapEffectPolicy(LimitPolicy.Minute, (time) => return 60;); // Means that no matter how many minutes (time), only 60 seconds will be limited + }); + } +} +``` diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.md b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.md new file mode 100644 index 000000000..b52c3a723 --- /dev/null +++ b/aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.md @@ -0,0 +1,43 @@ +[English](./README.en.md) | 简体中文 + +# LINGYUN.Abp.Features.LimitValidation + +功能上限验证组件 + +检查定义的功能调用次数,来限制特定的实体(租户、用户、客户端等)对于应用程序的调用 + +预先设定了如下几个策略 + +LimitPolicy.Minute 按分钟计算流量 +LimitPolicy.Hours 按小时计算流量 +LimitPolicy.Days 按天数计算流量 +LimitPolicy.Weeks 按周数计算流量 +LimitPolicy.Month 按月数计算流量 +LimitPolicy.Years 按年数计算流量 + +## 配置使用 + + +```csharp +[DependsOn(typeof(AbpFeaturesLimitValidationModule))] +public class YouProjectModule : AbpModule +{ + // other +} +``` + +如果需要自行处理功能限制策略时长,请覆盖对应策略的默认策略,返回的时钟刻度单位始终是秒 + +```csharp +[DependsOn(typeof(AbpFeaturesLimitValidationModule))] +public class YouProjectModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.MapEffectPolicy(LimitPolicy.Minute, (time) => return 60;); // 表示不管多少分钟(time),都只会限制60秒 + }); + } +} +``` diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN.Abp.Features.Validation.csproj b/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN.Abp.Features.Validation.csproj deleted file mode 100644 index 17100e0ef..000000000 --- a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN.Abp.Features.Validation.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - netstandard2.0 - - - - - - - - diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/AbpFeaturesValidationModule.cs b/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/AbpFeaturesValidationModule.cs deleted file mode 100644 index 7fb56873b..000000000 --- a/aspnet-core/modules/common/LINGYUN.Abp.Features.Validation/LINGYUN/Abp/Features/Validation/AbpFeaturesValidationModule.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Microsoft.Extensions.DependencyInjection; -using Volo.Abp.Features; -using Volo.Abp.Modularity; - -namespace LINGYUN.Abp.Features.Validation -{ - [DependsOn(typeof(AbpFeaturesModule))] - public class AbpFeaturesValidationModule : AbpModule - { - public override void PreConfigureServices(ServiceConfigurationContext context) - { - context.Services.OnRegistred(FeaturesValidationInterceptorRegistrar.RegisterIfNeeded); - - Configure(options => - { - options.MapDefaultEffectPolicys(); - }); - } - } -} diff --git a/aspnet-core/modules/features/LINGYUN.Abp.FeatureManagement.Client/README.md b/aspnet-core/modules/features/LINGYUN.Abp.FeatureManagement.Client/README.md new file mode 100644 index 000000000..46b62020b --- /dev/null +++ b/aspnet-core/modules/features/LINGYUN.Abp.FeatureManagement.Client/README.md @@ -0,0 +1,14 @@ +# LINGYUN.Abp.FeatureManagement.Client + +针对客户端的功能验证管理授权 + +## 配置使用 + + +```csharp +[DependsOn(typeof(AbpFeatureManagementClientModule))] +public class YouProjectModule : AbpModule +{ + // other +} +``` diff --git a/aspnet-core/modules/features/LINGYUN.Abp.Features.Client/README.md b/aspnet-core/modules/features/LINGYUN.Abp.Features.Client/README.md new file mode 100644 index 000000000..88ae06140 --- /dev/null +++ b/aspnet-core/modules/features/LINGYUN.Abp.Features.Client/README.md @@ -0,0 +1,14 @@ +# LINGYUN.Abp.Features.Client + +针对客户端的功能验证 + +## 配置使用 + + +```csharp +[DependsOn(typeof(AbpFeaturesClientModule))] +public class YouProjectModule : AbpModule +{ + // other +} +``` diff --git a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Redis.Tests/LINGYUN.Abp.Features.Validation.Redis.Tests.csproj b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests.csproj similarity index 75% rename from aspnet-core/tests/LINGYUN.Abp.Features.Validation.Redis.Tests/LINGYUN.Abp.Features.Validation.Redis.Tests.csproj rename to aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests.csproj index ae4b84013..46deef7a3 100644 --- a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Redis.Tests/LINGYUN.Abp.Features.Validation.Redis.Tests.csproj +++ b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests.csproj @@ -15,8 +15,8 @@ - - + + diff --git a/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests/LINGYUN/Abp/Features/LimitValidation/Redis/AbpFeaturesLimitValidationRedisTestBase.cs b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests/LINGYUN/Abp/Features/LimitValidation/Redis/AbpFeaturesLimitValidationRedisTestBase.cs new file mode 100644 index 000000000..a198c37cf --- /dev/null +++ b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests/LINGYUN/Abp/Features/LimitValidation/Redis/AbpFeaturesLimitValidationRedisTestBase.cs @@ -0,0 +1,9 @@ +using LINGYUN.Abp.Tests; + +namespace LINGYUN.Abp.Features.LimitValidation.Redis +{ + public class AbpFeaturesLimitValidationRedisTestBase : AbpTestsBase + { + + } +} diff --git a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Redis.Tests/LINGYUN/Abp/Features/Validation/Redis/AbpFeaturesValidationRedisTestModule.cs b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests/LINGYUN/Abp/Features/LimitValidation/Redis/AbpFeaturesLimitValidationRedisTestModule.cs similarity index 80% rename from aspnet-core/tests/LINGYUN.Abp.Features.Validation.Redis.Tests/LINGYUN/Abp/Features/Validation/Redis/AbpFeaturesValidationRedisTestModule.cs rename to aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests/LINGYUN/Abp/Features/LimitValidation/Redis/AbpFeaturesLimitValidationRedisTestModule.cs index 827e67adf..0a03e7df7 100644 --- a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Redis.Tests/LINGYUN/Abp/Features/Validation/Redis/AbpFeaturesValidationRedisTestModule.cs +++ b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests/LINGYUN/Abp/Features/LimitValidation/Redis/AbpFeaturesLimitValidationRedisTestModule.cs @@ -3,13 +3,13 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Modularity; -namespace LINGYUN.Abp.Features.Validation.Redis +namespace LINGYUN.Abp.Features.LimitValidation.Redis { [DependsOn( - typeof(AbpFeaturesValidationTestModule), + typeof(AbpFeaturesLimitValidationTestModule), typeof(AbpFeaturesValidationRedisModule), typeof(AbpTestsBaseModule))] - public class AbpFeaturesValidationRedisTestModule : AbpModule + public class AbpFeaturesLimitValidationRedisTestModule : AbpModule { public override void PreConfigureServices(ServiceConfigurationContext context) { diff --git a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Redis.Tests/LINGYUN/Abp/Features/Validation/Redis/RedisRequiresLimitFeatureCheckerTests.cs b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests/LINGYUN/Abp/Features/LimitValidation/Redis/RedisRequiresLimitFeatureCheckerTests.cs similarity index 77% rename from aspnet-core/tests/LINGYUN.Abp.Features.Validation.Redis.Tests/LINGYUN/Abp/Features/Validation/Redis/RedisRequiresLimitFeatureCheckerTests.cs rename to aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests/LINGYUN/Abp/Features/LimitValidation/Redis/RedisRequiresLimitFeatureCheckerTests.cs index 56d23ad92..f3cdecd8c 100644 --- a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Redis.Tests/LINGYUN/Abp/Features/Validation/Redis/RedisRequiresLimitFeatureCheckerTests.cs +++ b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Redis.Tests/LINGYUN/Abp/Features/LimitValidation/Redis/RedisRequiresLimitFeatureCheckerTests.cs @@ -1,21 +1,19 @@ using Microsoft.Extensions.Options; using Shouldly; -using System; using System.Threading; using System.Threading.Tasks; -using Volo.Abp.Authorization; using Xunit; -namespace LINGYUN.Abp.Features.Validation.Redis +namespace LINGYUN.Abp.Features.LimitValidation.Redis { - public class RedisRequiresLimitFeatureCheckerTests : AbpFeaturesValidationRedisTestBase + public class RedisRequiresLimitFeatureCheckerTests : AbpFeaturesLimitValidationRedisTestBase { - protected AbpFeaturesValidationOptions Options { get; } + protected AbpFeaturesLimitValidationOptions Options { get; } protected IRequiresLimitFeatureChecker RequiresLimitFeatureChecker { get; } protected TestValidationFeatureClass TestValidationFeatureClass { get; } public RedisRequiresLimitFeatureCheckerTests() { - Options = GetRequiredService>().Value; + Options = GetRequiredService>().Value; RequiresLimitFeatureChecker = GetRequiredService(); TestValidationFeatureClass = GetRequiredService(); } @@ -43,13 +41,14 @@ namespace LINGYUN.Abp.Features.Validation.Redis await RequiresLimitFeatureChecker.ProcessAsync(context); await RequiresLimitFeatureChecker.ProcessAsync(context); await RequiresLimitFeatureChecker.ProcessAsync(context); - await Assert.ThrowsAsync(async () => - { - await RequiresLimitFeatureChecker.CheckAsync(context); - }); + + var current = await RequiresLimitFeatureChecker.CheckAsync(context); + current.ShouldBeFalse(); + Thread.Sleep(61000); // it's ok - await RequiresLimitFeatureChecker.ProcessAsync(context); + var nowCheckResult = await RequiresLimitFeatureChecker.CheckAsync(context); + nowCheckResult.ShouldBeTrue(); } } } diff --git a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN.Abp.Features.Validation.Tests.csproj b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN.Abp.Features.LimitValidation.Tests.csproj similarity index 90% rename from aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN.Abp.Features.Validation.Tests.csproj rename to aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN.Abp.Features.LimitValidation.Tests.csproj index 9811616e6..3b0dad961 100644 --- a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN.Abp.Features.Validation.Tests.csproj +++ b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN.Abp.Features.LimitValidation.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationTestBase.cs b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationTestBase.cs new file mode 100644 index 000000000..32e6d083c --- /dev/null +++ b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationTestBase.cs @@ -0,0 +1,8 @@ +using LINGYUN.Abp.Tests; + +namespace LINGYUN.Abp.Features.LimitValidation +{ + public class AbpFeaturesLimitValidationTestBase : AbpTestsBase + { + } +} diff --git a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/AbpFeaturesValidationTestModule.cs b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationTestModule.cs similarity index 79% rename from aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/AbpFeaturesValidationTestModule.cs rename to aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationTestModule.cs index 16ee3c2e4..b426f91a1 100644 --- a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/AbpFeaturesValidationTestModule.cs +++ b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationTestModule.cs @@ -2,12 +2,12 @@ using LINGYUN.Abp.Tests; using LINGYUN.Abp.Tests.Features; using Volo.Abp.Modularity; -namespace LINGYUN.Abp.Features.Validation +namespace LINGYUN.Abp.Features.LimitValidation { [DependsOn( typeof(AbpTestsBaseModule), - typeof(AbpFeaturesValidationModule))] - public class AbpFeaturesValidationTestModule : AbpModule + typeof(AbpFeaturesLimitValidationModule))] + public class AbpFeaturesLimitValidationTestModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { diff --git a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/FakeRequiresFeatureLimitChecker.cs b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/FakeRequiresFeatureLimitChecker.cs similarity index 77% rename from aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/FakeRequiresFeatureLimitChecker.cs rename to aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/FakeRequiresFeatureLimitChecker.cs index 231ebe6ad..e0d9f5262 100644 --- a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/FakeRequiresFeatureLimitChecker.cs +++ b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/FakeRequiresFeatureLimitChecker.cs @@ -3,10 +3,9 @@ using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; -using Volo.Abp.Authorization; using Volo.Abp.DependencyInjection; -namespace LINGYUN.Abp.Features.Validation +namespace LINGYUN.Abp.Features.LimitValidation { [Dependency(ServiceLifetime.Singleton, ReplaceServices = true)] [ExposeServices(typeof(IRequiresLimitFeatureChecker))] @@ -19,22 +18,18 @@ namespace LINGYUN.Abp.Features.Validation limitFeatures = new Dictionary(); } - public virtual Task CheckAsync(RequiresLimitFeatureContext context, CancellationToken cancellation = default) + public virtual Task CheckAsync(RequiresLimitFeatureContext context, CancellationToken cancellation = default) { if (limitFeatures.ContainsKey(context.LimitFeature)) { if (limitFeatures[context.LimitFeature].ExprieTime <= DateTime.Now) { limitFeatures.Remove(context.LimitFeature); - return Task.CompletedTask; - } - if (limitFeatures[context.LimitFeature].Limit + 1 > context.Limit) - { - throw new AbpAuthorizationException("已经超出功能次数限制,请联系管理员"); + return Task.FromResult(true); } + return Task.FromResult(limitFeatures[context.LimitFeature].Limit + 1 <= context.Limit); } - - return Task.CompletedTask; + return Task.FromResult(true); } public Task ProcessAsync(RequiresLimitFeatureContext context, CancellationToken cancellation = default) diff --git a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/FeaturesValidationTests.cs b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/FeaturesLimitValidationTests.cs similarity index 82% rename from aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/FeaturesValidationTests.cs rename to aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/FeaturesLimitValidationTests.cs index 24ab8ccec..1f29da6a9 100644 --- a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/FeaturesValidationTests.cs +++ b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/FeaturesLimitValidationTests.cs @@ -1,17 +1,18 @@ -using System; +using Shouldly; +using System; using System.Threading; using System.Threading.Tasks; using Volo.Abp.Authorization; using Volo.Abp.MultiTenancy; using Xunit; -namespace LINGYUN.Abp.Features.Validation +namespace LINGYUN.Abp.Features.LimitValidation { - public class FeaturesValidationTests : AbpFeaturesValidationTestBase + public class FeaturesLimitValidationTests : AbpFeaturesLimitValidationTestBase { protected ICurrentTenant CurrentTenant { get; } protected TestValidationFeatureClass TestValidationFeatureClass { get; } - public FeaturesValidationTests() + public FeaturesLimitValidationTests() { CurrentTenant = GetRequiredService(); TestValidationFeatureClass = GetRequiredService(); @@ -26,8 +27,7 @@ namespace LINGYUN.Abp.Features.Validation // it's ok await TestValidationFeatureClass.Test1MinuteAsync(); await TestValidationFeatureClass.Test1MinuteAsync(); - - await Assert.ThrowsAsync(async () => + await Assert.ThrowsAsync(async () => { await TestValidationFeatureClass.Test1MinuteAsync(); }); diff --git a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/TestFeatureDefinitionProvider.cs b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/TestFeatureDefinitionProvider.cs similarity index 94% rename from aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/TestFeatureDefinitionProvider.cs rename to aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/TestFeatureDefinitionProvider.cs index 726e40ac8..7648ec438 100644 --- a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/TestFeatureDefinitionProvider.cs +++ b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/TestFeatureDefinitionProvider.cs @@ -1,7 +1,7 @@ using Volo.Abp.Features; using Volo.Abp.Validation.StringValues; -namespace LINGYUN.Abp.Features.Validation +namespace LINGYUN.Abp.Features.LimitValidation { public class TestFeatureDefinitionProvider : FeatureDefinitionProvider { diff --git a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/TestFeatureNames.cs b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/TestFeatureNames.cs similarity index 85% rename from aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/TestFeatureNames.cs rename to aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/TestFeatureNames.cs index 5916df1c6..e07529290 100644 --- a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/TestFeatureNames.cs +++ b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/TestFeatureNames.cs @@ -1,4 +1,4 @@ -namespace LINGYUN.Abp.Features.Validation +namespace LINGYUN.Abp.Features.LimitValidation { public class TestFeatureNames { diff --git a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/TestFeatureTenant.cs b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/TestFeatureTenant.cs similarity index 72% rename from aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/TestFeatureTenant.cs rename to aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/TestFeatureTenant.cs index 658f72478..234807f32 100644 --- a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/TestFeatureTenant.cs +++ b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/TestFeatureTenant.cs @@ -1,4 +1,4 @@ -namespace LINGYUN.Abp.Features.Validation +namespace LINGYUN.Abp.Features.LimitValidation { public class TestFeatureTenant { diff --git a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/TestValidationFeatureClass.cs b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/TestValidationFeatureClass.cs similarity index 91% rename from aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/TestValidationFeatureClass.cs rename to aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/TestValidationFeatureClass.cs index 6d7cb355e..a55de395e 100644 --- a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/TestValidationFeatureClass.cs +++ b/aspnet-core/tests/LINGYUN.Abp.Features.LimitValidation.Tests/LINGYUN/Abp/Features/LimitValidation/TestValidationFeatureClass.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using Volo.Abp.DependencyInjection; using Volo.Abp.Features; -namespace LINGYUN.Abp.Features.Validation +namespace LINGYUN.Abp.Features.LimitValidation { public class TestValidationFeatureClass : ITransientDependency { diff --git a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Redis.Tests/LINGYUN/Abp/Features/Validation/Redis/AbpFeaturesValidationRedisTestBase.cs b/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Redis.Tests/LINGYUN/Abp/Features/Validation/Redis/AbpFeaturesValidationRedisTestBase.cs deleted file mode 100644 index 55ee092dc..000000000 --- a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Redis.Tests/LINGYUN/Abp/Features/Validation/Redis/AbpFeaturesValidationRedisTestBase.cs +++ /dev/null @@ -1,9 +0,0 @@ -using LINGYUN.Abp.Tests; - -namespace LINGYUN.Abp.Features.Validation.Redis -{ - public class AbpFeaturesValidationRedisTestBase : AbpTestsBase - { - - } -} diff --git a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/AbpFeaturesValidationTestBase.cs b/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/AbpFeaturesValidationTestBase.cs deleted file mode 100644 index 9aa794120..000000000 --- a/aspnet-core/tests/LINGYUN.Abp.Features.Validation.Tests/LINGYUN/Abp/Features/Validation/AbpFeaturesValidationTestBase.cs +++ /dev/null @@ -1,8 +0,0 @@ -using LINGYUN.Abp.Tests; - -namespace LINGYUN.Abp.Features.Validation -{ - public class AbpFeaturesValidationTestBase : AbpTestsBase - { - } -}