- 实现账号增删改查接口和逻辑 - 支持账号状态更新及状态历史记录功能 - 提供账号列表、历史和统计信息查询API - 实现账号轮询机制,支持按使用时间轮询获取账号 - 增加账号登录流程及批量登录功能,集成接码平台和平台API - 管理账号订单容量,支持容量检查与账号登录触发 - 提供账号池状态统计接口 - 账号历史记录查询支持多种变更类型文本展示 - 密码等敏感信息采用脱敏展示 - 完善日志记录和错误处理机制,保证业务稳定运行
56 lines
2.1 KiB
Go
56 lines
2.1 KiB
Go
package model
|
||
|
||
import (
|
||
"time"
|
||
)
|
||
|
||
// LimiterType 限流器类型
|
||
type LimiterType string
|
||
|
||
const (
|
||
// LimiterTypeSysUserLogin 用户登录限流
|
||
LimiterTypeSysUserLogin LimiterType = "sys_user:login"
|
||
// LimiterTypeCardInfoJdAccountCookieChecker JD账户Cookie检查限流
|
||
LimiterTypeCardInfoJdAccountCookieChecker LimiterType = "card_info:jd:account:cookie"
|
||
// LimiterTypeCardInfoJdAccountCookieSet JD账户Cookie设置限流
|
||
LimiterTypeCardInfoJdAccountCookieSet LimiterType = "card_info:jd:account:cookie:set"
|
||
// LimiterTypeCardInfoRedeemAccountCookieChecker 通用账户Cookie检查限流
|
||
LimiterTypeCardInfoRedeemAccountCookieChecker LimiterType = "card_info:redeem:account:cookie:checker"
|
||
// LimiterTypeCardInfoRedeemAccountCookieSet 通用账户Cookie设置限流
|
||
LimiterTypeCardInfoRedeemAccountCookieSet LimiterType = "card_info:redeem:account:cookie:set"
|
||
)
|
||
|
||
// LimiterStrategy 限流策略
|
||
type LimiterStrategy string
|
||
|
||
const (
|
||
// StrategySlidingWindow 滑动窗口限流
|
||
StrategySlidingWindow LimiterStrategy = "sliding_window"
|
||
// StrategyFixedWindow 固定窗口限流
|
||
StrategyFixedWindow LimiterStrategy = "fixed_window"
|
||
// StrategyTokenBucket 令牌桶限流
|
||
StrategyTokenBucket LimiterStrategy = "token_bucket"
|
||
)
|
||
|
||
// LimiterConfig 限流器配置
|
||
type LimiterConfig struct {
|
||
Type LimiterType `json:"type"` // 限流器类型
|
||
Strategy LimiterStrategy `json:"strategy"` // 限流策略
|
||
Capacity int `json:"capacity"` // 容量(最大请求数)
|
||
Window time.Duration `json:"window"` // 时间窗口
|
||
Rate float64 `json:"rate"` // 速率(用于令牌桶)
|
||
}
|
||
|
||
// LimiterResult 限流检查结果
|
||
type LimiterResult struct {
|
||
Allowed bool `json:"allowed"` // 是否允许通过
|
||
Remaining int `json:"remaining"` // 剩余可用次数
|
||
ResetAt time.Time `json:"reset_at"` // 重置时间
|
||
RetryAfter time.Duration `json:"retry_after"` // 建议重试间隔
|
||
}
|
||
|
||
// Key 暴露Key方法,用于生成缓存键
|
||
func (lt LimiterType) Key(name interface{}) string {
|
||
return string(lt) + ":" + string(name.(string))
|
||
}
|