mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 07:50:25 +08:00 
			
		
		
		
	优化消息发送相关代码/删除监控相关代码
This commit is contained in:
		@@ -78,7 +78,7 @@ func (this *APINodeService) DeleteAPINode(ctx context.Context, req *pb.DeleteAPI
 | 
			
		||||
 | 
			
		||||
// FindAllEnabledAPINodes 列出所有可用API节点
 | 
			
		||||
func (this *APINodeService) FindAllEnabledAPINodes(ctx context.Context, req *pb.FindAllEnabledAPINodesRequest) (*pb.FindAllEnabledAPINodesResponse, error) {
 | 
			
		||||
	_, _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin, rpcutils.UserTypeUser, rpcutils.UserTypeNode, rpcutils.UserTypeMonitor, rpcutils.UserTypeDNS, rpcutils.UserTypeAuthority)
 | 
			
		||||
	_, _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin, rpcutils.UserTypeUser, rpcutils.UserTypeNode, rpcutils.UserTypeDNS, rpcutils.UserTypeAuthority)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -95,12 +95,6 @@ func (this *BaseService) ValidateUserNode(ctx context.Context, canRest bool) (us
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ValidateMonitorNode 校验监控节点
 | 
			
		||||
func (this *BaseService) ValidateMonitorNode(ctx context.Context) (nodeId int64, err error) {
 | 
			
		||||
	_, _, nodeId, err = rpcutils.ValidateRequest(ctx, rpcutils.UserTypeMonitor)
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ValidateAuthorityNode 校验认证节点
 | 
			
		||||
func (this *BaseService) ValidateAuthorityNode(ctx context.Context) (nodeId int64, err error) {
 | 
			
		||||
	_, _, nodeId, err = rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAuthority)
 | 
			
		||||
@@ -111,7 +105,7 @@ func (this *BaseService) ValidateAuthorityNode(ctx context.Context) (nodeId int6
 | 
			
		||||
func (this *BaseService) ValidateNodeId(ctx context.Context, roles ...rpcutils.UserType) (role rpcutils.UserType, nodeIntId int64, err error) {
 | 
			
		||||
	// 默认包含大部分节点
 | 
			
		||||
	if len(roles) == 0 {
 | 
			
		||||
		roles = []rpcutils.UserType{rpcutils.UserTypeNode, rpcutils.UserTypeCluster, rpcutils.UserTypeAdmin, rpcutils.UserTypeUser, rpcutils.UserTypeDNS, rpcutils.UserTypeReport, rpcutils.UserTypeMonitor, rpcutils.UserTypeLog, rpcutils.UserTypeAPI}
 | 
			
		||||
		roles = []rpcutils.UserType{rpcutils.UserTypeNode, rpcutils.UserTypeCluster, rpcutils.UserTypeAdmin, rpcutils.UserTypeUser, rpcutils.UserTypeDNS, rpcutils.UserTypeReport, rpcutils.UserTypeLog, rpcutils.UserTypeAPI}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ctx == nil {
 | 
			
		||||
@@ -195,8 +189,6 @@ func (this *BaseService) ValidateNodeId(ctx context.Context, roles ...rpcutils.U
 | 
			
		||||
		nodeIntId, err = models.SharedUserNodeDAO.FindEnabledUserNodeIdWithUniqueId(nil, nodeId)
 | 
			
		||||
	case rpcutils.UserTypeAdmin:
 | 
			
		||||
		nodeIntId = 0
 | 
			
		||||
	case rpcutils.UserTypeMonitor:
 | 
			
		||||
		nodeIntId, err = models.SharedMonitorNodeDAO.FindEnabledMonitorNodeIdWithUniqueId(nil, nodeId)
 | 
			
		||||
	case rpcutils.UserTypeDNS:
 | 
			
		||||
		nodeIntId, err = models.SharedNSNodeDAO.FindEnabledNodeIdWithUniqueId(nil, nodeId)
 | 
			
		||||
	case rpcutils.UserTypeReport:
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,6 @@ import (
 | 
			
		||||
	"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeAPI/internal/utils"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
			
		||||
	"github.com/iwind/TeaGo/maps"
 | 
			
		||||
	"github.com/iwind/TeaGo/types"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -23,146 +22,13 @@ func (this *MessageTaskService) CreateMessageTask(ctx context.Context, req *pb.C
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var tx = this.NullTx()
 | 
			
		||||
	taskId, err := models.SharedMessageTaskDAO.CreateMessageTask(tx, req.RecipientId, req.InstanceId, req.User, req.Subject, req.Body, req.IsPrimary)
 | 
			
		||||
	taskId, err := models.SharedMessageTaskDAO.CreateMessageTask(tx, req.MessageRecipientId, req.MessageMediaInstanceId, req.User, req.Subject, req.Body, req.IsPrimary)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return &pb.CreateMessageTaskResponse{MessageTaskId: taskId}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FindSendingMessageTasks 查找要发送的任务
 | 
			
		||||
func (this *MessageTaskService) FindSendingMessageTasks(ctx context.Context, req *pb.FindSendingMessageTasksRequest) (*pb.FindSendingMessageTasksResponse, error) {
 | 
			
		||||
	_, err := this.ValidateMonitorNode(ctx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var tx = this.NullTx()
 | 
			
		||||
	var cacheMap = utils.NewCacheMap()
 | 
			
		||||
	tasks, err := models.SharedMessageTaskDAO.FindSendingMessageTasks(tx, req.Size)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	pbTasks := []*pb.MessageTask{}
 | 
			
		||||
	for _, task := range tasks {
 | 
			
		||||
		var pbRecipient *pb.MessageRecipient
 | 
			
		||||
		if task.RecipientId > 0 {
 | 
			
		||||
			recipient, err := models.SharedMessageRecipientDAO.FindEnabledMessageRecipient(tx, int64(task.RecipientId), cacheMap)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			if recipient == nil || !recipient.IsOn {
 | 
			
		||||
				// 如果发送人已经删除或者禁用,则删除此消息
 | 
			
		||||
				err = models.SharedMessageTaskDAO.DisableMessageTask(tx, int64(task.Id))
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return nil, err
 | 
			
		||||
				}
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// 媒介
 | 
			
		||||
			instance, err := models.SharedMessageMediaInstanceDAO.FindEnabledMessageMediaInstance(tx, int64(recipient.InstanceId), cacheMap)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			if instance == nil || !instance.IsOn {
 | 
			
		||||
				// 如果媒介实例已经删除或者禁用,则删除此消息
 | 
			
		||||
				err = models.SharedMessageTaskDAO.DisableMessageTask(tx, int64(task.Id))
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return nil, err
 | 
			
		||||
				}
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			pbRecipient = &pb.MessageRecipient{
 | 
			
		||||
				Id:   int64(recipient.Id),
 | 
			
		||||
				User: recipient.User,
 | 
			
		||||
				MessageMediaInstance: &pb.MessageMediaInstance{
 | 
			
		||||
					Id: int64(instance.Id),
 | 
			
		||||
					MessageMedia: &pb.MessageMedia{
 | 
			
		||||
						Type: instance.MediaType,
 | 
			
		||||
					},
 | 
			
		||||
					ParamsJSON: instance.Params,
 | 
			
		||||
					RateJSON:   instance.Rate,
 | 
			
		||||
				},
 | 
			
		||||
			}
 | 
			
		||||
		} else { // 没有指定既定的接收人
 | 
			
		||||
			// 媒介
 | 
			
		||||
			instance, err := models.SharedMessageMediaInstanceDAO.FindEnabledMessageMediaInstance(tx, int64(task.InstanceId), cacheMap)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
			if instance == nil || !instance.IsOn {
 | 
			
		||||
				// 如果媒介实例已经删除或者禁用,则删除此消息
 | 
			
		||||
				err = models.SharedMessageTaskDAO.DisableMessageTask(tx, int64(task.Id))
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return nil, err
 | 
			
		||||
				}
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			pbRecipient = &pb.MessageRecipient{
 | 
			
		||||
				Id: 0,
 | 
			
		||||
				MessageMediaInstance: &pb.MessageMediaInstance{
 | 
			
		||||
					Id: int64(instance.Id),
 | 
			
		||||
					MessageMedia: &pb.MessageMedia{
 | 
			
		||||
						Type: instance.MediaType,
 | 
			
		||||
					},
 | 
			
		||||
					ParamsJSON: instance.Params,
 | 
			
		||||
					RateJSON:   instance.Rate,
 | 
			
		||||
				},
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		pbTasks = append(pbTasks, &pb.MessageTask{
 | 
			
		||||
			Id:               int64(task.Id),
 | 
			
		||||
			MessageRecipient: pbRecipient,
 | 
			
		||||
			User:             task.User,
 | 
			
		||||
			Subject:          task.Subject,
 | 
			
		||||
			Body:             task.Body,
 | 
			
		||||
			CreatedAt:        int64(task.CreatedAt),
 | 
			
		||||
			Status:           types.Int32(task.Status),
 | 
			
		||||
			SentAt:           int64(task.SentAt),
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	return &pb.FindSendingMessageTasksResponse{MessageTasks: pbTasks}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// UpdateMessageTaskStatus 修改任务状态
 | 
			
		||||
func (this *MessageTaskService) UpdateMessageTaskStatus(ctx context.Context, req *pb.UpdateMessageTaskStatusRequest) (*pb.RPCSuccess, error) {
 | 
			
		||||
	_, err := this.ValidateMonitorNode(ctx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var tx = this.NullTx()
 | 
			
		||||
	resultJSON := []byte{}
 | 
			
		||||
	if req.Result != nil {
 | 
			
		||||
		resultJSON, err = json.Marshal(maps.Map{
 | 
			
		||||
			"isOk":     req.Result.IsOk,
 | 
			
		||||
			"error":    req.Result.Error,
 | 
			
		||||
			"response": req.Result.Response,
 | 
			
		||||
		})
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err = models.SharedMessageTaskDAO.UpdateMessageTaskStatus(tx, req.MessageTaskId, int(req.Status), resultJSON)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 创建发送记录
 | 
			
		||||
	if (int(req.Status) == models.MessageTaskStatusSuccess || int(req.Status) == models.MessageTaskStatusFailed) && req.Result != nil {
 | 
			
		||||
		err = models.SharedMessageTaskLogDAO.CreateLog(tx, req.MessageTaskId, req.Result.IsOk, req.Result.Error, req.Result.Response)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return this.Success()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DeleteMessageTask 删除消息任务
 | 
			
		||||
func (this *MessageTaskService) DeleteMessageTask(ctx context.Context, req *pb.DeleteMessageTaskRequest) (*pb.RPCSuccess, error) {
 | 
			
		||||
	_, err := this.ValidateAdmin(ctx)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14
									
								
								internal/rpc/services/service_message_task_ext.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								internal/rpc/services/service_message_task_ext.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
 | 
			
		||||
//go:build !plus
 | 
			
		||||
 | 
			
		||||
package services
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// SendMessageTask 发送某个消息任务
 | 
			
		||||
func (this *MessageTaskService) SendMessageTask(ctx context.Context, req *pb.SendMessageTaskRequest) (*pb.SendMessageTaskResponse, error) {
 | 
			
		||||
	return nil, this.NotImplementedYet()
 | 
			
		||||
}
 | 
			
		||||
@@ -1,233 +0,0 @@
 | 
			
		||||
package services
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeAPI/internal/errors"
 | 
			
		||||
	rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
			
		||||
	"google.golang.org/grpc/metadata"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type MonitorNodeService struct {
 | 
			
		||||
	BaseService
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CreateMonitorNode 创建监控节点
 | 
			
		||||
func (this *MonitorNodeService) CreateMonitorNode(ctx context.Context, req *pb.CreateMonitorNodeRequest) (*pb.CreateMonitorNodeResponse, error) {
 | 
			
		||||
	_, err := this.ValidateAdmin(ctx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var tx = this.NullTx()
 | 
			
		||||
 | 
			
		||||
	nodeId, err := models.SharedMonitorNodeDAO.CreateMonitorNode(tx, req.Name, req.Description, req.IsOn)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &pb.CreateMonitorNodeResponse{MonitorNodeId: nodeId}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// UpdateMonitorNode 修改监控节点
 | 
			
		||||
func (this *MonitorNodeService) UpdateMonitorNode(ctx context.Context, req *pb.UpdateMonitorNodeRequest) (*pb.RPCSuccess, error) {
 | 
			
		||||
	_, err := this.ValidateAdmin(ctx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var tx = this.NullTx()
 | 
			
		||||
 | 
			
		||||
	err = models.SharedMonitorNodeDAO.UpdateMonitorNode(tx, req.MonitorNodeId, req.Name, req.Description, req.IsOn)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return this.Success()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DeleteMonitorNode 删除监控节点
 | 
			
		||||
func (this *MonitorNodeService) DeleteMonitorNode(ctx context.Context, req *pb.DeleteMonitorNodeRequest) (*pb.RPCSuccess, error) {
 | 
			
		||||
	_, err := this.ValidateAdmin(ctx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var tx = this.NullTx()
 | 
			
		||||
 | 
			
		||||
	err = models.SharedMonitorNodeDAO.DisableMonitorNode(tx, req.MonitorNodeId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return this.Success()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FindAllEnabledMonitorNodes 列出所有可用监控节点
 | 
			
		||||
func (this *MonitorNodeService) FindAllEnabledMonitorNodes(ctx context.Context, req *pb.FindAllEnabledMonitorNodesRequest) (*pb.FindAllEnabledMonitorNodesResponse, error) {
 | 
			
		||||
	_, err := this.ValidateAdmin(ctx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var tx = this.NullTx()
 | 
			
		||||
 | 
			
		||||
	nodes, err := models.SharedMonitorNodeDAO.FindAllEnabledMonitorNodes(tx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	result := []*pb.MonitorNode{}
 | 
			
		||||
	for _, node := range nodes {
 | 
			
		||||
		result = append(result, &pb.MonitorNode{
 | 
			
		||||
			Id:          int64(node.Id),
 | 
			
		||||
			IsOn:        node.IsOn,
 | 
			
		||||
			UniqueId:    node.UniqueId,
 | 
			
		||||
			Secret:      node.Secret,
 | 
			
		||||
			Name:        node.Name,
 | 
			
		||||
			Description: node.Description,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &pb.FindAllEnabledMonitorNodesResponse{MonitorNodes: result}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CountAllEnabledMonitorNodes 计算监控节点数量
 | 
			
		||||
func (this *MonitorNodeService) CountAllEnabledMonitorNodes(ctx context.Context, req *pb.CountAllEnabledMonitorNodesRequest) (*pb.RPCCountResponse, error) {
 | 
			
		||||
	_, err := this.ValidateAdmin(ctx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var tx = this.NullTx()
 | 
			
		||||
 | 
			
		||||
	count, err := models.SharedMonitorNodeDAO.CountAllEnabledMonitorNodes(tx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return this.SuccessCount(count)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ListEnabledMonitorNodes 列出单页的监控节点
 | 
			
		||||
func (this *MonitorNodeService) ListEnabledMonitorNodes(ctx context.Context, req *pb.ListEnabledMonitorNodesRequest) (*pb.ListEnabledMonitorNodesResponse, error) {
 | 
			
		||||
	_, err := this.ValidateAdmin(ctx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var tx = this.NullTx()
 | 
			
		||||
 | 
			
		||||
	nodes, err := models.SharedMonitorNodeDAO.ListEnabledMonitorNodes(tx, req.Offset, req.Size)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	result := []*pb.MonitorNode{}
 | 
			
		||||
	for _, node := range nodes {
 | 
			
		||||
		result = append(result, &pb.MonitorNode{
 | 
			
		||||
			Id:          int64(node.Id),
 | 
			
		||||
			IsOn:        node.IsOn,
 | 
			
		||||
			UniqueId:    node.UniqueId,
 | 
			
		||||
			Secret:      node.Secret,
 | 
			
		||||
			Name:        node.Name,
 | 
			
		||||
			Description: node.Description,
 | 
			
		||||
			StatusJSON:  node.Status,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &pb.ListEnabledMonitorNodesResponse{MonitorNodes: result}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FindEnabledMonitorNode 根据ID查找节点
 | 
			
		||||
func (this *MonitorNodeService) FindEnabledMonitorNode(ctx context.Context, req *pb.FindEnabledMonitorNodeRequest) (*pb.FindEnabledMonitorNodeResponse, error) {
 | 
			
		||||
	_, err := this.ValidateAdmin(ctx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var tx = this.NullTx()
 | 
			
		||||
 | 
			
		||||
	node, err := models.SharedMonitorNodeDAO.FindEnabledMonitorNode(tx, req.MonitorNodeId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if node == nil {
 | 
			
		||||
		return &pb.FindEnabledMonitorNodeResponse{MonitorNode: nil}, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	result := &pb.MonitorNode{
 | 
			
		||||
		Id:          int64(node.Id),
 | 
			
		||||
		IsOn:        node.IsOn,
 | 
			
		||||
		UniqueId:    node.UniqueId,
 | 
			
		||||
		Secret:      node.Secret,
 | 
			
		||||
		Name:        node.Name,
 | 
			
		||||
		Description: node.Description,
 | 
			
		||||
	}
 | 
			
		||||
	return &pb.FindEnabledMonitorNodeResponse{MonitorNode: result}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FindCurrentMonitorNode 获取当前监控节点的版本
 | 
			
		||||
func (this *MonitorNodeService) FindCurrentMonitorNode(ctx context.Context, req *pb.FindCurrentMonitorNodeRequest) (*pb.FindCurrentMonitorNodeResponse, error) {
 | 
			
		||||
	_, err := this.ValidateMonitorNode(ctx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var tx = this.NullTx()
 | 
			
		||||
 | 
			
		||||
	md, ok := metadata.FromIncomingContext(ctx)
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return nil, errors.New("context: need 'nodeId'")
 | 
			
		||||
	}
 | 
			
		||||
	nodeIds := md.Get("nodeid")
 | 
			
		||||
	if len(nodeIds) == 0 {
 | 
			
		||||
		return nil, errors.New("invalid 'nodeId'")
 | 
			
		||||
	}
 | 
			
		||||
	nodeId := nodeIds[0]
 | 
			
		||||
	node, err := models.SharedMonitorNodeDAO.FindEnabledMonitorNodeWithUniqueId(tx, nodeId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if node == nil {
 | 
			
		||||
		return &pb.FindCurrentMonitorNodeResponse{MonitorNode: nil}, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	result := &pb.MonitorNode{
 | 
			
		||||
		Id:          int64(node.Id),
 | 
			
		||||
		IsOn:        node.IsOn,
 | 
			
		||||
		UniqueId:    node.UniqueId,
 | 
			
		||||
		Secret:      node.Secret,
 | 
			
		||||
		Name:        node.Name,
 | 
			
		||||
		Description: node.Description,
 | 
			
		||||
	}
 | 
			
		||||
	return &pb.FindCurrentMonitorNodeResponse{MonitorNode: result}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// UpdateMonitorNodeStatus 更新节点状态
 | 
			
		||||
func (this *MonitorNodeService) UpdateMonitorNodeStatus(ctx context.Context, req *pb.UpdateMonitorNodeStatusRequest) (*pb.RPCSuccess, error) {
 | 
			
		||||
	// 校验节点
 | 
			
		||||
	_, nodeId, err := this.ValidateNodeId(ctx, rpcutils.UserTypeMonitor)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if req.MonitorNodeId > 0 {
 | 
			
		||||
		nodeId = req.MonitorNodeId
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if nodeId <= 0 {
 | 
			
		||||
		return nil, errors.New("'nodeId' should be greater than 0")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var tx = this.NullTx()
 | 
			
		||||
 | 
			
		||||
	err = models.SharedMonitorNodeDAO.UpdateNodeStatus(tx, nodeId, req.StatusJSON)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return this.Success()
 | 
			
		||||
}
 | 
			
		||||
@@ -14,12 +14,6 @@ type SysLockerService struct {
 | 
			
		||||
// SysLockerLock 获得锁
 | 
			
		||||
func (this *SysLockerService) SysLockerLock(ctx context.Context, req *pb.SysLockerLockRequest) (*pb.SysLockerLockResponse, error) {
 | 
			
		||||
	_, userId, err := this.ValidateAdminAndUser(ctx, false)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		_, err = this.ValidateMonitorNode(ctx)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	key := req.Key
 | 
			
		||||
	if userId > 0 {
 | 
			
		||||
@@ -44,12 +38,6 @@ func (this *SysLockerService) SysLockerLock(ctx context.Context, req *pb.SysLock
 | 
			
		||||
// SysLockerUnlock 释放锁
 | 
			
		||||
func (this *SysLockerService) SysLockerUnlock(ctx context.Context, req *pb.SysLockerUnlockRequest) (*pb.RPCSuccess, error) {
 | 
			
		||||
	_, userId, err := this.ValidateAdminAndUser(ctx, false)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		_, err = this.ValidateMonitorNode(ctx)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	key := req.Key
 | 
			
		||||
	if userId > 0 {
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,6 @@ const (
 | 
			
		||||
	UserTypeProvider  = "provider"
 | 
			
		||||
	UserTypeNode      = "node"
 | 
			
		||||
	UserTypeCluster   = "cluster"
 | 
			
		||||
	UserTypeMonitor   = "monitor"
 | 
			
		||||
	UserTypeStat      = "stat"
 | 
			
		||||
	UserTypeDNS       = "dns"
 | 
			
		||||
	UserTypeLog       = "log"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user