实现云端控制的动态节点分配逻辑

This commit is contained in:
2025-03-28 10:03:29 +08:00
parent e337a9c08e
commit e61f0bef32
16 changed files with 1313 additions and 138 deletions

View File

@@ -28,12 +28,17 @@ func newNode(db *gorm.DB, opts ...gen.DOOption) node {
tableName := _node.nodeDo.TableName()
_node.ALL = field.NewAsterisk(tableName)
_node.ID = field.NewInt32(tableName, "id")
_node.Name = field.NewString(tableName, "name")
_node.Version = field.NewInt32(tableName, "version")
_node.FwdPort = field.NewInt32(tableName, "fwd_port")
_node.Name = field.NewString(tableName, "name")
_node.Host = field.NewString(tableName, "host")
_node.Isp = field.NewString(tableName, "isp")
_node.Prov = field.NewString(tableName, "prov")
_node.City = field.NewString(tableName, "city")
_node.ProxyID = field.NewInt32(tableName, "proxy_id")
_node.ProxyPort = field.NewInt32(tableName, "proxy_port")
_node.Status = field.NewInt32(tableName, "status")
_node.Rtt = field.NewInt32(tableName, "rtt")
_node.Loss = field.NewInt32(tableName, "loss")
_node.CreatedAt = field.NewTime(tableName, "created_at")
_node.UpdatedAt = field.NewTime(tableName, "updated_at")
_node.DeletedAt = field.NewField(tableName, "deleted_at")
@@ -48,12 +53,17 @@ type node struct {
ALL field.Asterisk
ID field.Int32 // 节点ID
Name field.String // 节点名称
Version field.Int32 // 节点版本
FwdPort field.Int32 // 转发端口
Name field.String // 节点名称
Host field.String // 节点地址
Isp field.String // 运营商
Prov field.String // 省份
City field.String // 城市
ProxyID field.Int32 // 代理ID
ProxyPort field.Int32 // 代理端口
Status field.Int32 // 节点状态1-正常0-离线
Rtt field.Int32 // 延迟
Loss field.Int32 // 丢包率
CreatedAt field.Time // 创建时间
UpdatedAt field.Time // 更新时间
DeletedAt field.Field // 删除时间
@@ -74,12 +84,17 @@ func (n node) As(alias string) *node {
func (n *node) updateTableName(table string) *node {
n.ALL = field.NewAsterisk(table)
n.ID = field.NewInt32(table, "id")
n.Name = field.NewString(table, "name")
n.Version = field.NewInt32(table, "version")
n.FwdPort = field.NewInt32(table, "fwd_port")
n.Name = field.NewString(table, "name")
n.Host = field.NewString(table, "host")
n.Isp = field.NewString(table, "isp")
n.Prov = field.NewString(table, "prov")
n.City = field.NewString(table, "city")
n.ProxyID = field.NewInt32(table, "proxy_id")
n.ProxyPort = field.NewInt32(table, "proxy_port")
n.Status = field.NewInt32(table, "status")
n.Rtt = field.NewInt32(table, "rtt")
n.Loss = field.NewInt32(table, "loss")
n.CreatedAt = field.NewTime(table, "created_at")
n.UpdatedAt = field.NewTime(table, "updated_at")
n.DeletedAt = field.NewField(table, "deleted_at")
@@ -99,14 +114,19 @@ func (n *node) GetFieldByName(fieldName string) (field.OrderExpr, bool) {
}
func (n *node) fillFieldMap() {
n.fieldMap = make(map[string]field.Expr, 10)
n.fieldMap = make(map[string]field.Expr, 15)
n.fieldMap["id"] = n.ID
n.fieldMap["name"] = n.Name
n.fieldMap["version"] = n.Version
n.fieldMap["fwd_port"] = n.FwdPort
n.fieldMap["name"] = n.Name
n.fieldMap["host"] = n.Host
n.fieldMap["isp"] = n.Isp
n.fieldMap["prov"] = n.Prov
n.fieldMap["city"] = n.City
n.fieldMap["proxy_id"] = n.ProxyID
n.fieldMap["proxy_port"] = n.ProxyPort
n.fieldMap["status"] = n.Status
n.fieldMap["rtt"] = n.Rtt
n.fieldMap["loss"] = n.Loss
n.fieldMap["created_at"] = n.CreatedAt
n.fieldMap["updated_at"] = n.UpdatedAt
n.fieldMap["deleted_at"] = n.DeletedAt