diff --git a/internal/model/node/model.go b/internal/model/node/model.go index ea5b72b..b5ab3ca 100644 --- a/internal/model/node/model.go +++ b/internal/model/node/model.go @@ -195,25 +195,27 @@ func InSet(field string, values []string) func(db *gorm.DB) *gorm.DB { func (m *customServerModel) CountNodesByIdsAndTags(ctx context.Context, nodeIds []int64, tags []string) (int64, error) { var count int64 query := m.WithContext(ctx).Model(&Node{}).Where("enabled = ?", true) - + // 如果有节点ID或标签,添加相应的查询条件 if len(nodeIds) > 0 || len(tags) > 0 { subQuery := m.WithContext(ctx).Model(&Node{}).Where("enabled = ?", true) - + if len(nodeIds) > 0 && len(tags) > 0 { // 节点ID和标签都存在时,使用OR条件 - subQuery = subQuery.Where("id IN ? OR ?", nodeIds, InSet("tag", tags)) + subQuery = subQuery.Where("id IN ? OR ?", nodeIds, InSet("tags", tags)) } else if len(nodeIds) > 0 { // 只有节点ID subQuery = subQuery.Where("id IN ?", nodeIds) } else { // 只有标签 - subQuery = subQuery.Scopes(InSet("tag", tags)) + subQuery = subQuery.Scopes(InSet("tags", tags)) } - + query = subQuery } - + // 打印sql + fmt.Println(query.ToSQL(func(tx *gorm.DB) *gorm.DB { return tx })) + err := query.Count(&count).Error return count, err }