diff --git a/internal/task/polling_handler.go b/internal/task/polling_handler.go index aa36636..deee55a 100644 --- a/internal/task/polling_handler.go +++ b/internal/task/polling_handler.go @@ -30,6 +30,7 @@ type PollingTaskPayload struct { type PollingHandler struct { db *gorm.DB redis *redis.Client + asynqClient *asynq.Client // 用于提交 Asynq 任务(如首次实名激活) gatewayClient *gateway.Client iotCardStore *postgres.IotCardStore concurrencyStore *postgres.PollingConcurrencyConfigStore @@ -44,6 +45,7 @@ type PollingHandler struct { func NewPollingHandler( db *gorm.DB, redis *redis.Client, + asynqClient *asynq.Client, gatewayClient *gateway.Client, usageService *packagepkg.UsageService, logger *zap.Logger, @@ -51,6 +53,7 @@ func NewPollingHandler( return &PollingHandler{ db: db, redis: redis, + asynqClient: asynqClient, gatewayClient: gatewayClient, iotCardStore: postgres.NewIotCardStore(db, redis), concurrencyStore: postgres.NewPollingConcurrencyConfigStore(db), @@ -1097,11 +1100,8 @@ func (h *PollingHandler) triggerFirstRealnameActivation(ctx context.Context, car asynq.Queue(constants.QueueDefault), ) - // 这里需要访问 Asynq Client,暂时使用 Redis 队列 - // 实际应该通过依赖注入 asynq.Client - activationKey := constants.RedisPollingManualQueueKey(constants.TaskTypePackageFirstActivation) - if err := h.redis.RPush(ctx, activationKey, string(payloadBytes)).Err(); err != nil { - h.logger.Warn("提交激活任务失败", + if _, err := h.asynqClient.EnqueueContext(ctx, task); err != nil { + h.logger.Warn("提交首次实名激活任务失败", zap.Uint("package_usage_id", pkg.ID), zap.Error(err)) continue @@ -1110,8 +1110,5 @@ func (h *PollingHandler) triggerFirstRealnameActivation(ctx context.Context, car h.logger.Info("已提交首次实名激活任务", zap.Uint("package_usage_id", pkg.ID), zap.Uint("card_id", cardID)) - - // 避免未使用变量警告 - _ = task } } diff --git a/pkg/queue/handler.go b/pkg/queue/handler.go index c051787..4db1162 100644 --- a/pkg/queue/handler.go +++ b/pkg/queue/handler.go @@ -151,6 +151,7 @@ func (h *Handler) registerPollingHandlers() { pollingHandler := task.NewPollingHandler( h.db, h.redis, + h.asynqClient, h.gatewayClient, h.workerResult.Services.UsageService, h.logger,