committed by
GitHub
18 changed files with 205 additions and 128 deletions
@ -1,4 +1,4 @@ |
|||
if (redis.call('EXISTS', KEYS[1]) == 0) then |
|||
redis.call('SETEX',KEYS[1],ARGV[1], 0) |
|||
return 0 |
|||
end |
|||
return tonumber(redis.call('GET', KEYS[1])) |
|||
@ -1,6 +1,6 @@ |
|||
if (redis.call('EXISTS',KEYS[1]) ~= 0) then |
|||
redis.call('INCRBY',KEYS[1], 1) |
|||
else |
|||
redis.call('SETEX',KEYS[1],ARGV[1],0) |
|||
redis.call('SETEX',KEYS[1],ARGV[1],1) |
|||
end |
|||
return tonumber(redis.call('GET',KEYS[1])) |
|||
@ -0,0 +1,47 @@ |
|||
using JetBrains.Annotations; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using Volo.Abp; |
|||
|
|||
namespace LINGYUN.Abp.Features.Validation |
|||
{ |
|||
public class AbpFeaturesValidationOptions |
|||
{ |
|||
public IDictionary<LimitPolicy, Func<int, long>> EffectPolicys { get; } |
|||
public AbpFeaturesValidationOptions() |
|||
{ |
|||
EffectPolicys = new Dictionary<LimitPolicy, Func<int, long>>(); |
|||
} |
|||
/// <summary>
|
|||
/// 变更功能限制策略时长计算方法
|
|||
/// </summary>
|
|||
/// <param name="policy">限制策略</param>
|
|||
/// <param name="func">自定义的计算方法</param>
|
|||
/// <remarks>
|
|||
/// 返回值一定要是秒钟刻度
|
|||
/// </remarks>
|
|||
public void MapEffectPolicy(LimitPolicy policy,[NotNull] Func<int, long> func) |
|||
{ |
|||
Check.NotNull(func, nameof(func)); |
|||
|
|||
if (EffectPolicys.ContainsKey(policy)) |
|||
{ |
|||
EffectPolicys[policy] = func; |
|||
} |
|||
else |
|||
{ |
|||
EffectPolicys.Add(policy, func); |
|||
} |
|||
} |
|||
|
|||
internal void MapDefaultEffectPolicys() |
|||
{ |
|||
MapEffectPolicy(LimitPolicy.Minute, (time) => { return (long)(DateTimeOffset.UtcNow.AddMinutes(time) - DateTimeOffset.UtcNow).TotalSeconds; }); |
|||
MapEffectPolicy(LimitPolicy.Hours, (time) => { return (long)(DateTimeOffset.UtcNow.AddHours(time) - DateTimeOffset.UtcNow).TotalSeconds; }); |
|||
MapEffectPolicy(LimitPolicy.Days, (time) => { return (long)(DateTimeOffset.UtcNow.AddDays(time) - DateTimeOffset.UtcNow).TotalSeconds; }); |
|||
MapEffectPolicy(LimitPolicy.Weeks, (time) => { return (long)(DateTimeOffset.UtcNow.AddDays(time * 7) - DateTimeOffset.UtcNow).TotalSeconds; }); |
|||
MapEffectPolicy(LimitPolicy.Month, (time) => { return (long)(DateTimeOffset.UtcNow.AddMonths(time) - DateTimeOffset.UtcNow).TotalSeconds; }); |
|||
MapEffectPolicy(LimitPolicy.Years, (time) => { return (long)(DateTimeOffset.UtcNow.AddYears(time) - DateTimeOffset.UtcNow).TotalSeconds; }); |
|||
} |
|||
} |
|||
} |
|||
@ -1,26 +1,30 @@ |
|||
namespace LINGYUN.Abp.Features.Validation |
|||
{ |
|||
public enum LimitPolicy |
|||
public enum LimitPolicy : byte |
|||
{ |
|||
/// <summary>
|
|||
/// 按分钟限制
|
|||
/// </summary>
|
|||
Minute = 0, |
|||
/// <summary>
|
|||
/// 按小时限制
|
|||
/// </summary>
|
|||
Hours = 0, |
|||
Hours = 10, |
|||
/// <summary>
|
|||
/// 按天限制
|
|||
/// </summary>
|
|||
Days = 1, |
|||
Days = 20, |
|||
/// <summary>
|
|||
/// 按周限制
|
|||
/// </summary>
|
|||
Weeks = 2, |
|||
Weeks = 30, |
|||
/// <summary>
|
|||
/// 按月限制
|
|||
/// </summary>
|
|||
Month = 3, |
|||
Month = 40, |
|||
/// <summary>
|
|||
/// 按年限制
|
|||
/// </summary>
|
|||
Years = 4 |
|||
Years = 50 |
|||
} |
|||
} |
|||
|
|||
Loading…
Reference in new issue