From be7cdcd4a64299d637b34899b95565d41747fe8e Mon Sep 17 00:00:00 2001 From: Chang lue Tsen Date: Thu, 12 Jun 2025 23:57:06 -0400 Subject: [PATCH] fix(node): enqueue task for GetNodeCountry only if city or country is empty --- .../logic/admin/server/createNodeLogic.go | 37 ++++++++-------- .../logic/admin/server/updateNodeLogic.go | 42 ++++++++++--------- 2 files changed, 42 insertions(+), 37 deletions(-) diff --git a/internal/logic/admin/server/createNodeLogic.go b/internal/logic/admin/server/createNodeLogic.go index 5108274..c25f9e1 100644 --- a/internal/logic/admin/server/createNodeLogic.go +++ b/internal/logic/admin/server/createNodeLogic.go @@ -104,23 +104,26 @@ func (l *CreateNodeLogic) CreateNode(req *types.CreateNodeRequest) error { return errors.Wrapf(xerr.NewErrCode(xerr.DatabaseInsertError), "create server error: %v", err) } - // Marshal the task payload - payload, err := json.Marshal(queue.GetNodeCountry{ - Protocol: serverInfo.Protocol, - ServerAddr: serverInfo.ServerAddr, - }) - if err != nil { - l.Errorw("[GetNodeCountry]: Marshal Error", logger.Field("error", err.Error())) - return errors.Wrap(xerr.NewErrCode(xerr.ERROR), "Failed to marshal task payload") + if req.City == "" || req.Country == "" { + // Marshal the task payload + payload, err := json.Marshal(queue.GetNodeCountry{ + Protocol: serverInfo.Protocol, + ServerAddr: serverInfo.ServerAddr, + }) + if err != nil { + l.Errorw("[GetNodeCountry]: Marshal Error", logger.Field("error", err.Error())) + return errors.Wrap(xerr.NewErrCode(xerr.ERROR), "Failed to marshal task payload") + } + // Create a queue task + task := asynq.NewTask(queue.ForthwithGetCountry, payload) + // Enqueue the task + taskInfo, err := l.svcCtx.Queue.Enqueue(task) + if err != nil { + l.Errorw("[GetNodeCountry]: Enqueue Error", logger.Field("error", err.Error()), logger.Field("payload", string(payload))) + return errors.Wrap(xerr.NewErrCode(xerr.ERROR), "Failed to enqueue task") + } + l.Infow("[GetNodeCountry]: Enqueue Success", logger.Field("taskID", taskInfo.ID), logger.Field("payload", string(payload))) } - // Create a queue task - task := asynq.NewTask(queue.ForthwithGetCountry, payload) - // Enqueue the task - taskInfo, err := l.svcCtx.Queue.Enqueue(task) - if err != nil { - l.Errorw("[GetNodeCountry]: Enqueue Error", logger.Field("error", err.Error()), logger.Field("payload", string(payload))) - return errors.Wrap(xerr.NewErrCode(xerr.ERROR), "Failed to enqueue task") - } - l.Infow("[GetNodeCountry]: Enqueue Success", logger.Field("taskID", taskInfo.ID), logger.Field("payload", string(payload))) + return nil } diff --git a/internal/logic/admin/server/updateNodeLogic.go b/internal/logic/admin/server/updateNodeLogic.go index 13fa176..f34ebe4 100644 --- a/internal/logic/admin/server/updateNodeLogic.go +++ b/internal/logic/admin/server/updateNodeLogic.go @@ -5,15 +5,15 @@ import ( "encoding/json" "strings" - "github.com/perfect-panel/server/pkg/device" - "github.com/hibiken/asynq" + "github.com/perfect-panel/server/pkg/device" + queue "github.com/perfect-panel/server/queue/types" + "github.com/perfect-panel/server/internal/svc" "github.com/perfect-panel/server/internal/types" "github.com/perfect-panel/server/pkg/logger" "github.com/perfect-panel/server/pkg/tool" "github.com/perfect-panel/server/pkg/xerr" - queue "github.com/perfect-panel/server/queue/types" "github.com/pkg/errors" ) @@ -113,24 +113,26 @@ func (l *UpdateNodeLogic) UpdateNode(req *types.UpdateNodeRequest) error { return errors.Wrapf(xerr.NewErrCode(xerr.DatabaseInsertError), "create server error: %v", err) } - // Marshal the task payload - payload, err := json.Marshal(queue.GetNodeCountry{ - Protocol: nodeInfo.Protocol, - ServerAddr: nodeInfo.ServerAddr, - }) - if err != nil { - l.Errorw("[GetNodeCountry]: Marshal Error", logger.Field("error", err.Error())) - return errors.Wrap(xerr.NewErrCode(xerr.ERROR), "Failed to marshal task payload") + if req.City == "" || req.Country == "" { + // Marshal the task payload + payload, err := json.Marshal(queue.GetNodeCountry{ + Protocol: nodeInfo.Protocol, + ServerAddr: nodeInfo.ServerAddr, + }) + if err != nil { + l.Errorw("[GetNodeCountry]: Marshal Error", logger.Field("error", err.Error())) + return errors.Wrap(xerr.NewErrCode(xerr.ERROR), "Failed to marshal task payload") + } + // Create a queue task + task := asynq.NewTask(queue.ForthwithGetCountry, payload) + // Enqueue the task + taskInfo, err := l.svcCtx.Queue.Enqueue(task) + if err != nil { + l.Errorw("[GetNodeCountry]: Enqueue Error", logger.Field("error", err.Error()), logger.Field("payload", string(payload))) + return errors.Wrap(xerr.NewErrCode(xerr.ERROR), "Failed to enqueue task") + } + l.Infow("[GetNodeCountry]: Enqueue Success", logger.Field("taskID", taskInfo.ID), logger.Field("payload", string(payload))) } - // Create a queue task - task := asynq.NewTask(queue.ForthwithGetCountry, payload) - // Enqueue the task - taskInfo, err := l.svcCtx.Queue.Enqueue(task) - if err != nil { - l.Errorw("[GetNodeCountry]: Enqueue Error", logger.Field("error", err.Error()), logger.Field("payload", string(payload))) - return errors.Wrap(xerr.NewErrCode(xerr.ERROR), "Failed to enqueue task") - } - l.Infow("[GetNodeCountry]: Enqueue Success", logger.Field("taskID", taskInfo.ID), logger.Field("payload", string(payload))) l.svcCtx.DeviceManager.Broadcast(device.SubscribeUpdate) return nil }