handler

package
v1.0.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 26, 2026 License: MIT Imports: 42 Imported by: 0

Documentation

Index

Constants

View Source
const (
	OrderTypeSubscribe    = 1 // 新购订阅
	OrderTypeRenewal      = 2 // 续费订阅
	OrderTypeResetTraffic = 3 // 流量重置
	OrderTypeRecharge     = 4 // 余额充值
	OrderTypeRedemption   = 5 // 兑换码激活
)

订单类型常量

View Source
const (
	OrderStatusPending  = 1 // 待支付
	OrderStatusPaid     = 2 // 已支付,待激活
	OrderStatusClose    = 3 // 已关闭
	OrderStatusFailed   = 4 // 激活失败
	OrderStatusFinished = 5 // 激活成功
)

订单状态常量

View Source
const (
	NotifyTypePurchase     = "purchase"
	NotifyTypeRenewal      = "renewal"
	NotifyTypeResetTraffic = "reset_traffic"
	NotifyTypeRecharge     = "recharge"
)

通知类型常量

Variables

This section is empty.

Functions

func RegisterHandlers

func RegisterHandlers(mux *asynq.ServeMux, db *ent.Client, rdb *redis.Client, queue *asynq.Client, config *conf.Application, cacheService *service.CacheService, groupRecalculator groupRecalculator, logger log.Logger)

RegisterHandlers 注册所有任务处理器 所有handler从数据库根据租户ID获取配置,不再依赖全局配置

Types

type ActivateOrderHandler

type ActivateOrderHandler struct {
	// contains filtered or unexported fields
}

ActivateOrderHandler 激活订单处理器 ⚠️ 完整复刻原项目逻辑 (activateOrderLogic.go)

func NewActivateOrderHandler

func NewActivateOrderHandler(db *ent.Client, rdb *redis.Client, groupRecalculator groupRecalculator, logger log.Logger) *ActivateOrderHandler

NewActivateOrderHandler 创建激活订单处理器

func (*ActivateOrderHandler) NewPurchase

func (h *ActivateOrderHandler) NewPurchase(ctx context.Context, orderInfo *ent.ProxyOrder) error

NewPurchase 处理新购订单 包括用户创建、订阅设置、佣金处理、缓存更新和通知发送

func (*ActivateOrderHandler) ProcessTask

func (h *ActivateOrderHandler) ProcessTask(ctx context.Context, task *asynq.Task) error

ProcessTask 处理任务 - 主入口 完整复刻原项目逻辑 (activateOrderLogic.go:68-86) 处理已支付订单的激活流程,包括验证、根据订单类型处理、后处理

func (*ActivateOrderHandler) Recharge

func (h *ActivateOrderHandler) Recharge(ctx context.Context, orderInfo *ent.ProxyOrder) error

Recharge 处理余额充值订单 完整复刻原项目逻辑 (activateOrderLogic.go:627-674) 包括余额更新、交易日志记录和通知发送

func (*ActivateOrderHandler) RedemptionActivate

func (h *ActivateOrderHandler) RedemptionActivate(ctx context.Context, orderInfo *ent.ProxyOrder) error

RedemptionActivate 处理兑换码激活订单 完整复刻原项目逻辑 (activateOrderLogic.go:899-1130) 包括订阅创建或延期、兑换码使用次数更新、兑换记录创建

func (*ActivateOrderHandler) Renewal

func (h *ActivateOrderHandler) Renewal(ctx context.Context, orderInfo *ent.ProxyOrder) error

Renewal 处理订阅续费 完整复刻原项目逻辑 (activateOrderLogic.go:472-514) 包括订阅延期、流量重置(如果配置)、佣金处理和通知发送

func (*ActivateOrderHandler) ResetTraffic

func (h *ActivateOrderHandler) ResetTraffic(ctx context.Context, orderInfo *ent.ProxyOrder) error

ResetTraffic 处理现有订阅的流量配额重置 复刻原项目 line 564-625

type BatchEmailHandler

type BatchEmailHandler struct {
	// contains filtered or unexported fields
}

BatchEmailHandler 批量邮件任务处理器

func NewBatchEmailHandler

func NewBatchEmailHandler(db *ent.Client, logger log.Logger) *BatchEmailHandler

NewBatchEmailHandler 创建批量邮件任务处理器 所有配置从数据库根据租户ID获取

func (*BatchEmailHandler) ProcessTask

func (h *BatchEmailHandler) ProcessTask(ctx context.Context, task *asynq.Task) error

ProcessTask 处理批量邮件任务 - 实现 asynq.Handler 接口

type CheckSubscriptionHandler

type CheckSubscriptionHandler struct {
	// contains filtered or unexported fields
}

CheckSubscriptionHandler 检查订阅状态处理器 定时任务:检查流量用尽和过期的订阅 ⚠️ 完整复刻原项目逻辑(checkSubscriptionLogic.go)

func NewCheckSubscriptionHandler

func NewCheckSubscriptionHandler(db *ent.Client, rdb *redis.Client, queue *asynq.Client, logger log.Logger) *CheckSubscriptionHandler

NewCheckSubscriptionHandler 创建检查订阅处理器

func (*CheckSubscriptionHandler) ProcessTask

func (h *CheckSubscriptionHandler) ProcessTask(ctx context.Context, task *asynq.Task) error

ProcessTask 处理任务 1. 检查流量用尽的订阅 (upload+download >= traffic) 2. 检查过期的订阅 (expire_time < now) 复刻原项目逻辑:server-master/queue/logic/subscription/checkSubscriptionLogic.go

type CloseOrderHandler

type CloseOrderHandler struct {
	// contains filtered or unexported fields
}

CloseOrderHandler 关闭超时订单处理器 完整复刻原项目逻辑:server-master/queue/logic/order/deferCloseOrderLogic.go

func NewCloseOrderHandler

func NewCloseOrderHandler(db *ent.Client, logger log.Logger, cacheService *service.CacheService) *CloseOrderHandler

NewCloseOrderHandler 创建关闭订单处理器

func (*CloseOrderHandler) ProcessTask

func (h *CloseOrderHandler) ProcessTask(ctx context.Context, task *asynq.Task) error

ProcessTask 处理任务 关闭超时未支付的订单(15分钟后) 完整复刻原项目逻辑:server-master/queue/logic/order/deferCloseOrderLogic.go:26-47

type EmailErrorInfo

type EmailErrorInfo struct {
	Error string `json:"error"`
	Email string `json:"email"`
	Time  int64  `json:"time"`
}

EmailErrorInfo stores email sending error information

type EmailSystemConfig

type EmailSystemConfig struct {
	Platform       string `json:"platform"`
	PlatformConfig string `json:"platform_config"`
}

EmailSystemConfig holds email configuration from ProxySystem table

type InviteSystemConfig

type InviteSystemConfig struct {
	ReferralPercentage int  `json:"referral_percentage"` // 佣金比例
	OnlyFirstPurchase  bool `json:"only_first_purchase"` // 是否仅首购有佣金
}

InviteSystemConfig 邀请配置结构

type MobileSystemConfig

type MobileSystemConfig struct {
	Platform       string `json:"platform"`
	PlatformConfig string `json:"platform_config"`
}

MobileSystemConfig holds mobile/SMS configuration from ProxySystem table

type QuotaTaskHandler

type QuotaTaskHandler struct {
	// contains filtered or unexported fields
}

QuotaTaskHandler 配额任务处理器

func NewQuotaTaskHandler

func NewQuotaTaskHandler(db *ent.Client, rdb *redis.Client, logger log.Logger) *QuotaTaskHandler

NewQuotaTaskHandler 创建配额任务处理器

func (*QuotaTaskHandler) ProcessTask

func (h *QuotaTaskHandler) ProcessTask(ctx context.Context, task *asynq.Task) error

ProcessTask 处理配额任务 复刻原项目 queue/logic/task/quotaLogic.go 的可观察行为。

type RecalculateGroupHandler

type RecalculateGroupHandler struct {
	// contains filtered or unexported fields
}

RecalculateGroupHandler 分组重算任务处理器

func NewRecalculateGroupHandler

func NewRecalculateGroupHandler(db *ent.Client, groupRecalculator groupRecalculator, logger log.Logger) *RecalculateGroupHandler

NewRecalculateGroupHandler 创建分组重算任务处理器

func (*RecalculateGroupHandler) ProcessTask

func (h *RecalculateGroupHandler) ProcessTask(ctx context.Context, t *asynq.Task) error

ProcessTask 处理分组重算任务

type ResetTrafficHandler

type ResetTrafficHandler struct {
	// contains filtered or unexported fields
}

ResetTrafficHandler handles traffic reset logic for different subscription cycles Supports three reset modes: - reset_cycle = 1: Reset on 1st of every month - reset_cycle = 2: Reset monthly based on subscription start date - reset_cycle = 3: Reset yearly based on subscription start date 完整复刻原项目逻辑:server-master/queue/logic/traffic/resetTrafficLogic.go

func NewResetTrafficHandler

func NewResetTrafficHandler(db *ent.Client, rdb *redis.Client, queue *asynq.Client, logger log.Logger) *ResetTrafficHandler

NewResetTrafficHandler 创建流量重置处理器

func (*ResetTrafficHandler) ProcessTask

func (h *ResetTrafficHandler) ProcessTask(ctx context.Context, _ *asynq.Task) error

ProcessTask executes the traffic reset task for all subscription types with enhanced retry mechanism 完整复刻原项目 line 58-181

type SendEmailHandler

type SendEmailHandler struct {
	// contains filtered or unexported fields
}

SendEmailHandler handles immediate email sending tasks

func NewSendEmailHandler

func NewSendEmailHandler(db *ent.Client, logger log.Logger) *SendEmailHandler

NewSendEmailHandler creates a new email sending handler.

func (*SendEmailHandler) ProcessTask

func (h *SendEmailHandler) ProcessTask(ctx context.Context, task *asynq.Task) error

ProcessTask processes email sending task - implements asynq.Handler interface

type SendEmailSiteConfig

type SendEmailSiteConfig struct {
	SiteName string `json:"site_name"`
}

SendEmailSiteConfig holds site configuration

type SendEmailSystemConfig

type SendEmailSystemConfig struct {
	Platform                   string `json:"platform"`
	PlatformConfig             string `json:"platform_config"`
	VerifyEmailTemplate        string `json:"verify_email_template"`
	ExpirationEmailTemplate    string `json:"expiration_email_template"`
	MaintenanceEmailTemplate   string `json:"maintenance_email_template"`
	TrafficExceedEmailTemplate string `json:"traffic_exceed_email_template"`
}

SendEmailSystemConfig holds email configuration for verification emails from ProxySystem table

type SendSmsHandler

type SendSmsHandler struct {
	// contains filtered or unexported fields
}

SendSmsHandler handles immediate SMS sending tasks

func NewSendSmsHandler

func NewSendSmsHandler(db *ent.Client, logger log.Logger) *SendSmsHandler

NewSendSmsHandler creates a new SMS sending handler.

func (*SendSmsHandler) ProcessTask

func (h *SendSmsHandler) ProcessTask(ctx context.Context, task *asynq.Task) error

ProcessTask processes SMS sending task - implements asynq.Handler interface

type ServerDataHandler

type ServerDataHandler struct {
	// contains filtered or unexported fields
}

ServerDataHandler 服务器数据统计处理器 用于统计服务器和用户的流量排行榜数据,并缓存到Redis

func NewServerDataHandler

func NewServerDataHandler(db *ent.Client, rdb *redis.Client, logger log.Logger) *ServerDataHandler

NewServerDataHandler creates a new server data handler

func (*ServerDataHandler) ProcessTask

func (h *ServerDataHandler) ProcessTask(ctx context.Context, t *asynq.Task) error

ProcessTask processes the server data statistics task

type ServerTrafficData

type ServerTrafficData struct {
	ServerID int64
	Name     string
	Upload   int64
	Download int64
}

ServerTrafficData 服务器流量数据

type ServerTrafficStat

type ServerTrafficStat struct {
	ServerID int64
	Upload   int64
	Download int64
	Total    int64
}

ServerTrafficStat 服务器流量统计

type SiteConfig

type SiteConfig struct {
	SiteName string `json:"site_name"`
}

SiteConfig holds site configuration from ProxySystem table

type TotalTrafficStat

type TotalTrafficStat struct {
	Upload   int64
	Download int64
	Total    int64
}

TotalTrafficStat 总流量统计

type TrafficStatHandler

type TrafficStatHandler struct {
	// contains filtered or unexported fields
}

TrafficStatHandler 流量统计处理器 用于每日流量统计,生成用户和服务器流量排行榜

func NewTrafficStatHandler

func NewTrafficStatHandler(db *ent.Client, rdb *redis.Client, logger log.Logger) *TrafficStatHandler

NewTrafficStatHandler creates a new traffic statistics handler

func (*TrafficStatHandler) ProcessTask

func (h *TrafficStatHandler) ProcessTask(ctx context.Context, t *asynq.Task) error

ProcessTask processes the traffic statistics task

type TrafficStatisticsHandler

type TrafficStatisticsHandler struct {
	// contains filtered or unexported fields
}

func NewTrafficStatisticsHandler

func NewTrafficStatisticsHandler(db *ent.Client, logger log.Logger) *TrafficStatisticsHandler

func (*TrafficStatisticsHandler) ProcessTask

func (h *TrafficStatisticsHandler) ProcessTask(ctx context.Context, t *asynq.Task) error

type TrafficTotal

type TrafficTotal struct {
	Upload   int64
	Download int64
}

TrafficTotal 流量总计

type UserTrafficData

type UserTrafficData struct {
	UserID   int64
	Upload   int64
	Download int64
}

UserTrafficData 用户流量数据

type UserTrafficStat

type UserTrafficStat struct {
	SubscribeID int64
	UserID      int64
	Upload      int64
	Download    int64
	Total       int64
}

UserTrafficStat 用户流量统计

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL