diff --git a/internal/db/models/api_node_dao.go b/internal/db/models/api_node_dao.go index c51b705a..fdc4ceee 100644 --- a/internal/db/models/api_node_dao.go +++ b/internal/db/models/api_node_dao.go @@ -211,6 +211,24 @@ func (this *APINodeDAO) CountAllEnabledAPINodes(tx *dbs.Tx) (int64, error) { Count() } +// CountAllEnabledAndOnAPINodes 计算启用中的API节点数量 +func (this *APINodeDAO) CountAllEnabledAndOnAPINodes(tx *dbs.Tx) (int64, error) { + return this.Query(tx). + State(APINodeStateEnabled). + Attr("isOn", true). + Count() +} + + +// CountAllEnabledAndOnOfflineAPINodes 计算API节点数量 +func (this *APINodeDAO) CountAllEnabledAndOnOfflineAPINodes(tx *dbs.Tx) (int64, error) { + return this.Query(tx). + State(APINodeStateEnabled). + Attr("isOn", true). + Where("(status IS NULL OR NOT JSON_EXTRACT(status, '$.isActive') OR UNIX_TIMESTAMP()-JSON_EXTRACT(status, '$.updatedAt')>60)"). + Count() +} + // ListEnabledAPINodes 列出单页的API节点 func (this *APINodeDAO) ListEnabledAPINodes(tx *dbs.Tx, offset int64, size int64) (result []*APINode, err error) { _, err = this.Query(tx). diff --git a/internal/db/models/node_dao.go b/internal/db/models/node_dao.go index efd27b41..50450164 100644 --- a/internal/db/models/node_dao.go +++ b/internal/db/models/node_dao.go @@ -259,6 +259,16 @@ func (this *NodeDAO) CountAllEnabledNodes(tx *dbs.Tx) (int64, error) { Count() } +// CountAllEnabledOfflineNodes 计算所有离线节点数量 +func (this *NodeDAO) CountAllEnabledOfflineNodes(tx *dbs.Tx) (int64, error) { + return this.Query(tx). + State(NodeStateEnabled). + Where("clusterId IN (SELECT id FROM "+SharedNodeClusterDAO.Table+" WHERE state=:clusterState)"). + Param("clusterState", NodeClusterStateEnabled). + Where("(status IS NULL OR NOT JSON_EXTRACT(status, '$.isActive') OR UNIX_TIMESTAMP()-JSON_EXTRACT(status, '$.updatedAt')>60)"). + Count() +} + // ListEnabledNodesMatch 列出单页节点 func (this *NodeDAO) ListEnabledNodesMatch(tx *dbs.Tx, clusterId int64, @@ -493,9 +503,9 @@ func (this *NodeDAO) FindAllInactiveNodesWithClusterId(tx *dbs.Tx, clusterId int _, err = this.Query(tx). State(NodeStateEnabled). Attr("clusterId", clusterId). - Attr("isOn", true). // 只监控启用的节点 + Attr("isOn", true). // 只监控启用的节点 Attr("isInstalled", true). // 只监控已经安装的节点 - Attr("isActive", true). // 当前已经在线的 + Attr("isActive", true). // 当前已经在线的 Where("(status IS NULL OR (JSON_EXTRACT(status, '$.isActive')=false AND UNIX_TIMESTAMP()-JSON_EXTRACT(status, '$.updatedAt')>10) OR UNIX_TIMESTAMP()-JSON_EXTRACT(status, '$.updatedAt')>120)"). Result("id", "name"). Slice(&result). diff --git a/internal/db/models/user_node_dao.go b/internal/db/models/user_node_dao.go index 9a98b699..f848c063 100644 --- a/internal/db/models/user_node_dao.go +++ b/internal/db/models/user_node_dao.go @@ -96,6 +96,14 @@ func (this *UserNodeDAO) CountAllEnabledUserNodes(tx *dbs.Tx) (int64, error) { Count() } +// CountAllEnabledAndOnUserNodes 计算启用的用户节点数量 +func (this *UserNodeDAO) CountAllEnabledAndOnUserNodes(tx *dbs.Tx) (int64, error) { + return this.Query(tx). + State(UserNodeStateEnabled). + Attr("isOn", true). + Count() +} + // ListEnabledUserNodes 列出单页的用户节点 func (this *UserNodeDAO) ListEnabledUserNodes(tx *dbs.Tx, offset int64, size int64) (result []*UserNode, err error) { _, err = this.Query(tx). @@ -266,10 +274,11 @@ func (this *UserNodeDAO) CountAllLowerVersionNodes(tx *dbs.Tx, version string) ( Count() } -// CountOfflineNodes 计算离线节点数量 -func (this *UserNodeDAO) CountOfflineNodes(tx *dbs.Tx) (int64, error) { +// CountAllEnabledAndOnOfflineNodes 计算离线节点数量 +func (this *UserNodeDAO) CountAllEnabledAndOnOfflineNodes(tx *dbs.Tx) (int64, error) { return this.Query(tx). State(UserNodeStateEnabled). - Where("(status IS NULL OR JSON_EXTRACT(status, '$.updatedAt')