From de63ae89113617b2ff0a99afa132aeb88d44fbcf Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Sat, 27 Nov 2021 17:07:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8A=82=E7=82=B9=E4=BB=BB=E5=8A=A1=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=97=B6=E5=A2=9E=E5=8A=A0=E6=8E=92=E9=99=A4=E7=9A=84?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/node_task_dao.go | 26 +++++++++++++++------- internal/rpc/services/service_node_task.go | 4 ++-- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/internal/db/models/node_task_dao.go b/internal/db/models/node_task_dao.go index a07bdde6..52c039b1 100644 --- a/internal/db/models/node_task_dao.go +++ b/internal/db/models/node_task_dao.go @@ -311,20 +311,30 @@ func (this *NodeTaskDAO) FindAllDoingNodeIds(tx *dbs.Tx, role string) ([]int64, } // ExistsDoingNodeTasks 检查是否有正在执行的任务 -func (this *NodeTaskDAO) ExistsDoingNodeTasks(tx *dbs.Tx, role string) (bool, error) { - return this.Query(tx). +func (this *NodeTaskDAO) ExistsDoingNodeTasks(tx *dbs.Tx, role string, excludeTypes []NodeTaskType) (bool, error) { + var query = this.Query(tx). Attr("role", role). Where("(isDone=0 OR (isDone=1 AND isOk=0))"). - Gt("nodeId", 0). - Exist() + Gt("nodeId", 0) + if len(excludeTypes) > 0 { + for _, excludeType := range excludeTypes { + query.Neq("type", excludeType) + } + } + return query.Exist() } // ExistsErrorNodeTasks 是否有错误的任务 -func (this *NodeTaskDAO) ExistsErrorNodeTasks(tx *dbs.Tx, role string) (bool, error) { - return this.Query(tx). +func (this *NodeTaskDAO) ExistsErrorNodeTasks(tx *dbs.Tx, role string, excludeTypes []NodeTaskType) (bool, error) { + var query = this.Query(tx). Attr("role", role). - Where("(isDone=1 AND isOk=0)"). - Exist() + Where("(isDone=1 AND isOk=0)") + if len(excludeTypes) > 0 { + for _, excludeType := range excludeTypes { + query.Neq("type", excludeType) + } + } + return query.Exist() } // DeleteNodeTask 删除任务 diff --git a/internal/rpc/services/service_node_task.go b/internal/rpc/services/service_node_task.go index dd92a965..557a6c3c 100644 --- a/internal/rpc/services/service_node_task.go +++ b/internal/rpc/services/service_node_task.go @@ -163,13 +163,13 @@ func (this *NodeTaskService) ExistsNodeTasks(ctx context.Context, req *pb.Exists var tx = this.NullTx() // 是否有任务 - existTask, err := models.SharedNodeTaskDAO.ExistsDoingNodeTasks(tx, nodeconfigs.NodeRoleNode) + existTask, err := models.SharedNodeTaskDAO.ExistsDoingNodeTasks(tx, nodeconfigs.NodeRoleNode, req.ExcludeTypes) if err != nil { return nil, err } // 是否有错误 - existError, err := models.SharedNodeTaskDAO.ExistsErrorNodeTasks(tx, nodeconfigs.NodeRoleNode) + existError, err := models.SharedNodeTaskDAO.ExistsErrorNodeTasks(tx, nodeconfigs.NodeRoleNode, req.ExcludeTypes) if err != nil { return nil, err }