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.
54 lines
1.5 KiB
54 lines
1.5 KiB
3 years ago
|
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;
|
||
|
}
|
||
|
}
|