41 lines
1.5 KiB
Go
41 lines
1.5 KiB
Go
|
package model
|
|||
|
|
|||
|
import (
|
|||
|
"time"
|
|||
|
|
|||
|
"gorm.io/gorm"
|
|||
|
)
|
|||
|
|
|||
|
type AccessToken struct {
|
|||
|
gorm.Model
|
|||
|
Token string `gorm:"uniqueIndex" json:"token"` // 访问令牌
|
|||
|
DeviceUID string `gorm:"index" json:"device_uid"` // 关联的设备UID
|
|||
|
Type string `gorm:"size:20" json:"type"` // 令牌类型:api/device
|
|||
|
Status string `gorm:"size:20" json:"status"` // 状态:active/revoked
|
|||
|
ExpireTime time.Time `json:"expire_time"` // 过期时间
|
|||
|
LastUsed time.Time `json:"last_used"` // 最后使用时间
|
|||
|
UsageCount int `gorm:"default:0" json:"usage_count"` // 使用次数
|
|||
|
IPList string `gorm:"type:text" json:"ip_list"` // 允许的IP列表,逗号分隔
|
|||
|
CreatedBy uint `gorm:"index" json:"created_by"` // 创建者ID
|
|||
|
}
|
|||
|
|
|||
|
// TableName 指定表名
|
|||
|
func (AccessToken) TableName() string {
|
|||
|
return "access_tokens"
|
|||
|
}
|
|||
|
|
|||
|
type TokenLog struct {
|
|||
|
gorm.Model
|
|||
|
TokenID uint `gorm:"index" json:"token_id"` // 关联的令牌ID
|
|||
|
Action string `gorm:"size:20" json:"action"` // 操作类型:create/use/revoke
|
|||
|
IP string `gorm:"size:50" json:"ip"` // 操作IP
|
|||
|
UserAgent string `gorm:"size:255" json:"user_agent"` // User-Agent
|
|||
|
Status string `gorm:"size:20" json:"status"` // 状态:success/failed
|
|||
|
Message string `gorm:"size:500" json:"message"` // 详细信息
|
|||
|
}
|
|||
|
|
|||
|
// TableName 指定表名
|
|||
|
func (TokenLog) TableName() string {
|
|||
|
return "token_logs"
|
|||
|
}
|