38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
package models
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// AccessLog 访问日志模型
|
|
type AccessLog struct {
|
|
ID uint `json:"id" gorm:"primaryKey;column:id"`
|
|
IP string `json:"ip" gorm:"column:ip;index"`
|
|
UserAgent string `json:"user_agent" gorm:"column:user_agent"`
|
|
Path string `json:"path" gorm:"column:path;index"`
|
|
Method string `json:"method" gorm:"column:method"`
|
|
StatusCode int `json:"status_code" gorm:"column:status_code"`
|
|
ResponseTime int64 `json:"response_time" gorm:"column:response_time"` // 毫秒
|
|
Region string `json:"region" gorm:"column:region"` // IP归属地
|
|
CreatedAt int64 `json:"created_at" gorm:"column:created_at"`
|
|
DeletedAt int64 `json:"deleted_at" gorm:"column:deleted_at;default:0"`
|
|
}
|
|
|
|
// TableName 指定表名
|
|
func (AccessLog) TableName() string {
|
|
return "access_logs"
|
|
}
|
|
|
|
// BeforeCreate 创建前钩子
|
|
func (a *AccessLog) BeforeCreate(tx *gorm.DB) error {
|
|
if a.CreatedAt == 0 {
|
|
a.CreatedAt = time.Now().Unix()
|
|
}
|
|
if a.DeletedAt == 0 {
|
|
a.DeletedAt = 0
|
|
}
|
|
return nil
|
|
}
|