diff --git a/internal/db/models/node_dao.go b/internal/db/models/node_dao.go index 3802a545..124db766 100644 --- a/internal/db/models/node_dao.go +++ b/internal/db/models/node_dao.go @@ -656,6 +656,15 @@ func (this *NodeDAO) FindAllEnabledNodesWithGrantId(tx *dbs.Tx, grantId int64) ( return } +// 计算未安装的节点数量 +func (this *NodeDAO) CountAllNotInstalledNodesWithClusterId(tx *dbs.Tx, clusterId int64) (int64, error) { + return this.Query(tx). + State(NodeStateEnabled). + Attr("clusterId", clusterId). + Attr("isInstalled", false). + Count() +} + // 查找所有未安装的节点 func (this *NodeDAO) FindAllNotInstalledNodesWithClusterId(tx *dbs.Tx, clusterId int64) (result []*Node, err error) { _, err = this.Query(tx). diff --git a/internal/rpc/services/service_node.go b/internal/rpc/services/service_node.go index 533ddac6..05c693fd 100644 --- a/internal/rpc/services/service_node.go +++ b/internal/rpc/services/service_node.go @@ -733,10 +733,23 @@ func (this *NodeService) FindAllEnabledNodesWithGrantId(ctx context.Context, req return &pb.FindAllEnabledNodesWithGrantIdResponse{Nodes: result}, nil } +// 计算没有安装的节点数量 +func (this *NodeService) CountAllNotInstalledNodesWithClusterId(ctx context.Context, req *pb.CountAllNotInstalledNodesWithClusterIdRequest) (*pb.RPCCountResponse, error) { + _, err := this.ValidateAdmin(ctx, 0) + if err != nil { + return nil, err + } + tx := this.NullTx() + count, err := models.SharedNodeDAO.CountAllNotInstalledNodesWithClusterId(tx, req.NodeClusterId) + if err != nil { + return nil, err + } + return this.SuccessCount(count) +} + // 列出所有未安装的节点 func (this *NodeService) FindAllNotInstalledNodesWithClusterId(ctx context.Context, req *pb.FindAllNotInstalledNodesWithClusterIdRequest) (*pb.FindAllNotInstalledNodesWithClusterIdResponse, error) { - // 校验请求 - _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) + _, err := this.ValidateAdmin(ctx, 0) if err != nil { return nil, err }