package payment import ( "context" "github.com/hibiken/asynq" agentrecharge "github.com/break/junhong_cmp_fiber/internal/application/agentrecharge" "github.com/break/junhong_cmp_fiber/pkg/auditcontext" "github.com/break/junhong_cmp_fiber/pkg/constants" "github.com/break/junhong_cmp_fiber/pkg/errors" ) // AgentRechargeRecoveryTaskHandler 执行代理在线充值支付恢复任务。 type AgentRechargeRecoveryTaskHandler struct { service *agentrecharge.RecoverOnlinePaymentService } // NewAgentRechargeRecoveryTaskHandler 创建代理在线充值支付恢复任务 Handler。 func NewAgentRechargeRecoveryTaskHandler(service *agentrecharge.RecoverOnlinePaymentService) *AgentRechargeRecoveryTaskHandler { return &AgentRechargeRecoveryTaskHandler{service: service} } // Handle 扫描长期待支付记录并复用原支付单号收敛渠道状态。 func (h *AgentRechargeRecoveryTaskHandler) Handle(ctx context.Context, task *asynq.Task) error { if h == nil || h.service == nil { return errors.New(errors.CodeServiceUnavailable, "代理在线充值支付恢复任务未配置") } taskType := constants.TaskTypeAgentRechargeRecovery if task != nil && task.Type() != "" { taskType = task.Type() } ctx = auditcontext.With(ctx, auditcontext.Context{ ActorKind: constants.AuditActorScheduledJob, ActorID: taskType, ActorName: "代理在线充值支付恢复计划任务", Source: constants.AuditSourceScheduler, }) _, err := h.service.ProcessBatch(ctx) return err }