From ee9718ac7749740cd2f9a533a065ea2e4cfa98ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Tue, 11 Jan 2022 14:59:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=90=E8=A1=8C=E6=97=A5=E5=BF=97=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E4=BD=BF=E7=94=A8=E9=9B=86=E7=BE=A4=E3=80=81=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/node_log_dao.go | 32 ++++++++++++++++------- internal/rpc/services/service_node_log.go | 4 +-- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/internal/db/models/node_log_dao.go b/internal/db/models/node_log_dao.go index 339d4f74..9c7928d1 100644 --- a/internal/db/models/node_log_dao.go +++ b/internal/db/models/node_log_dao.go @@ -135,6 +135,7 @@ func (this *NodeLogDAO) DeleteExpiredLogs(tx *dbs.Tx, days int) error { // CountNodeLogs 计算节点日志数量 func (this *NodeLogDAO) CountNodeLogs(tx *dbs.Tx, role string, + nodeClusterId int64, nodeId int64, serverId int64, originId int64, @@ -151,11 +152,16 @@ func (this *NodeLogDAO) CountNodeLogs(tx *dbs.Tx, if nodeId > 0 { query.Attr("nodeId", nodeId) } else { - switch role { - case nodeconfigs.NodeRoleNode: - query.Where("nodeId IN (SELECT id FROM " + SharedNodeDAO.Table + " WHERE state=1 AND clusterId>0)") - case nodeconfigs.NodeRoleDNS: - query.Where("nodeId IN (SELECT id FROM edgeNSNodes WHERE state=1 AND clusterId > 0)") // 没有用 SharedNSNodeDAO() 因为有包循环引用的问题 + if nodeClusterId > 0 { + query.Where("nodeId IN (SELECT id FROM " + SharedNodeDAO.Table + " WHERE clusterId=:nodeClusterId AND state=1)") + query.Param("nodeClusterId", nodeClusterId) + } else { + switch role { + case nodeconfigs.NodeRoleNode: + query.Where("nodeId IN (SELECT id FROM " + SharedNodeDAO.Table + " WHERE state=1 AND clusterId>0)") + case nodeconfigs.NodeRoleDNS: + query.Where("nodeId IN (SELECT id FROM edgeNSNodes WHERE state=1 AND clusterId > 0)") // 没有用 SharedNSNodeDAO() 因为有包循环引用的问题 + } } } if serverId > 0 { @@ -192,6 +198,7 @@ func (this *NodeLogDAO) CountNodeLogs(tx *dbs.Tx, // ListNodeLogs 列出单页日志 func (this *NodeLogDAO) ListNodeLogs(tx *dbs.Tx, role string, + nodeClusterId int64, nodeId int64, serverId int64, originId int64, @@ -212,11 +219,16 @@ func (this *NodeLogDAO) ListNodeLogs(tx *dbs.Tx, if nodeId > 0 { query.Attr("nodeId", nodeId) } else { - switch role { - case nodeconfigs.NodeRoleNode: - query.Where("nodeId IN (SELECT id FROM " + SharedNodeDAO.Table + " WHERE state=1 AND clusterId>0)") - case nodeconfigs.NodeRoleDNS: - query.Where("nodeId IN (SELECT id FROM edgeNSNodes WHERE state=1 AND clusterId>0)") // 没有用 SharedNSNodeDAO() 因为有包循环引用的问题 + if nodeClusterId > 0 { + query.Where("nodeId IN (SELECT id FROM " + SharedNodeDAO.Table + " WHERE clusterId=:nodeClusterId AND state=1)") + query.Param("nodeClusterId", nodeClusterId) + } else { + switch role { + case nodeconfigs.NodeRoleNode: + query.Where("nodeId IN (SELECT id FROM " + SharedNodeDAO.Table + " WHERE state=1 AND clusterId>0)") + case nodeconfigs.NodeRoleDNS: + query.Where("nodeId IN (SELECT id FROM edgeNSNodes WHERE state=1 AND clusterId>0)") // 没有用 SharedNSNodeDAO() 因为有包循环引用的问题 + } } } if serverId > 0 { diff --git a/internal/rpc/services/service_node_log.go b/internal/rpc/services/service_node_log.go index 93bd5327..4f7a4cf9 100644 --- a/internal/rpc/services/service_node_log.go +++ b/internal/rpc/services/service_node_log.go @@ -41,7 +41,7 @@ func (this *NodeLogService) CountNodeLogs(ctx context.Context, req *pb.CountNode tx := this.NullTx() - count, err := models.SharedNodeLogDAO.CountNodeLogs(tx, req.Role, req.NodeId, req.ServerId, req.OriginId, req.DayFrom, req.DayTo, req.Keyword, req.Level, req.IsUnread, req.Tag) + count, err := models.SharedNodeLogDAO.CountNodeLogs(tx, req.Role, req.NodeClusterId, req.NodeId, req.ServerId, req.OriginId, req.DayFrom, req.DayTo, req.Keyword, req.Level, req.IsUnread, req.Tag) if err != nil { return nil, err } @@ -57,7 +57,7 @@ func (this *NodeLogService) ListNodeLogs(ctx context.Context, req *pb.ListNodeLo tx := this.NullTx() - logs, err := models.SharedNodeLogDAO.ListNodeLogs(tx, req.Role, req.NodeId, req.ServerId, req.OriginId, req.AllServers, req.DayFrom, req.DayTo, req.Keyword, req.Level, types.Int8(req.FixedState), req.IsUnread, req.Tag, req.Offset, req.Size) + logs, err := models.SharedNodeLogDAO.ListNodeLogs(tx, req.Role, req.NodeClusterId, req.NodeId, req.ServerId, req.OriginId, req.AllServers, req.DayFrom, req.DayTo, req.Keyword, req.Level, types.Int8(req.FixedState), req.IsUnread, req.Tag, req.Offset, req.Size) if err != nil { return nil, err }