Documentation
¶
Index ¶
- Constants
- func RegisterHandlers(mux *asynq.ServeMux, db *ent.Client, rdb *redis.Client, queue *asynq.Client, ...)
- type ActivateOrderHandler
- func (h *ActivateOrderHandler) NewPurchase(ctx context.Context, orderInfo *ent.ProxyOrder) error
- func (h *ActivateOrderHandler) ProcessTask(ctx context.Context, task *asynq.Task) error
- func (h *ActivateOrderHandler) Recharge(ctx context.Context, orderInfo *ent.ProxyOrder) error
- func (h *ActivateOrderHandler) RedemptionActivate(ctx context.Context, orderInfo *ent.ProxyOrder) error
- func (h *ActivateOrderHandler) Renewal(ctx context.Context, orderInfo *ent.ProxyOrder) error
- func (h *ActivateOrderHandler) ResetTraffic(ctx context.Context, orderInfo *ent.ProxyOrder) error
- type BatchEmailHandler
- type CheckSubscriptionHandler
- type CloseOrderHandler
- type EmailErrorInfo
- type EmailSystemConfig
- type InviteSystemConfig
- type MobileSystemConfig
- type QuotaTaskHandler
- type RecalculateGroupHandler
- type ResetTrafficHandler
- type SendEmailHandler
- type SendEmailSiteConfig
- type SendEmailSystemConfig
- type SendSmsHandler
- type ServerDataHandler
- type ServerTrafficData
- type ServerTrafficStat
- type SiteConfig
- type TotalTrafficStat
- type TrafficStatHandler
- type TrafficStatisticsHandler
- type TrafficTotal
- type UserTrafficData
- type UserTrafficStat
Constants ¶
const ( OrderTypeSubscribe = 1 // 新购订阅 OrderTypeRenewal = 2 // 续费订阅 OrderTypeResetTraffic = 3 // 流量重置 OrderTypeRecharge = 4 // 余额充值 OrderTypeRedemption = 5 // 兑换码激活 )
订单类型常量
const ( OrderStatusPending = 1 // 待支付 OrderStatusPaid = 2 // 已支付,待激活 OrderStatusClose = 3 // 已关闭 OrderStatusFailed = 4 // 激活失败 OrderStatusFinished = 5 // 激活成功 )
订单状态常量
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
NewQuotaTaskHandler 创建配额任务处理器
func (*QuotaTaskHandler) ProcessTask ¶
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 ¶
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 ¶
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 ¶
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 ¶
ProcessTask processes SMS sending task - implements asynq.Handler interface
type ServerDataHandler ¶
type ServerDataHandler struct {
// contains filtered or unexported fields
}
ServerDataHandler 服务器数据统计处理器 用于统计服务器和用户的流量排行榜数据,并缓存到Redis
func NewServerDataHandler ¶
NewServerDataHandler creates a new server data handler
func (*ServerDataHandler) ProcessTask ¶
ProcessTask processes the server data statistics task
type ServerTrafficData ¶
ServerTrafficData 服务器流量数据
type ServerTrafficStat ¶
ServerTrafficStat 服务器流量统计
type SiteConfig ¶
type SiteConfig struct {
SiteName string `json:"site_name"`
}
SiteConfig holds site configuration from ProxySystem table
type TotalTrafficStat ¶
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 ¶
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 ¶
type UserTrafficData ¶
UserTrafficData 用户流量数据
Source Files
¶
- activate_order_handler.go
- check_subscription_handler.go
- close_order_handler.go
- config_loader.go
- email_handler.go
- group_recalculator.go
- legacy_server_cache.go
- quota_handler.go
- recalculate_group_handler.go
- reset_traffic_handler.go
- routes.go
- send_email_handler.go
- send_sms_handler.go
- server_data_handler.go
- traffic_stat_handler.go
- traffic_statistics_handler.go