mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-18 11:50:26 +08:00
增加查看单个服务附近服务API
This commit is contained in:
@@ -1419,6 +1419,82 @@ func (this *ServerDAO) FindLatestServers(tx *dbs.Tx, size int64) (result []*Serv
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FindNearbyServersInGroup 查找所属分组附近的服务
|
||||||
|
func (this *ServerDAO) FindNearbyServersInGroup(tx *dbs.Tx, groupId int64, serverId int64, size int64) (result []*Server, err error) {
|
||||||
|
// 之前的
|
||||||
|
ones, err := SharedServerDAO.Query(tx).
|
||||||
|
Result("id", "name", "isOn").
|
||||||
|
State(ServerStateEnabled).
|
||||||
|
Where("JSON_CONTAINS(groupIds, :groupId)").
|
||||||
|
Param("groupId", numberutils.FormatInt64(groupId)).
|
||||||
|
Gte("id", serverId).
|
||||||
|
Limit(size).
|
||||||
|
AscPk().
|
||||||
|
FindAll()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
lists.Reverse(ones)
|
||||||
|
for _, one := range ones {
|
||||||
|
result = append(result, one.(*Server))
|
||||||
|
}
|
||||||
|
|
||||||
|
// 之后的
|
||||||
|
ones, err = SharedServerDAO.Query(tx).
|
||||||
|
Result("id", "name", "isOn").
|
||||||
|
State(ServerStateEnabled).
|
||||||
|
Where("JSON_CONTAINS(groupIds, :groupId)").
|
||||||
|
Param("groupId", numberutils.FormatInt64(groupId)).
|
||||||
|
Lt("id", serverId).
|
||||||
|
Limit(size).
|
||||||
|
DescPk().
|
||||||
|
FindAll()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
for _, one := range ones {
|
||||||
|
result = append(result, one.(*Server))
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindNearbyServersInCluster 查找所属集群附近的服务
|
||||||
|
func (this *ServerDAO) FindNearbyServersInCluster(tx *dbs.Tx, clusterId int64, serverId int64, size int64) (result []*Server, err error) {
|
||||||
|
// 之前的
|
||||||
|
ones, err := SharedServerDAO.Query(tx).
|
||||||
|
Result("id", "name", "isOn").
|
||||||
|
State(ServerStateEnabled).
|
||||||
|
Attr("clusterId", clusterId).
|
||||||
|
Gte("id", serverId).
|
||||||
|
Limit(size).
|
||||||
|
AscPk().
|
||||||
|
FindAll()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
lists.Reverse(ones)
|
||||||
|
for _, one := range ones {
|
||||||
|
result = append(result, one.(*Server))
|
||||||
|
}
|
||||||
|
|
||||||
|
// 之后的
|
||||||
|
ones, err = SharedServerDAO.Query(tx).
|
||||||
|
Result("id", "name", "isOn").
|
||||||
|
State(ServerStateEnabled).
|
||||||
|
Attr("clusterId", clusterId).
|
||||||
|
Lt("id", serverId).
|
||||||
|
Limit(size).
|
||||||
|
DescPk().
|
||||||
|
FindAll()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
for _, one := range ones {
|
||||||
|
result = append(result, one.(*Server))
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// FindFirstHTTPOrHTTPSPortWithClusterId 获取集群中第一个HTTP或者HTTPS端口
|
// FindFirstHTTPOrHTTPSPortWithClusterId 获取集群中第一个HTTP或者HTTPS端口
|
||||||
func (this *ServerDAO) FindFirstHTTPOrHTTPSPortWithClusterId(tx *dbs.Tx, clusterId int64) (int, error) {
|
func (this *ServerDAO) FindFirstHTTPOrHTTPSPortWithClusterId(tx *dbs.Tx, clusterId int64) (int, error) {
|
||||||
one, _, err := this.Query(tx).
|
one, _, err := this.Query(tx).
|
||||||
|
|||||||
@@ -1434,3 +1434,90 @@ func (this *ServerService) FindLatestServers(ctx context.Context, req *pb.FindLa
|
|||||||
}
|
}
|
||||||
return &pb.FindLatestServersResponse{Servers: pbServers}, nil
|
return &pb.FindLatestServersResponse{Servers: pbServers}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FindNearbyServers 查找某个服务附近的服务
|
||||||
|
func (this *ServerService) FindNearbyServers(ctx context.Context, req *pb.FindNearbyServersRequest) (*pb.FindNearbyServersResponse, error) {
|
||||||
|
_, err := this.ValidateAdmin(ctx, 0)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var tx = this.NullTx()
|
||||||
|
|
||||||
|
// 查询服务的Group
|
||||||
|
groupIds, err := models.SharedServerDAO.FindServerGroupIds(tx, req.ServerId)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if len(groupIds) > 0 {
|
||||||
|
var pbGroups = []*pb.FindNearbyServersResponse_GroupInfo{}
|
||||||
|
for _, groupId := range groupIds {
|
||||||
|
group, err := models.SharedServerGroupDAO.FindEnabledServerGroup(tx, groupId)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if group == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
var pbGroup = &pb.FindNearbyServersResponse_GroupInfo{
|
||||||
|
Name: group.Name,
|
||||||
|
}
|
||||||
|
servers, err := models.SharedServerDAO.FindNearbyServersInGroup(tx, groupId, req.ServerId, 10)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
for _, server := range servers {
|
||||||
|
pbGroup.Servers = append(pbGroup.Servers, &pb.Server{
|
||||||
|
Id: int64(server.Id),
|
||||||
|
Name: server.Name,
|
||||||
|
IsOn: server.IsOn == 1,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
pbGroups = append(pbGroups, pbGroup)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(pbGroups) > 0 {
|
||||||
|
return &pb.FindNearbyServersResponse{
|
||||||
|
Scope: "group",
|
||||||
|
Groups: pbGroups,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 集群
|
||||||
|
clusterId, err := models.SharedServerDAO.FindServerClusterId(tx, req.ServerId)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
servers, err := models.SharedServerDAO.FindNearbyServersInCluster(tx, clusterId, req.ServerId, 10)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if len(servers) == 0 {
|
||||||
|
return &pb.FindNearbyServersResponse{
|
||||||
|
Scope: "cluster",
|
||||||
|
Groups: nil,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
clusterName, err := models.SharedNodeClusterDAO.FindNodeClusterName(tx, clusterId)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var pbGroup = &pb.FindNearbyServersResponse_GroupInfo{
|
||||||
|
Name: clusterName,
|
||||||
|
}
|
||||||
|
for _, server := range servers {
|
||||||
|
pbGroup.Servers = append(pbGroup.Servers, &pb.Server{
|
||||||
|
Id: int64(server.Id),
|
||||||
|
Name: server.Name,
|
||||||
|
IsOn: server.IsOn == 1,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pb.FindNearbyServersResponse{
|
||||||
|
Scope: "group",
|
||||||
|
Groups: []*pb.FindNearbyServersResponse_GroupInfo{pbGroup},
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user