From 1d91fcc5424f0f9b532717579e83a5fb1c83a94e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Sat, 31 Oct 2020 15:21:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=88=97=E8=A1=A8=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/server_dao.go | 34 ++++++++++++++----- internal/rpc/services/service_server.go | 43 +++++++++++++------------ 2 files changed, 48 insertions(+), 29 deletions(-) diff --git a/internal/db/models/server_dao.go b/internal/db/models/server_dao.go index 101bd9b2..2973d497 100644 --- a/internal/db/models/server_dao.go +++ b/internal/db/models/server_dao.go @@ -436,21 +436,39 @@ func (this *ServerDAO) UpdateServerReverseProxy(serverId int64, config []byte) e } // 计算所有可用服务数量 -func (this *ServerDAO) CountAllEnabledServers() (int64, error) { - return this.Query(). - State(ServerStateEnabled). - Count() +func (this *ServerDAO) CountAllEnabledServersMatch(groupId int64, keyword string) (int64, error) { + query := this.Query(). + State(ServerStateEnabled) + if groupId > 0 { + query.Where("JSON_CONTAINS(groupIds, :groupId)"). + Param("groupId", numberutils.FormatInt64(groupId)) + } + if len(keyword) > 0 { + query.Where("(name LIKE :keyword OR serverNames LIKE :keyword)"). + Param("keyword", "%"+keyword+"%") + } + return query.Count() } // 列出单页的服务 -func (this *ServerDAO) ListEnabledServers(offset int64, size int64) (result []*Server, err error) { - _, err = this.Query(). +func (this *ServerDAO) ListEnabledServersMatch(offset int64, size int64, groupId int64, keyword string) (result []*Server, err error) { + query := this.Query(). State(ServerStateEnabled). Offset(offset). Limit(size). DescPk(). - Slice(&result). - FindAll() + Slice(&result) + + if groupId > 0 { + query.Where("JSON_CONTAINS(groupIds, :groupId)"). + Param("groupId", numberutils.FormatInt64(groupId)) + } + if len(keyword) > 0 { + query.Where("(name LIKE :keyword OR serverNames LIKE :keyword)"). + Param("keyword", "%"+keyword+"%") + } + + _, err = query.FindAll() return } diff --git a/internal/rpc/services/service_server.go b/internal/rpc/services/service_server.go index 721529a8..f9f05147 100644 --- a/internal/rpc/services/service_server.go +++ b/internal/rpc/services/service_server.go @@ -348,28 +348,28 @@ func (this *ServerService) UpdateServerNames(ctx context.Context, req *pb.Update } // 计算服务数量 -func (this *ServerService) CountAllEnabledServers(ctx context.Context, req *pb.CountAllEnabledServersRequest) (*pb.CountAllEnabledServersResponse, error) { +func (this *ServerService) CountAllEnabledServersMatch(ctx context.Context, req *pb.CountAllEnabledServersMatchRequest) (*pb.CountAllEnabledServersMatchResponse, error) { // 校验请求 _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) if err != nil { return nil, err } - count, err := models.SharedServerDAO.CountAllEnabledServers() + count, err := models.SharedServerDAO.CountAllEnabledServersMatch(req.GroupId, req.Keyword) if err != nil { return nil, err } - return &pb.CountAllEnabledServersResponse{Count: count}, nil + return &pb.CountAllEnabledServersMatchResponse{Count: count}, nil } // 列出单页服务 -func (this *ServerService) ListEnabledServers(ctx context.Context, req *pb.ListEnabledServersRequest) (*pb.ListEnabledServersResponse, error) { +func (this *ServerService) ListEnabledServersMatch(ctx context.Context, req *pb.ListEnabledServersMatchRequest) (*pb.ListEnabledServersMatchResponse, error) { // 校验请求 _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) if err != nil { return nil, err } - servers, err := models.SharedServerDAO.ListEnabledServers(req.Offset, req.Size) + servers, err := models.SharedServerDAO.ListEnabledServersMatch(req.Offset, req.Size, req.GroupId, req.Keyword) if err != nil { return nil, err } @@ -404,21 +404,22 @@ func (this *ServerService) ListEnabledServers(ctx context.Context, req *pb.ListE } result = append(result, &pb.Server{ - Id: int64(server.Id), - IsOn: server.IsOn == 1, - Type: server.Type, - Config: []byte(server.Config), - Name: server.Name, - Description: server.Description, - HttpJSON: []byte(server.Http), - HttpsJSON: []byte(server.Https), - TcpJSON: []byte(server.Tcp), - TlsJSON: []byte(server.Tls), - UnixJSON: []byte(server.Unix), - UdpJSON: []byte(server.Udp), - IncludeNodes: []byte(server.IncludeNodes), - ExcludeNodes: []byte(server.ExcludeNodes), - CreatedAt: int64(server.CreatedAt), + Id: int64(server.Id), + IsOn: server.IsOn == 1, + Type: server.Type, + Config: []byte(server.Config), + Name: server.Name, + Description: server.Description, + HttpJSON: []byte(server.Http), + HttpsJSON: []byte(server.Https), + TcpJSON: []byte(server.Tcp), + TlsJSON: []byte(server.Tls), + UnixJSON: []byte(server.Unix), + UdpJSON: []byte(server.Udp), + IncludeNodes: []byte(server.IncludeNodes), + ExcludeNodes: []byte(server.ExcludeNodes), + ServerNamesJON: []byte(server.ServerNames), + CreatedAt: int64(server.CreatedAt), Cluster: &pb.NodeCluster{ Id: int64(server.ClusterId), Name: clusterName, @@ -427,7 +428,7 @@ func (this *ServerService) ListEnabledServers(ctx context.Context, req *pb.ListE }) } - return &pb.ListEnabledServersResponse{Servers: result}, nil + return &pb.ListEnabledServersMatchResponse{Servers: result}, nil } // 禁用某服务