v1.0.0
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
package rateLimit
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"sun-panel/global"
|
||||
)
|
||||
|
||||
const (
|
||||
ERROR_RATE_EXCEED_MINUTE = "minute exceed" // 分钟速率超出限制
|
||||
ERROR_RATE_EXCEED_HOUR = "minute hour" // 小时速率超出限制
|
||||
)
|
||||
|
||||
// 获取用户套餐的速率 此处正常根据用户套餐设定获取-暂时写死
|
||||
func GetUserPackageRate(userId uint) (minuteRate, hourRate int) {
|
||||
return 10, 200
|
||||
}
|
||||
|
||||
func CheckRateLimit(userId uint) error {
|
||||
minuteRate, hourRate := GetUserPackageRate(userId)
|
||||
if minuteRate != 0 && minuteRate <= global.RateLimit.MinuteGet(userId) {
|
||||
return errors.New(ERROR_RATE_EXCEED_MINUTE)
|
||||
}
|
||||
|
||||
if hourRate != 0 && hourRate <= global.RateLimit.HourGet(userId) {
|
||||
return errors.New(ERROR_RATE_EXCEED_HOUR)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// 速率+1次 同时增加小时和分钟的次数
|
||||
func AddOnceRate(userId uint) error {
|
||||
global.RateLimit.MinuteAddOnce(userId)
|
||||
global.RateLimit.HourAddOnce(userId)
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user