mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	优化集群列表性能
This commit is contained in:
		
							
								
								
									
										2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							@@ -13,7 +13,7 @@ require (
 | 
				
			|||||||
	github.com/go-acme/lego/v4 v4.10.2
 | 
						github.com/go-acme/lego/v4 v4.10.2
 | 
				
			||||||
	github.com/go-sql-driver/mysql v1.7.0
 | 
						github.com/go-sql-driver/mysql v1.7.0
 | 
				
			||||||
	github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible
 | 
						github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible
 | 
				
			||||||
	github.com/iwind/TeaGo v0.0.0-20230304012706-c1f4a4e27470
 | 
						github.com/iwind/TeaGo v0.0.0-20230623080147-cd1e53b4915f
 | 
				
			||||||
	github.com/iwind/gosock v0.0.0-20220505115348-f88412125a62
 | 
						github.com/iwind/gosock v0.0.0-20220505115348-f88412125a62
 | 
				
			||||||
	github.com/miekg/dns v1.1.50
 | 
						github.com/miekg/dns v1.1.50
 | 
				
			||||||
	github.com/mozillazg/go-pinyin v0.18.0
 | 
						github.com/mozillazg/go-pinyin v0.18.0
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.sum
									
									
									
									
									
								
							@@ -83,6 +83,8 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO
 | 
				
			|||||||
github.com/iwind/TeaGo v0.0.0-20210411134150-ddf57e240c2f/go.mod h1:KU4mS7QNiZ7QWEuDBk1zw0/Q2LrAPZv3tycEFBsuUwc=
 | 
					github.com/iwind/TeaGo v0.0.0-20210411134150-ddf57e240c2f/go.mod h1:KU4mS7QNiZ7QWEuDBk1zw0/Q2LrAPZv3tycEFBsuUwc=
 | 
				
			||||||
github.com/iwind/TeaGo v0.0.0-20230304012706-c1f4a4e27470 h1:TuRxvKRv9PxKVijWOkUnZm5TeanQqWGUJyPx9u6cra4=
 | 
					github.com/iwind/TeaGo v0.0.0-20230304012706-c1f4a4e27470 h1:TuRxvKRv9PxKVijWOkUnZm5TeanQqWGUJyPx9u6cra4=
 | 
				
			||||||
github.com/iwind/TeaGo v0.0.0-20230304012706-c1f4a4e27470/go.mod h1:fi/Pq+/5m2HZoseM+39dMF57ANXRt6w4PkGu3NXPc5s=
 | 
					github.com/iwind/TeaGo v0.0.0-20230304012706-c1f4a4e27470/go.mod h1:fi/Pq+/5m2HZoseM+39dMF57ANXRt6w4PkGu3NXPc5s=
 | 
				
			||||||
 | 
					github.com/iwind/TeaGo v0.0.0-20230623080147-cd1e53b4915f h1:xo6XmXLtveKcwcZAXV6VMxkWNzy/2dStfHEnyowsGAE=
 | 
				
			||||||
 | 
					github.com/iwind/TeaGo v0.0.0-20230623080147-cd1e53b4915f/go.mod h1:fi/Pq+/5m2HZoseM+39dMF57ANXRt6w4PkGu3NXPc5s=
 | 
				
			||||||
github.com/iwind/gosock v0.0.0-20220505115348-f88412125a62 h1:HJH6RDheAY156DnIfJSD/bEvqyXzsZuE2gzs8PuUjoo=
 | 
					github.com/iwind/gosock v0.0.0-20220505115348-f88412125a62 h1:HJH6RDheAY156DnIfJSD/bEvqyXzsZuE2gzs8PuUjoo=
 | 
				
			||||||
github.com/iwind/gosock v0.0.0-20220505115348-f88412125a62/go.mod h1:H5Q7SXwbx3a97ecJkaS2sD77gspzE7HFUafBO0peEyA=
 | 
					github.com/iwind/gosock v0.0.0-20220505115348-f88412125a62/go.mod h1:H5Q7SXwbx3a97ecJkaS2sD77gspzE7HFUafBO0peEyA=
 | 
				
			||||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
 | 
					github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -262,19 +262,40 @@ func (this *NodeClusterDAO) CountAllEnabledClusters(tx *dbs.Tx, keyword string)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// ListEnabledClusters 列出单页集群
 | 
					// ListEnabledClusters 列出单页集群
 | 
				
			||||||
func (this *NodeClusterDAO) ListEnabledClusters(tx *dbs.Tx, keyword string, offset, size int64) (result []*NodeCluster, err error) {
 | 
					func (this *NodeClusterDAO) ListEnabledClusters(tx *dbs.Tx, keyword string, offset, size int64) (result []*NodeCluster, err error) {
 | 
				
			||||||
	query := this.Query(tx).
 | 
						var query = this.Query(tx).
 | 
				
			||||||
		State(NodeClusterStateEnabled)
 | 
							State(NodeClusterStateEnabled)
 | 
				
			||||||
	if len(keyword) > 0 {
 | 
						if len(keyword) > 0 {
 | 
				
			||||||
		query.Where("(name LIKE :keyword OR dnsName like :keyword OR (dnsDomainId > 0 AND dnsDomainId IN (SELECT id FROM "+dns.SharedDNSDomainDAO.Table+" WHERE name LIKE :keyword AND state=1)))").
 | 
							query.Where("(name LIKE :keyword OR dnsName like :keyword OR (dnsDomainId > 0 AND dnsDomainId IN (SELECT id FROM "+dns.SharedDNSDomainDAO.Table+" WHERE name LIKE :keyword AND state=1)))").
 | 
				
			||||||
			Param("keyword", dbutils.QuoteLike(keyword))
 | 
								Param("keyword", dbutils.QuoteLike(keyword))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	_, err = query.
 | 
						_, err = query.
 | 
				
			||||||
 | 
							Result(
 | 
				
			||||||
 | 
								NodeClusterFieldId,
 | 
				
			||||||
 | 
								NodeClusterFieldName,
 | 
				
			||||||
 | 
								NodeClusterFieldIsOn,
 | 
				
			||||||
 | 
								NodeClusterFieldIsPinned,
 | 
				
			||||||
 | 
								NodeClusterFieldInstallDir,
 | 
				
			||||||
 | 
								NodeClusterFieldHttpFirewallPolicyId,
 | 
				
			||||||
 | 
								NodeClusterFieldAdminId,
 | 
				
			||||||
 | 
								NodeClusterFieldIsOn,
 | 
				
			||||||
 | 
								NodeClusterFieldIsAD,
 | 
				
			||||||
 | 
								NodeClusterFieldUserId,
 | 
				
			||||||
 | 
								NodeClusterFieldDnsName,
 | 
				
			||||||
 | 
								NodeClusterFieldDnsDomainId,
 | 
				
			||||||
 | 
								NodeClusterFieldDns,
 | 
				
			||||||
 | 
								NodeClusterFieldCreatedAt,
 | 
				
			||||||
 | 
								NodeClusterFieldUniqueId,
 | 
				
			||||||
 | 
								NodeClusterFieldSecret,
 | 
				
			||||||
 | 
								NodeClusterFieldGrantId,
 | 
				
			||||||
 | 
								NodeClusterFieldTimeZone,
 | 
				
			||||||
 | 
							).
 | 
				
			||||||
		Offset(offset).
 | 
							Offset(offset).
 | 
				
			||||||
		Limit(size).
 | 
							Limit(size).
 | 
				
			||||||
		Slice(&result).
 | 
							Slice(&result).
 | 
				
			||||||
		Desc("isPinned").
 | 
							Desc("isPinned").
 | 
				
			||||||
		DescPk().
 | 
							DescPk().
 | 
				
			||||||
		FindAll()
 | 
							FindAll()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,49 @@ package models
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import "github.com/iwind/TeaGo/dbs"
 | 
					import "github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						NodeClusterFieldId                   dbs.FieldName = "id"                   // ID
 | 
				
			||||||
 | 
						NodeClusterFieldAdminId              dbs.FieldName = "adminId"              // 管理员ID
 | 
				
			||||||
 | 
						NodeClusterFieldUserId               dbs.FieldName = "userId"               // 用户ID
 | 
				
			||||||
 | 
						NodeClusterFieldIsOn                 dbs.FieldName = "isOn"                 // 是否启用
 | 
				
			||||||
 | 
						NodeClusterFieldName                 dbs.FieldName = "name"                 // 名称
 | 
				
			||||||
 | 
						NodeClusterFieldUseAllAPINodes       dbs.FieldName = "useAllAPINodes"       // 是否使用所有API节点
 | 
				
			||||||
 | 
						NodeClusterFieldApiNodes             dbs.FieldName = "apiNodes"             // 使用的API节点
 | 
				
			||||||
 | 
						NodeClusterFieldInstallDir           dbs.FieldName = "installDir"           // 安装目录
 | 
				
			||||||
 | 
						NodeClusterFieldOrder                dbs.FieldName = "order"                // 排序
 | 
				
			||||||
 | 
						NodeClusterFieldCreatedAt            dbs.FieldName = "createdAt"            // 创建时间
 | 
				
			||||||
 | 
						NodeClusterFieldGrantId              dbs.FieldName = "grantId"              // 默认认证方式
 | 
				
			||||||
 | 
						NodeClusterFieldSshParams            dbs.FieldName = "sshParams"            // SSH默认参数
 | 
				
			||||||
 | 
						NodeClusterFieldState                dbs.FieldName = "state"                // 状态
 | 
				
			||||||
 | 
						NodeClusterFieldAutoRegister         dbs.FieldName = "autoRegister"         // 是否开启自动注册
 | 
				
			||||||
 | 
						NodeClusterFieldUniqueId             dbs.FieldName = "uniqueId"             // 唯一ID
 | 
				
			||||||
 | 
						NodeClusterFieldSecret               dbs.FieldName = "secret"               // 密钥
 | 
				
			||||||
 | 
						NodeClusterFieldHealthCheck          dbs.FieldName = "healthCheck"          // 健康检查
 | 
				
			||||||
 | 
						NodeClusterFieldDnsName              dbs.FieldName = "dnsName"              // DNS名称
 | 
				
			||||||
 | 
						NodeClusterFieldDnsDomainId          dbs.FieldName = "dnsDomainId"          // 域名ID
 | 
				
			||||||
 | 
						NodeClusterFieldDns                  dbs.FieldName = "dns"                  // DNS配置
 | 
				
			||||||
 | 
						NodeClusterFieldToa                  dbs.FieldName = "toa"                  // TOA配置
 | 
				
			||||||
 | 
						NodeClusterFieldCachePolicyId        dbs.FieldName = "cachePolicyId"        // 缓存策略ID
 | 
				
			||||||
 | 
						NodeClusterFieldHttpFirewallPolicyId dbs.FieldName = "httpFirewallPolicyId" // WAF策略ID
 | 
				
			||||||
 | 
						NodeClusterFieldAccessLog            dbs.FieldName = "accessLog"            // 访问日志设置
 | 
				
			||||||
 | 
						NodeClusterFieldSystemServices       dbs.FieldName = "systemServices"       // 系统服务设置
 | 
				
			||||||
 | 
						NodeClusterFieldTimeZone             dbs.FieldName = "timeZone"             // 时区
 | 
				
			||||||
 | 
						NodeClusterFieldNodeMaxThreads       dbs.FieldName = "nodeMaxThreads"       // 节点最大线程数
 | 
				
			||||||
 | 
						NodeClusterFieldDdosProtection       dbs.FieldName = "ddosProtection"       // DDoS防护设置
 | 
				
			||||||
 | 
						NodeClusterFieldAutoOpenPorts        dbs.FieldName = "autoOpenPorts"        // 是否自动尝试开放端口
 | 
				
			||||||
 | 
						NodeClusterFieldIsPinned             dbs.FieldName = "isPinned"             // 是否置顶
 | 
				
			||||||
 | 
						NodeClusterFieldWebp                 dbs.FieldName = "webp"                 // WebP设置
 | 
				
			||||||
 | 
						NodeClusterFieldUam                  dbs.FieldName = "uam"                  // UAM设置
 | 
				
			||||||
 | 
						NodeClusterFieldClock                dbs.FieldName = "clock"                // 时钟配置
 | 
				
			||||||
 | 
						NodeClusterFieldGlobalServerConfig   dbs.FieldName = "globalServerConfig"   // 全局服务配置
 | 
				
			||||||
 | 
						NodeClusterFieldAutoRemoteStart      dbs.FieldName = "autoRemoteStart"      // 自动远程启动
 | 
				
			||||||
 | 
						NodeClusterFieldAutoInstallNftables  dbs.FieldName = "autoInstallNftables"  // 自动安装nftables
 | 
				
			||||||
 | 
						NodeClusterFieldIsAD                 dbs.FieldName = "isAD"                 // 是否为高防集群
 | 
				
			||||||
 | 
						NodeClusterFieldHttpPages            dbs.FieldName = "httpPages"            // 自定义页面设置
 | 
				
			||||||
 | 
						NodeClusterFieldCc                   dbs.FieldName = "cc"                   // CC设置
 | 
				
			||||||
 | 
						NodeClusterFieldHttp3                dbs.FieldName = "http3"                // HTTP3设置
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NodeCluster 节点集群
 | 
					// NodeCluster 节点集群
 | 
				
			||||||
type NodeCluster struct {
 | 
					type NodeCluster struct {
 | 
				
			||||||
	Id                   uint32   `field:"id"`                   // ID
 | 
						Id                   uint32   `field:"id"`                   // ID
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user