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;
}
}