using JetBrains.Annotations; using System; using Volo.Abp; namespace Sanhe.Abp.Features.LimitValidation; /// /// 单个功能的调用量限制 /// /// /// 需要对于限制时长和限制上限功能区分,以便于更细粒度的限制 /// [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false)] public class RequiresLimitFeatureAttribute : Attribute { /// /// 功能限制策略 /// public LimitPolicy Policy { get; } /// /// 默认限制时长 /// public int DefaultLimit { get; } /// /// 限制上限名称 /// public string LimitFeature { get; } /// /// 默认限制时长 /// public int DefaultInterval { get; } /// /// 限制时长名称 /// public string IntervalFeature { get; } public RequiresLimitFeatureAttribute( [NotNull] string limitFeature, [NotNull] string intervalFeature, LimitPolicy policy = LimitPolicy.Month, int defaultLimit = 1, int defaultInterval = 1) { Check.NotNullOrWhiteSpace(limitFeature, nameof(limitFeature)); Check.NotNullOrWhiteSpace(intervalFeature, nameof(intervalFeature)); Policy = policy; LimitFeature = limitFeature; DefaultLimit = defaultLimit; IntervalFeature = intervalFeature; DefaultInterval = defaultInterval; } }