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