mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 07:50:25 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			37 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
 | 
						|
//go:build !plus
 | 
						|
 | 
						|
package models
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
 | 
						|
	"github.com/iwind/TeaGo/dbs"
 | 
						|
)
 | 
						|
 | 
						|
func (this *NodeLoginDAO) FindFrequentGrantIds(tx *dbs.Tx, nodeClusterId int64, nsClusterId int64) ([]int64, error) {
 | 
						|
	var query = this.Query(tx).
 | 
						|
		Attr("state", NodeLoginStateEnabled).
 | 
						|
		Result("JSON_EXTRACT(params, '$.grantId') as `grantId`", "COUNT(*) AS c").
 | 
						|
		Having("grantId>0").
 | 
						|
		Desc("c").
 | 
						|
		Limit(3).
 | 
						|
		Group("grantId")
 | 
						|
	if nodeClusterId > 0 {
 | 
						|
		query.Attr("role", nodeconfigs.NodeRoleNode)
 | 
						|
		query.Where("(nodeId IN (SELECT id FROM "+SharedNodeDAO.Table+" WHERE state=1 AND clusterId=:clusterId))").
 | 
						|
			Param("clusterId", nodeClusterId)
 | 
						|
	} else if nsClusterId > 0 {
 | 
						|
		return nil, nil
 | 
						|
	}
 | 
						|
	ones, _, err := query.
 | 
						|
		FindOnes()
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	var grantIds = []int64{}
 | 
						|
	for _, one := range ones {
 | 
						|
		grantIds = append(grantIds, one.GetInt64("grantId"))
 | 
						|
	}
 | 
						|
	return grantIds, nil
 | 
						|
}
 |