Files
bdrp-server/app/main/api/internal/queue/agentMembershipExpireHandle.go
2026-04-29 11:38:59 +08:00

50 lines
1.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package queue
import (
"context"
"encoding/json"
"fmt"
"time"
"bdrp-server/app/main/api/internal/service"
"bdrp-server/app/main/api/internal/svc"
"bdrp-server/app/main/api/internal/types"
"github.com/hibiken/asynq"
"github.com/zeromicro/go-zero/core/logx"
)
type AgentMembershipExpireHandleHandler struct {
svcCtx *svc.ServiceContext
}
func NewAgentMembershipExpireHandleHandler(svcCtx *svc.ServiceContext) *AgentMembershipExpireHandleHandler {
return &AgentMembershipExpireHandleHandler{
svcCtx: svcCtx,
}
}
func (l *AgentMembershipExpireHandleHandler) ProcessTask(ctx context.Context, t *asynq.Task) error {
var payload types.MsgAgentMembershipExpireHandlePayload
if err := json.Unmarshal(t.Payload(), &payload); err != nil {
logx.Errorf("解析会员到期处理任务payload失败: %v", err)
return err
}
if payload.AgentID <= 0 {
return fmt.Errorf("无效代理ID: %d", payload.AgentID)
}
now := time.Now()
downgraded, err := service.DowngradeExpiredMembership(ctx, l.svcCtx.AgentModel, payload.AgentID, now)
if err != nil {
logx.Errorf("会员到期处理失败代理ID: %d, 错误: %v", payload.AgentID, err)
return err
}
if downgraded {
logx.Infof("会员到期处理成功代理ID: %d 已降级为普通代理", payload.AgentID)
} else {
logx.Infof("会员到期处理跳过代理ID: %d 当前无需降级", payload.AgentID)
}
return nil
}