Browse Source

feat(feature): change functional hierarchy

pull/816/head
cKey 3 years ago
parent
commit
26f9907991
  1. 12
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/Features/AuditingFeatureDefinitionProvider.cs
  2. 2
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/Features/AuditingFeatureNames.cs
  3. 7
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/Localization/Resources/en.json
  4. 7
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/Localization/Resources/zh-Hans.json
  5. 16
      aspnet-core/modules/cloud-tencent/LINGYUN.Abp.Tencent/LINGYUN/Abp/Tencent/Features/TencentCloudFeatureDefinitionProvider.cs
  6. 10
      aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation/Redis/RedisRequiresLimitFeatureChecker.cs
  7. 1
      aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN.Abp.Features.LimitValidation.csproj
  8. 5
      aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationModule.cs
  9. 47
      aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationOptions.cs
  10. 8
      aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/RequiresLimitFeatureContext.cs
  11. 2
      aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.en.md
  12. 2
      aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.md
  13. 5
      aspnet-core/modules/notifications/LINGYUN.Abp.Notifications.Domain/LINGYUN/Abp/Notifications/AbpNotificationsDomainModule.cs
  14. 16
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureDefinitionProvider.cs
  15. 2
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureNames.cs
  16. 72
      aspnet-core/modules/pushplus/LINGYUN.Abp.PushPlus/LINGYUN/Abp/PushPlus/Features/PushPlusFeatureDefinitionProvider.cs
  17. 23
      aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.MiniProgram/LINGYUN/Abp/WeChat/MiniProgram/Features/WeChatMiniProgramFeatureDefinitionProvider.cs
  18. 10
      aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN/Abp/WeChat/Official/Features/WeChatOfficialFeatureDefinitionProvider.cs
  19. 14
      aspnet-core/modules/wx-pusher/LINGYUN.Abp.WxPusher/LINGYUN/Abp/WxPusher/Features/WxPusherFeatureDefinitionProvider.cs

12
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/Features/AuditingFeatureDefinitionProvider.cs

@ -13,27 +13,27 @@ namespace LINGYUN.Abp.Auditing.Features
name: AuditingFeatureNames.GroupName,
displayName: L("Features:Auditing"));
var loggingFeature = auditingGroup.AddFeature(
name: AuditingFeatureNames.Logging.Default,
var loggingEnableFeature = auditingGroup.AddFeature(
name: AuditingFeatureNames.Logging.Enable,
displayName: L("Features:Auditing"),
description: L("Features:Auditing")
description: L("Features:AuditingDesc")
);
loggingFeature.CreateChild(
loggingEnableFeature.CreateChild(
name: AuditingFeatureNames.Logging.AuditLog,
defaultValue: true.ToString(),
displayName: L("Features:DisplayName:AuditLog"),
description: L("Features:Description:AuditLog"),
valueType: new ToggleStringValueType(new BooleanValueValidator())
);
loggingFeature.CreateChild(
loggingEnableFeature.CreateChild(
name: AuditingFeatureNames.Logging.SecurityLog,
defaultValue: true.ToString(),
displayName: L("Features:DisplayName:SecurityLog"),
description: L("Features:Description:SecurityLog"),
valueType: new ToggleStringValueType(new BooleanValueValidator())
);
loggingFeature.CreateChild(
loggingEnableFeature.CreateChild(
name: AuditingFeatureNames.Logging.SystemLog,
defaultValue: true.ToString(),
displayName: L("Features:DisplayName:SystemLog"),

2
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/Features/AuditingFeatureNames.cs

@ -7,6 +7,8 @@
{
public const string Default = GroupName + ".Logging";
public const string Enable = Default + ".Enable";
public const string AuditLog = Default + ".AuditLog";
public const string SecurityLog = Default + ".SecurityLog";

7
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/Localization/Resources/en.json

@ -6,12 +6,13 @@
"Permissions:SecurityLog": "Security log",
"Permissions:DeleteLog": "Delete",
"Features:Auditing": "Auditing",
"Features:AuditingDesc": "Enable the auditing function",
"Features:DisplayName:AuditLog": "Audit log",
"Features:Description:AuditLog": "Whether to enable audit logging",
"Features:Description:AuditLog": "Enable audit logging",
"Features:DisplayName:SecurityLog": "Security log",
"Features:Description:SecurityLog": "Whether to enable security logging",
"Features:Description:SecurityLog": "Enable security logging",
"Features:DisplayName:SystemLog": "System log",
"Features:Description:SystemLog": "Whether to enable system logging",
"Features:Description:SystemLog": "Enable system logging",
"SecurityLog": "Security log",
"AuditLog": "Audit log",
"Logging": "System Log",

7
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/Localization/Resources/zh-Hans.json

@ -6,12 +6,13 @@
"Permissions:SecurityLog": "安全日志",
"Permissions:DeleteLog": "删除日志",
"Features:Auditing": "内部审计",
"Features:AuditingDesc": "启用内部审计功能",
"Features:DisplayName:AuditLog": "审计日志",
"Features:Description:AuditLog": "是否启用审计日志功能",
"Features:Description:AuditLog": "启用审计日志功能",
"Features:DisplayName:SecurityLog": "安全日志",
"Features:Description:SecurityLog": "是否启用安全日志功能",
"Features:Description:SecurityLog": "启用安全日志功能",
"Features:DisplayName:SystemLog": "系统日志",
"Features:Description:SystemLog": "是否启用系统日志功能",
"Features:Description:SystemLog": "启用系统日志功能",
"SecurityLog": "安全日志",
"AuditLog": "审计日志",
"Logging": "系统日志",

16
aspnet-core/modules/cloud-tencent/LINGYUN.Abp.Tencent/LINGYUN/Abp/Tencent/Features/TencentCloudFeatureDefinitionProvider.cs

@ -11,30 +11,20 @@ namespace LINGYUN.Abp.Tencent.Features
{
var group = context.AddGroup(TencentCloudFeatures.GroupName, L("Features:TencentCloud"));
var sms = group.AddFeature(
name: TencentCloudFeatures.Sms.GroupName,
displayName: L("Features:TencentSms"),
description: L("Features:TencentSms"));
sms.CreateChild(
var smsEnableFeature = group.AddFeature(
name: TencentCloudFeatures.Sms.Enable,
defaultValue: true.ToString(),
displayName: L("Features:TencentSmsEnable"),
description: L("Features:TencentSmsEnable.Desc"),
valueType: new ToggleStringValueType(new BooleanValueValidator()));
var blobStoring = group.AddFeature(
name: TencentCloudFeatures.BlobStoring.GroupName,
displayName: L("Features:TencentBlobStoring"),
description: L("Features:TencentBlobStoring"));
blobStoring.CreateChild(
var blobStoringEnableFeature = group.AddFeature(
name: TencentCloudFeatures.BlobStoring.Enable,
defaultValue: true.ToString(),
displayName: L("Features:TencentBlobStoringEnable"),
description: L("Features:TencentBlobStoringEnable.Desc"),
valueType: new ToggleStringValueType(new BooleanValueValidator()));
blobStoring.CreateChild(
blobStoringEnableFeature.CreateChild(
name: TencentCloudFeatures.BlobStoring.MaximumStreamSize,
defaultValue: "0",
displayName: L("Features:TencentBlobStoringMaximumStreamSize"),

10
aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation/Redis/RedisRequiresLimitFeatureChecker.cs

@ -9,6 +9,7 @@ using System.Threading;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Timing;
using Volo.Abp.VirtualFileSystem;
namespace LINGYUN.Abp.Features.LimitValidation.Redis
@ -26,6 +27,7 @@ namespace LINGYUN.Abp.Features.LimitValidation.Redis
private IDatabaseAsync _redis;
private IServer _server;
private readonly IClock _clock;
private readonly IVirtualFileProvider _virtualFileProvider;
private readonly IRedisLimitFeatureNamingNormalizer _featureNamingNormalizer;
private readonly AbpRedisRequiresLimitFeatureOptions _options;
@ -34,6 +36,7 @@ namespace LINGYUN.Abp.Features.LimitValidation.Redis
private readonly SemaphoreSlim _connectionLock = new SemaphoreSlim(initialCount: 1, maxCount: 1);
public RedisRequiresLimitFeatureChecker(
IClock clock,
IVirtualFileProvider virtualFileProvider,
IRedisLimitFeatureNamingNormalizer featureNamingNormalizer,
IOptions<AbpRedisRequiresLimitFeatureOptions> optionsAccessor)
@ -44,8 +47,9 @@ namespace LINGYUN.Abp.Features.LimitValidation.Redis
}
_options = optionsAccessor.Value;
_virtualFileProvider = virtualFileProvider;
_featureNamingNormalizer = featureNamingNormalizer;
_clock = clock ?? throw new ArgumentNullException(nameof(clock));
_virtualFileProvider = virtualFileProvider ?? throw new ArgumentNullException(nameof(virtualFileProvider));
_featureNamingNormalizer = featureNamingNormalizer ?? throw new ArgumentNullException(nameof(featureNamingNormalizer));
_instance = _options.InstanceName ?? string.Empty;
@ -81,7 +85,7 @@ namespace LINGYUN.Abp.Features.LimitValidation.Redis
}
var keys = new RedisKey[1] { NormalizeKey(context) };
var values = new RedisValue[] { context.GetEffectTicks() };
var values = new RedisValue[] { context.GetEffectTicks(_clock.Now) };
var result = await _redis.ScriptEvaluateAsync(luaSha1, keys, values);
if (result.Type == ResultType.Error)
{

1
aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN.Abp.Features.LimitValidation.csproj

@ -20,6 +20,7 @@
<ItemGroup>
<PackageReference Include="Volo.Abp.Features" Version="$(VoloAbpPackageVersion)" />
<PackageReference Include="Volo.Abp.Timing" Version="$(VoloAbpPackageVersion)" />
</ItemGroup>
</Project>

5
aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationModule.cs

@ -3,11 +3,14 @@ using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Features;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.Timing;
using Volo.Abp.VirtualFileSystem;
namespace LINGYUN.Abp.Features.LimitValidation
{
[DependsOn(typeof(AbpFeaturesModule))]
[DependsOn(
typeof(AbpTimingModule),
typeof(AbpFeaturesModule))]
public class AbpFeaturesLimitValidationModule : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)

47
aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/AbpFeaturesLimitValidationOptions.cs

@ -7,10 +7,11 @@ namespace LINGYUN.Abp.Features.LimitValidation
{
public class AbpFeaturesLimitValidationOptions
{
public IDictionary<LimitPolicy, Func<int, long>> EffectPolicys { get; }
public IDictionary<LimitPolicy, Func<DateTime, int, long>> EffectPolicys { get; }
public AbpFeaturesLimitValidationOptions()
{
EffectPolicys = new Dictionary<LimitPolicy, Func<int, long>>();
EffectPolicys = new Dictionary<LimitPolicy, Func<DateTime, int, long>>();
}
/// <summary>
/// 变更功能限制策略时长计算方法
@ -20,7 +21,7 @@ namespace LINGYUN.Abp.Features.LimitValidation
/// <remarks>
/// 返回值一定要是秒钟刻度
/// </remarks>
public void MapEffectPolicy(LimitPolicy policy,[NotNull] Func<int, long> func)
public void MapEffectPolicy(LimitPolicy policy,[NotNull] Func<DateTime, int, long> func)
{
Check.NotNull(func, nameof(func));
@ -36,54 +37,50 @@ namespace LINGYUN.Abp.Features.LimitValidation
internal void MapDefaultEffectPolicys()
{
MapEffectPolicy(LimitPolicy.Minute, (time) =>
MapEffectPolicy(LimitPolicy.Minute, (now, tick) =>
{
var utcNow = DateTime.UtcNow;
return (long)(utcNow.AddMinutes(time) - utcNow).TotalSeconds;
return (long)(now.AddMinutes(tick) - now).TotalSeconds;
});
MapEffectPolicy(LimitPolicy.Hours, (time) =>
MapEffectPolicy(LimitPolicy.Hours, (now, tick) =>
{
var utcNow = DateTime.UtcNow;
return (long)(utcNow.AddHours(time) - utcNow).TotalSeconds;
return (long)(now.AddHours(tick) - now).TotalSeconds;
});
MapEffectPolicy(LimitPolicy.Days, (time) =>
MapEffectPolicy(LimitPolicy.Days, (now, tick) =>
{
// 按天计算应取当天
return (long)(DateTime.UtcNow.Date.AddDays(time) - DateTime.UtcNow).TotalSeconds;
return (long)(now.Date.AddDays(tick) - DateTime.UtcNow).TotalSeconds;
});
MapEffectPolicy(LimitPolicy.Weeks,(time) =>
MapEffectPolicy(LimitPolicy.Weeks,(now, tick) =>
{
// 按周计算应取当周
var utcNow = DateTime.UtcNow.Date;
var dayOfWeek = (int)utcNow.DayOfWeek - 1;
if (utcNow.DayOfWeek == DayOfWeek.Sunday)
var nowDate = now.Date;
var dayOfWeek = (int)nowDate.DayOfWeek - 1;
if (nowDate.DayOfWeek == DayOfWeek.Sunday)
{
dayOfWeek = 6;
}
var utcOnceDayOfWeek = utcNow.AddDays(-dayOfWeek);
var utcOnceDayOfWeek = nowDate.AddDays(-dayOfWeek);
return (long)(utcOnceDayOfWeek.AddDays(time * 7) - DateTime.UtcNow).TotalSeconds;
return (long)(utcOnceDayOfWeek.AddDays(tick * 7) - DateTime.UtcNow).TotalSeconds;
});
MapEffectPolicy(LimitPolicy.Month, (time) =>
MapEffectPolicy(LimitPolicy.Month, (now, tick) =>
{
// 按月计算应取当月
var utcNow = DateTime.UtcNow;
var utcOnceDayOfMonth = new DateTime(utcNow.Year, utcNow.Month, 1, 0, 0, 0, 0);
var utcOnceDayOfMonth = new DateTime(now.Year, now.Month, 1, 0, 0, 0, 0);
return (long)(utcOnceDayOfMonth.AddMonths(time) - utcNow).TotalSeconds;
return (long)(utcOnceDayOfMonth.AddMonths(tick) - now).TotalSeconds;
});
MapEffectPolicy(LimitPolicy.Years, (time) =>
MapEffectPolicy(LimitPolicy.Years, (now, tick) =>
{
// 按年计算应取当年
var utcNow = DateTime.UtcNow;
var utcOnceDayOfYear = new DateTime(utcNow.Year, 1, 1, 0, 0, 0, 0);
var utcOnceDayOfYear = new DateTime(now.Year, 1, 1, 0, 0, 0, 0);
return (long)(utcOnceDayOfYear.AddYears(time) - utcNow).TotalSeconds;
return (long)(utcOnceDayOfYear.AddYears(tick) - now).TotalSeconds;
});
}
}

8
aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/LINGYUN/Abp/Features/LimitValidation/RequiresLimitFeatureContext.cs

@ -1,4 +1,6 @@
namespace LINGYUN.Abp.Features.LimitValidation
using System;
namespace LINGYUN.Abp.Features.LimitValidation
{
public class RequiresLimitFeatureContext
{
@ -38,9 +40,9 @@
/// 获取生效时间跨度,单位:s
/// </summary>
/// <returns></returns>
public long GetEffectTicks()
public long GetEffectTicks(DateTime now)
{
return Options.EffectPolicys[Policy](Interval);
return Options.EffectPolicys[Policy](now, Interval);
}
}
}

2
aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.en.md

@ -80,7 +80,7 @@ public class YouProjectModule : AbpModule
{
Configure<AbpFeaturesLimitValidationOptions>(options =>
{
options.MapEffectPolicy(LimitPolicy.Minute, (time) => return 60;); // Means that no matter how many minutes (time), only 60 seconds will be limited
options.MapEffectPolicy(LimitPolicy.Minute, (now, tick) => return 60;); // Means that no matter how many minutes (time), only 60 seconds will be limited
});
}
}

2
aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.md

@ -80,7 +80,7 @@ public class YouProjectModule : AbpModule
{
Configure<AbpFeaturesLimitValidationOptions>(options =>
{
options.MapEffectPolicy(LimitPolicy.Minute, (time) => return 60;); // 表示不管多少分钟(time),都只会限制60秒
options.MapEffectPolicy(LimitPolicy.Minute, (now, tick) => return 60;); // 表示不管多少分钟(time),都只会限制60秒
});
}
}

5
aspnet-core/modules/notifications/LINGYUN.Abp.Notifications.Domain/LINGYUN/Abp/Notifications/AbpNotificationsDomainModule.cs

@ -29,6 +29,11 @@ public class AbpNotificationsDomainModule : AbpModule
options.IsDynamicNotificationsStoreEnabled = false;
});
}
Configure<AbpAutoMapperOptions>(options =>
{
options.AddProfile<AbpNotificationsDomainAutoMapperProfile>(validate: true);
});
}
public override void OnApplicationInitialization(ApplicationInitializationContext context)

16
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureDefinitionProvider.cs

@ -20,45 +20,45 @@ namespace LINGYUN.Abp.OssManagement.Features
description: L("Features:Description:PublicAccess"),
valueType: new ToggleStringValueType(new BooleanValueValidator()));
var ossFeature = featureGroup.AddFeature(
name: AbpOssManagementFeatureNames.OssObject.Default,
var ossDefaultFeature = featureGroup.AddFeature(
name: AbpOssManagementFeatureNames.OssObject.Enable,
defaultValue: true.ToString(),
displayName: L("Features:DisplayName:OssObject"),
description: L("Features:Description:OssObject"),
valueType: new ToggleStringValueType(new BooleanValueValidator()));
ossFeature.CreateChild(
ossDefaultFeature.CreateChild(
name: AbpOssManagementFeatureNames.OssObject.DownloadFile,
defaultValue: false.ToString(),
displayName: L("Features:DisplayName:DownloadFile"),
description: L("Features:Description:DownloadFile"),
valueType: new ToggleStringValueType(new BooleanValueValidator()));
ossFeature.CreateChild(
ossDefaultFeature.CreateChild(
name: AbpOssManagementFeatureNames.OssObject.DownloadLimit,
defaultValue: "1000",
displayName: L("Features:DisplayName:DownloadLimit"),
description: L("Features:Description:DownloadLimit"),
valueType: new FreeTextStringValueType(new NumericValueValidator(0, 100_0000))); // 上限100万次调用
ossFeature.CreateChild(
ossDefaultFeature.CreateChild(
name: AbpOssManagementFeatureNames.OssObject.DownloadInterval,
defaultValue: "1",
displayName: L("Features:DisplayName:DownloadInterval"),
description: L("Features:Description:DownloadInterval"),
valueType: new FreeTextStringValueType(new NumericValueValidator(1, 12))); // 上限12月
ossFeature.CreateChild(
ossDefaultFeature.CreateChild(
name: AbpOssManagementFeatureNames.OssObject.UploadFile,
defaultValue: true.ToString(),
displayName: L("Features:DisplayName:UploadFile"),
description: L("Features:Description:UploadFile"),
valueType: new ToggleStringValueType(new BooleanValueValidator()));
ossFeature.CreateChild(
ossDefaultFeature.CreateChild(
name: AbpOssManagementFeatureNames.OssObject.UploadLimit,
defaultValue: "1000",
displayName: L("Features:DisplayName:UploadLimit"),
description: L("Features:Description:UploadLimit"),
valueType: new FreeTextStringValueType(new NumericValueValidator(0, 100_0000))); // 上限100万次调用
ossFeature.CreateChild(
ossDefaultFeature.CreateChild(
name: AbpOssManagementFeatureNames.OssObject.UploadInterval,
defaultValue: "1",
displayName: L("Features:DisplayName:UploadInterval"),

2
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Domain.Shared/LINGYUN/Abp/OssManagement/Features/AbpOssManagementFeatureNames.cs

@ -11,6 +11,8 @@
public class OssObject
{
public const string Default = GroupName + ".OssObject";
public const string Enable = Default + ".Enable";
/// <summary>
/// 下载文件功能
/// </summary>

72
aspnet-core/modules/pushplus/LINGYUN.Abp.PushPlus/LINGYUN/Abp/PushPlus/Features/PushPlusFeatureDefinitionProvider.cs

@ -12,40 +12,36 @@ public class PushPlusFeatureDefinitionProvider : FeatureDefinitionProvider
name: PushPlusFeatureNames.GroupName,
displayName: L("Features:PushPlus"));
group.AddFeature(
var pushPlusMessageEnableFeature = group.AddFeature(
name: PushPlusFeatureNames.Message.Enable,
defaultValue: "false",
displayName: L("Features:MessageEnable"),
description: L("Features:MessageEnableDesc"),
valueType: new ToggleStringValueType(new BooleanValueValidator()));
CreateWeChatChannelFeature(group);
CreateWeWorkChannelFeature(group);
CreateWebhookChannelFeature(group);
CreateEmailChannelFeature(group);
CreateSmsChannelFeature(group);
CreateWeChatChannelFeature(pushPlusMessageEnableFeature);
CreateWeWorkChannelFeature(pushPlusMessageEnableFeature);
CreateWebhookChannelFeature(pushPlusMessageEnableFeature);
CreateEmailChannelFeature(pushPlusMessageEnableFeature);
CreateSmsChannelFeature(pushPlusMessageEnableFeature);
}
private static void CreateWeChatChannelFeature(
FeatureGroupDefinition group)
FeatureDefinition pushPlusMessageEnableFeature)
{
var weChatChannel = group.AddFeature(
name: PushPlusFeatureNames.Channel.WeChat.GroupName,
displayName: L("Features:Channel.WeChat"),
description: L("Features:Channel.WeChat"));
weChatChannel.CreateChild(
var weChatChannelEnableFeature = pushPlusMessageEnableFeature.CreateChild(
name: PushPlusFeatureNames.Channel.WeChat.Enable,
defaultValue: "false",
displayName: L("Features:Channel.WeChat.Enable"),
description: L("Features:Channel.WeChat.EnableDesc"),
valueType: new ToggleStringValueType(new BooleanValueValidator()));
weChatChannel.CreateChild(
weChatChannelEnableFeature.CreateChild(
name: PushPlusFeatureNames.Channel.WeChat.SendLimit,
defaultValue: "200",
displayName: L("Features:Channel.WeChat.SendLimit"),
description: L("Features:Channel.WeChat.SendLimitDesc"),
valueType: new FreeTextStringValueType(new NumericValueValidator(1, 1000)));
weChatChannel.CreateChild(
weChatChannelEnableFeature.CreateChild(
name: PushPlusFeatureNames.Channel.WeChat.SendLimitInterval,
defaultValue: "1",
displayName: L("Features:Channel.WeChat.SendLimitInterval"),
@ -54,25 +50,21 @@ public class PushPlusFeatureDefinitionProvider : FeatureDefinitionProvider
}
private static void CreateWeWorkChannelFeature(
FeatureGroupDefinition group)
FeatureDefinition pushPlusMessageEnableFeature)
{
var weWorkChannel = group.AddFeature(
name: PushPlusFeatureNames.Channel.WeWork.GroupName,
displayName: L("Features:Channel.WeWork"),
description: L("Features:Channel.WeWork"));
weWorkChannel.CreateChild(
var weWorkChannelEnableFeature = pushPlusMessageEnableFeature.CreateChild(
name: PushPlusFeatureNames.Channel.WeWork.Enable,
defaultValue: "false",
displayName: L("Features:Channel.WeWork.Enable"),
description: L("Features:Channel.WeWork.EnableDesc"),
valueType: new ToggleStringValueType(new BooleanValueValidator()));
weWorkChannel.CreateChild(
weWorkChannelEnableFeature.CreateChild(
name: PushPlusFeatureNames.Channel.WeWork.SendLimit,
defaultValue: "200",
displayName: L("Features:Channel.WeWork.SendLimit"),
description: L("Features:Channel.WeWork.SendLimitDesc"),
valueType: new FreeTextStringValueType(new NumericValueValidator(1, 10000)));
weWorkChannel.CreateChild(
weWorkChannelEnableFeature.CreateChild(
name: PushPlusFeatureNames.Channel.WeWork.SendLimitInterval,
defaultValue: "1",
displayName: L("Features:Channel.WeWork.SendLimitInterval"),
@ -81,25 +73,21 @@ public class PushPlusFeatureDefinitionProvider : FeatureDefinitionProvider
}
private static void CreateWebhookChannelFeature(
FeatureGroupDefinition group)
FeatureDefinition pushPlusMessageEnableFeature)
{
var webhookChannel = group.AddFeature(
name: PushPlusFeatureNames.Channel.Webhook.GroupName,
displayName: L("Features:Channel.Webhook"),
description: L("Features:Channel.Webhook"));
webhookChannel.CreateChild(
var webhookChannelEnableFeatuer = pushPlusMessageEnableFeature.CreateChild(
name: PushPlusFeatureNames.Channel.Webhook.Enable,
defaultValue: "false",
displayName: L("Features:Channel.Webhook.Enable"),
description: L("Features:Channel.Webhook.EnableDesc"),
valueType: new ToggleStringValueType(new BooleanValueValidator()));
webhookChannel.CreateChild(
webhookChannelEnableFeatuer.CreateChild(
name: PushPlusFeatureNames.Channel.Webhook.SendLimit,
defaultValue: "200",
displayName: L("Features:Channel.Webhook.SendLimit"),
description: L("Features:Channel.Webhook.SendLimitDesc"),
valueType: new FreeTextStringValueType(new NumericValueValidator(1, 10000)));
webhookChannel.CreateChild(
webhookChannelEnableFeatuer.CreateChild(
name: PushPlusFeatureNames.Channel.Webhook.SendLimitInterval,
defaultValue: "1",
displayName: L("Features:Channel.Webhook.SendLimitInterval"),
@ -108,25 +96,21 @@ public class PushPlusFeatureDefinitionProvider : FeatureDefinitionProvider
}
private static void CreateEmailChannelFeature(
FeatureGroupDefinition group)
FeatureDefinition pushPlusMessageEnableFeature)
{
var emailChannel = group.AddFeature(
name: PushPlusFeatureNames.Channel.Email.GroupName,
displayName: L("Features:Channel.Email"),
description: L("Features:Channel.Email"));
emailChannel.CreateChild(
var emailChannelEnableFeature = pushPlusMessageEnableFeature.CreateChild(
name: PushPlusFeatureNames.Channel.Email.Enable,
defaultValue: "false",
displayName: L("Features:Channel.Email.Enable"),
description: L("Features:Channel.Email.EnableDesc"),
valueType: new ToggleStringValueType(new BooleanValueValidator()));
emailChannel.CreateChild(
emailChannelEnableFeature.CreateChild(
name: PushPlusFeatureNames.Channel.Email.SendLimit,
defaultValue: "200",
displayName: L("Features:Channel.Email.SendLimit"),
description: L("Features:Channel.Email.SendLimitDesc"),
valueType: new FreeTextStringValueType(new NumericValueValidator(1, 1000)));
emailChannel.CreateChild(
emailChannelEnableFeature.CreateChild(
name: PushPlusFeatureNames.Channel.Email.SendLimitInterval,
defaultValue: "1",
displayName: L("Features:Channel.Email.SendLimitInterval"),
@ -135,25 +119,21 @@ public class PushPlusFeatureDefinitionProvider : FeatureDefinitionProvider
}
private static void CreateSmsChannelFeature(
FeatureGroupDefinition group)
FeatureDefinition pushPlusMessageEnableFeature)
{
var smsChannel = group.AddFeature(
name: PushPlusFeatureNames.Channel.Sms.GroupName,
displayName: L("Features:Channel.Sms"),
description: L("Features:Channel.Sms"));
smsChannel.CreateChild(
var smsChannelEnableFeature = pushPlusMessageEnableFeature.CreateChild(
name: PushPlusFeatureNames.Channel.Sms.Enable,
defaultValue: "false",
displayName: L("Features:Channel.Sms.Enable"),
description: L("Features:Channel.Sms.EnableDesc"),
valueType: new ToggleStringValueType(new BooleanValueValidator()));
smsChannel.CreateChild(
smsChannelEnableFeature.CreateChild(
name: PushPlusFeatureNames.Channel.Sms.SendLimit,
defaultValue: "200",
displayName: L("Features:Channel.Sms.SendLimit"),
description: L("Features:Channel.Sms.SendLimitDesc"),
valueType: new FreeTextStringValueType(new NumericValueValidator(1, 1000)));
smsChannel.CreateChild(
smsChannelEnableFeature.CreateChild(
name: PushPlusFeatureNames.Channel.Sms.SendLimitInterval,
defaultValue: "1",
displayName: L("Features:Channel.Sms.SendLimitInterval"),

23
aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.MiniProgram/LINGYUN/Abp/WeChat/MiniProgram/Features/WeChatMiniProgramFeatureDefinitionProvider.cs

@ -12,18 +12,18 @@ namespace LINGYUN.Abp.WeChat.MiniProgram.Features
{
var group = context.GetGroupOrNull(WeChatFeatures.GroupName);
var miniProgram = group.AddFeature(
name: WeChatMiniProgramFeatures.GroupName,
displayName: L("Features:WeChat.MiniProgram"),
description: L("Features:WeChat.MiniProgramDesc"));
//var miniProgram = group.AddFeature(
// name: WeChatMiniProgramFeatures.GroupName,
// displayName: L("Features:WeChat.MiniProgram"),
// description: L("Features:WeChat.MiniProgramDesc"));
miniProgram.CreateChild(
var miniProgramEnableFeature = group.AddFeature(
name: WeChatMiniProgramFeatures.Enable,
defaultValue: true.ToString(),
displayName: L("Features:WeChat.MiniProgram.Enable"),
description: L("Features:WeChat.MiniProgram.EnableDesc"),
valueType: new ToggleStringValueType(new BooleanValueValidator()));
miniProgram.CreateChild(
miniProgramEnableFeature.CreateChild(
name: WeChatMiniProgramFeatures.EnableAuthorization,
defaultValue: true.ToString(),
displayName: L("Features:WeChat.MiniProgram.EnableAuthorization"),
@ -31,24 +31,19 @@ namespace LINGYUN.Abp.WeChat.MiniProgram.Features
valueType: new ToggleStringValueType(new BooleanValueValidator()));
var message = miniProgram.CreateChild(
name: WeChatMiniProgramFeatures.Messages.Default,
displayName: L("Features:WeChat.MiniProgram.Messages"),
description: L("Features:WeChat.MiniProgram.MessagesDesc"));
message.CreateChild(
var messageEnableFeature = group.AddFeature(
name: WeChatMiniProgramFeatures.Messages.Enable,
defaultValue: true.ToString(),
displayName: L("Features:WeChat.MiniProgram.EnableMessages"),
description: L("Features:WeChat.MiniProgram.EnableMessagesDesc"),
valueType: new ToggleStringValueType(new BooleanValueValidator()));
message.CreateChild(
messageEnableFeature.CreateChild(
name: WeChatMiniProgramFeatures.Messages.SendLimit,
defaultValue: WeChatMiniProgramFeatures.Messages.DefaultSendLimit.ToString(),
displayName: L("Features:WeChat.MiniProgram.SendLimit"),
description: L("Features:WeChat.MiniProgram.SendLimitDesc"),
valueType: new FreeTextStringValueType(new NumericValueValidator(1, 100_0000)));
message.CreateChild(
messageEnableFeature.CreateChild(
name: WeChatMiniProgramFeatures.Messages.SendLimitInterval,
defaultValue: WeChatMiniProgramFeatures.Messages.DefaultSendLimitInterval.ToString(),
displayName: L("Features:WeChat.MiniProgram.SendLimitInterval"),

10
aspnet-core/modules/wechat/LINGYUN.Abp.WeChat.Official/LINGYUN/Abp/WeChat/Official/Features/WeChatOfficialFeatureDefinitionProvider.cs

@ -12,18 +12,14 @@ namespace LINGYUN.Abp.WeChat.Official.Features
{
var group = context.GetGroupOrNull(WeChatFeatures.GroupName);
var official = group.AddFeature(
name: WeChatOfficialFeatures.GroupName,
displayName: L("Features:WeChat.Official"),
description: L("Features:WeChat.OfficialDesc"));
official.CreateChild(
var officialEnableFeature = group.AddFeature(
name: WeChatOfficialFeatures.Enable,
defaultValue: true.ToString(),
displayName: L("Features:WeChat.Official.Enable"),
description: L("Features:WeChat.Official.EnableDesc"),
valueType: new ToggleStringValueType(new BooleanValueValidator()));
official.CreateChild(
officialEnableFeature.CreateChild(
name: WeChatOfficialFeatures.EnableAuthorization,
defaultValue: true.ToString(),
displayName: L("Features:WeChat.Official.EnableAuthorization"),

14
aspnet-core/modules/wx-pusher/LINGYUN.Abp.WxPusher/LINGYUN/Abp/WxPusher/Features/WxPusherFeatureDefinitionProvider.cs

@ -12,31 +12,27 @@ public class WxPusherFeatureDefinitionProvider : FeatureDefinitionProvider
var group = context.AddGroup(
name: WxPusherFeatureNames.GroupName,
displayName: L("Features:WxPusher"));
group.AddFeature(
var wxPusherEnableFeature = group.AddFeature(
name: WxPusherFeatureNames.Enable,
defaultValue: "false",
displayName: L("Features:WxPusherEnable"),
description: L("Features:WxPusherEnableDesc"),
valueType: new ToggleStringValueType(new BooleanValueValidator()));
var message = group.AddFeature(
name: WxPusherFeatureNames.Message.GroupName,
displayName: L("Features:Message"),
description: L("Features:Message"));
message.CreateChild(
var messageEnableFeature = wxPusherEnableFeature.CreateChild(
name: WxPusherFeatureNames.Message.Enable,
defaultValue: "false",
displayName: L("Features:MessageEnable"),
description: L("Features:MessageEnableDesc"),
valueType: new ToggleStringValueType(new BooleanValueValidator()));
message.CreateChild(
messageEnableFeature.CreateChild(
name: WxPusherFeatureNames.Message.SendLimit,
defaultValue: "500",
displayName: L("Features:Message.SendLimit"),
description: L("Features:Message.SendLimitDesc"),
valueType: new FreeTextStringValueType(new NumericValueValidator(1, 500)));
message.CreateChild(
messageEnableFeature.CreateChild(
name: WxPusherFeatureNames.Message.SendLimitInterval,
defaultValue: "1",
displayName: L("Features:Message.SendLimitInterval"),

Loading…
Cancel
Save