소스 검색

fix(repository): 优化错误处理和日志记录

- 修改了 TCP 和 Web 转发功能中的错误处理逻辑
- 优化了 WAF 任务中的日志记录,增加了更多详细信息
-调整了 UDP 转发功能中的条件判断
-重命名了 SynchronousInSeconds常量,提高了代码可读性
fusu 2 주 전
부모
커밋
585238012d

+ 1 - 1
internal/repository/tcpforwarding.go

@@ -170,7 +170,7 @@ func (r *tcpforwardingRepository) GetTcpForwardingIpsByID(ctx context.Context, t
 
 	if err != nil {
 		if errors.Is(err, mongo.ErrNoDocuments) {
-			return nil, fmt.Errorf("记录不存在")
+			return nil, nil
 		}
 		return nil, fmt.Errorf("查询MongoDB失败: %w", err)
 	}

+ 1 - 1
internal/repository/webforwarding.go

@@ -203,7 +203,7 @@ func (r *webForwardingRepository) GetWebForwardingIpsByID(ctx context.Context, w
 
 	if err != nil {
 		if errors.Is(err, mongo.ErrNoDocuments) {
-			return nil, fmt.Errorf("记录不存在")
+			return nil, nil
 		}
 		// 其他错误
 		return nil, fmt.Errorf("查询MongoDB失败: %w", err)

+ 8 - 3
internal/service/tcpforwarding.go

@@ -403,10 +403,15 @@ func (s *tcpforwardingService) DeleteTcpForwarding(ctx context.Context, req v1.D
 		if err != nil {
 			return err
 		}
-		ips, err = s.wafformatter.WashDeleteWafIp(ctx, ipData.BackendList)
-		if err != nil {
-			return err
+
+		if ipData != nil && len(ipData.BackendList) > 0 {
+			ips, err = s.wafformatter.WashDeleteWafIp(ctx, ipData.BackendList)
+			if err != nil {
+				return err
+			}
 		}
+
+
 		if len(ips) > 0 {
 			ipsToDelist, err := s.wafformatter.WashDelIps(ctx, ips)
 			if err != nil {

+ 1 - 1
internal/service/udpforwarding.go

@@ -402,7 +402,7 @@ func (s *udpForWardingService) DeleteUdpForwarding(ctx context.Context, req v1.D
 		}
 		var ips []string
 
-		if len(ipData.BackendList) > 0 {
+		if ipData != nil && len(ipData.BackendList) > 0 {
 			ips, err = s.wafformatter.WashDeleteWafIp(ctx, ipData.BackendList)
 			if err != nil {
 				return err

+ 1 - 1
internal/service/webforwarding.go

@@ -858,7 +858,7 @@ func (s *webForwardingService) DeleteWebForwarding(ctx context.Context, req v1.D
 			return err
 		}
 		var ips []string
-		if len(ipData.BackendList) > 0 {
+		if ipData != nil && len(ipData.BackendList) > 0 {
 			for _, v := range ipData.BackendList {
 				ip, _, err := net.SplitHostPort(v.Addr)
 				if err != nil {

+ 6 - 6
internal/task/waf.go

@@ -77,7 +77,7 @@ type wafTask struct {
 }
 
 const (
-	OneDaysInSeconds   = 1 * 24 * 60 * 60
+	SynchronousInSeconds   = 7 * 24 * 60 * 60
 	SevenDaysInSeconds = 7 * 24 * 60 * 60
 )
 
@@ -259,7 +259,7 @@ func (t *wafTask) findStaleWAFPlans(ctx context.Context) ([]model.GlobalLimit, e
 // SynchronizationTime 同步即将到期(1天内)的套餐时间
 func (t *wafTask) SynchronizationTime(ctx context.Context) error {
 	taskName := "同步到期时间"
-	wafLimits, err := t.globalLimitRep.GetGlobalLimitAlmostExpired(ctx, OneDaysInSeconds)
+	wafLimits, err := t.globalLimitRep.GetGlobalLimitAlmostExpired(ctx, SynchronousInSeconds)
 	if err != nil {
 		return t.wrapTaskError(taskName, "查找失败", err)
 	}
@@ -273,7 +273,7 @@ func (t *wafTask) SynchronizationTime(ctx context.Context) error {
 	}
 
 	if len(renewalRequests) > 0 {
-		t.logger.Info("发现记录需要同步到期时间", zap.String("task", taskName), zap.Int("数量", len(renewalRequests)))
+		t.logger.Info("发现记录需要同步到期时间", zap.String("task", taskName), zap.Int("数量", len(renewalRequests)), zap.Any("套餐内容", renewalRequests))
 		return t.wrapTaskError(taskName, "执行同步", t.executeRenewalActions(ctx, renewalRequests))
 	}
 	return nil
@@ -326,7 +326,7 @@ func (t *wafTask) StopPlan(ctx context.Context) error {
 	}
 
 	// 3. 执行停止操作
-	t.logger.Info("开始关闭到期的WAF服务", zap.String("task", taskName), zap.Int("数量", len(plansToClose)))
+	t.logger.Info("开始关闭到期的WAF服务", zap.String("task", taskName), zap.Int("数量", len(plansToClose)), zap.Any("套餐内容", renewalRequests))
 	var hostIds []int
 	for _, limit := range plansToClose {
 		hostIds = append(hostIds, limit.HostId)
@@ -377,7 +377,7 @@ func (t *wafTask) _recoverPlans(ctx context.Context, limitsToCheck []model.Globa
 		return nil
 	}
 
-	t.logger.Info("开始恢复已续费的WAF服务", zap.String("task", taskName), zap.Int("数量", len(finalRecoveryRequests)))
+	t.logger.Info("开始恢复已续费的WAF服务", zap.String("task", taskName), zap.Int("数量", len(finalRecoveryRequests)), zap.Any("套餐内容", finalRecoveryRequests))
 
 	var hostIdsToRecover []int
 	for _, req := range finalRecoveryRequests {
@@ -482,7 +482,7 @@ func (t *wafTask) CleanUpStaleRecords(ctx context.Context) error {
 	}
 
 	// 5. 并发执行清理操作
-	t.logger.Info("开始清理长期未续费的WAF记录", zap.String("task", taskName), zap.Int("数量", len(plansToClean)))
+	t.logger.Info("开始清理长期未续费的WAF记录", zap.String("task", taskName), zap.Int("数量", len(plansToClean)), zap.Any("套餐内容", plansToClean))
 
 	var wg sync.WaitGroup
 	errChan := make(chan error, len(plansToClean))