[区域]增加区域管理

This commit is contained in:
刘祥超
2020-12-10 15:03:03 +08:00
parent 82543e9fde
commit bddd0a3a4f
10 changed files with 317 additions and 4 deletions

View File

@@ -618,6 +618,14 @@ func (this *NodeDAO) CountAllEnabledNodesWithGroupId(groupId int64) (int64, erro
Count()
}
// 查找某个节点区域下的所有节点数量
func (this *NodeDAO) CountAllEnabledNodesWithRegionId(regionId int64) (int64, error) {
return this.Query().
State(NodeStateEnabled).
Attr("regionId", regionId).
Count()
}
// 获取一个集群的节点DNS信息
func (this *NodeDAO) FindAllEnabledNodesDNSWithClusterId(clusterId int64) (result []*Node, err error) {
_, err = this.Query().

View File

@@ -0,0 +1,133 @@
package models
import (
"github.com/TeaOSLab/EdgeAPI/internal/errors"
_ "github.com/go-sql-driver/mysql"
"github.com/iwind/TeaGo/Tea"
"github.com/iwind/TeaGo/dbs"
)
const (
NodeRegionStateEnabled = 1 // 已启用
NodeRegionStateDisabled = 0 // 已禁用
)
type NodeRegionDAO dbs.DAO
func NewNodeRegionDAO() *NodeRegionDAO {
return dbs.NewDAO(&NodeRegionDAO{
DAOObject: dbs.DAOObject{
DB: Tea.Env,
Table: "edgeNodeRegions",
Model: new(NodeRegion),
PkName: "id",
},
}).(*NodeRegionDAO)
}
var SharedNodeRegionDAO *NodeRegionDAO
func init() {
dbs.OnReady(func() {
SharedNodeRegionDAO = NewNodeRegionDAO()
})
}
// 启用条目
func (this *NodeRegionDAO) EnableNodeRegion(id int64) error {
_, err := this.Query().
Pk(id).
Set("state", NodeRegionStateEnabled).
Update()
return err
}
// 禁用条目
func (this *NodeRegionDAO) DisableNodeRegion(id int64) error {
_, err := this.Query().
Pk(id).
Set("state", NodeRegionStateDisabled).
Update()
return err
}
// 查找启用中的条目
func (this *NodeRegionDAO) FindEnabledNodeRegion(id int64) (*NodeRegion, error) {
result, err := this.Query().
Pk(id).
Attr("state", NodeRegionStateEnabled).
Find()
if result == nil {
return nil, err
}
return result.(*NodeRegion), err
}
// 根据主键查找名称
func (this *NodeRegionDAO) FindNodeRegionName(id int64) (string, error) {
return this.Query().
Pk(id).
Result("name").
FindStringCol("")
}
// 创建区域
func (this *NodeRegionDAO) CreateRegion(adminId int64, name string) (int64, error) {
op := NewNodeRegionOperator()
op.AdminId = adminId
op.Name = name
op.State = NodeRegionStateEnabled
op.IsOn = true
return this.SaveInt64(op)
}
// 修改区域
func (this *NodeRegionDAO) UpdateRegion(regionId int64, name string, isOn bool) error {
if regionId <= 0 {
return errors.New("invalid regionId")
}
op := NewNodeRegionOperator()
op.Id = regionId
op.Name = name
op.IsOn = isOn
return this.Save(op)
}
// 列出所有区域
func (this *NodeRegionDAO) FindAllEnabledRegions() (result []*NodeRegion, err error) {
_, err = this.Query().
State(NodeRegionStateEnabled).
Desc("order").
AscPk().
Slice(&result).
FindAll()
return
}
// 列出所有启用的区域
func (this *NodeRegionDAO) FindAllEnabledAndOnRegions() (result []*NodeRegion, err error) {
_, err = this.Query().
State(NodeRegionStateEnabled).
Attr("isOn", true).
Desc("order").
AscPk().
Slice(&result).
FindAll()
return
}
// 排序
func (this *NodeRegionDAO) UpdateRegionOrders(regionIds []int64) error {
order := len(regionIds)
for _, regionId := range regionIds {
_, err := this.Query().
Pk(regionId).
Set("order", order).
Update()
if err != nil {
return err
}
order--
}
return nil
}

View File

@@ -0,0 +1,5 @@
package models
import (
_ "github.com/go-sql-driver/mysql"
)

View File

@@ -0,0 +1,26 @@
package models
// 节点区域
type NodeRegion struct {
Id uint32 `field:"id"` // ID
AdminId uint32 `field:"adminId"` // 管理员ID
IsOn uint8 `field:"isOn"` // 是否启用
Name string `field:"name"` // 名称
Order uint32 `field:"order"` // 排序
CreatedAt uint64 `field:"createdAt"` // 创建时间
State uint8 `field:"state"` // 状态
}
type NodeRegionOperator struct {
Id interface{} // ID
AdminId interface{} // 管理员ID
IsOn interface{} // 是否启用
Name interface{} // 名称
Order interface{} // 排序
CreatedAt interface{} // 创建时间
State interface{} // 状态
}
func NewNodeRegionOperator() *NodeRegionOperator {
return &NodeRegionOperator{}
}

View File

@@ -0,0 +1 @@
package models