Abp模块
abp
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

53 lines
1.5 KiB

using JetBrains.Annotations;
using System;
using Volo.Abp;
namespace Sanhe.Abp.Features.LimitValidation;
/// <summary>
/// 单个功能的调用量限制
/// </summary>
/// <remarks>
/// 需要对于限制时长和限制上限功能区分,以便于更细粒度的限制
/// </remarks>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false)]
public class RequiresLimitFeatureAttribute : Attribute
{
/// <summary>
/// 功能限制策略
/// </summary>
public LimitPolicy Policy { get; }
/// <summary>
/// 默认限制时长
/// </summary>
public int DefaultLimit { get; }
/// <summary>
/// 限制上限名称
/// </summary>
public string LimitFeature { get; }
/// <summary>
/// 默认限制时长
/// </summary>
public int DefaultInterval { get; }
/// <summary>
/// 限制时长名称
/// </summary>
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;
}
}