66 lines
1.6 KiB
Go
66 lines
1.6 KiB
Go
package models
|
||
|
||
import (
|
||
"platform/web/core"
|
||
"platform/web/globals/orm"
|
||
)
|
||
|
||
// Edge 节点表
|
||
type Edge struct {
|
||
core.Model
|
||
Type EdgeType `json:"type" gorm:"column:type"` // 节点类型:1-自建
|
||
Version int32 `json:"version" gorm:"column:version"` // 节点版本
|
||
Mac string `json:"mac" gorm:"column:mac"` // 节点 mac 地址
|
||
IP orm.Inet `json:"ip" gorm:"column:ip;not null"` // 节点地址
|
||
ISP EdgeISP `json:"isp" gorm:"column:isp"` // 运营商:0-未知,1-电信,2-联通,3-移动
|
||
Prov string `json:"prov" gorm:"column:prov"` // 省份
|
||
City string `json:"city" gorm:"column:city"` // 城市
|
||
Status EdgeStatus `json:"status" gorm:"column:status"` // 节点状态:0-离线,1-正常
|
||
RTT int32 `json:"rtt" gorm:"column:rtt"` // 最近平均延迟
|
||
Loss int32 `json:"loss" gorm:"column:loss"` // 最近丢包率
|
||
}
|
||
|
||
// EdgeType 节点类型枚举
|
||
type EdgeType int
|
||
|
||
const (
|
||
EdgeTypeSelfBuilt EdgeType = 1 // 自建
|
||
)
|
||
|
||
// EdgeStatus 节点状态枚举
|
||
type EdgeStatus int
|
||
|
||
const (
|
||
EdgeStatusOffline EdgeStatus = 0 // 离线
|
||
EdgeStatusNormal EdgeStatus = 1 // 正常
|
||
)
|
||
|
||
// EdgeISP 运营商枚举
|
||
type EdgeISP int
|
||
|
||
const (
|
||
EdgeISPTelecom EdgeISP = 1 // 电信
|
||
EdgeISPUnicom EdgeISP = 2 // 联通
|
||
EdgeISPMobile EdgeISP = 3 // 移动
|
||
)
|
||
|
||
func (isp *EdgeISP) String() string {
|
||
if isp == nil {
|
||
return ""
|
||
}
|
||
switch *isp {
|
||
case EdgeISPTelecom:
|
||
return "电信"
|
||
case EdgeISPUnicom:
|
||
return "联通"
|
||
case EdgeISPMobile:
|
||
return "移动"
|
||
default:
|
||
return ""
|
||
}
|
||
}
|
||
|
||
func ToEdgeISP(i int) EdgeISP {
|
||
return EdgeISP(i)
|
||
}
|