54 lines
1.7 KiB
Go
54 lines
1.7 KiB
Go
package queue
|
||
|
||
import (
|
||
"context"
|
||
"fmt"
|
||
"ycc-server/app/main/api/internal/svc"
|
||
"ycc-server/app/main/api/internal/types"
|
||
|
||
"github.com/hibiken/asynq"
|
||
)
|
||
|
||
type CronJob struct {
|
||
ctx context.Context
|
||
svcCtx *svc.ServiceContext
|
||
}
|
||
|
||
func NewCronJob(ctx context.Context, svcCtx *svc.ServiceContext) *CronJob {
|
||
return &CronJob{
|
||
ctx: ctx,
|
||
svcCtx: svcCtx,
|
||
}
|
||
}
|
||
|
||
func (l *CronJob) Register() *asynq.ServeMux {
|
||
redisClientOpt := asynq.RedisClientOpt{Addr: l.svcCtx.Config.CacheRedis[0].Host, Password: l.svcCtx.Config.CacheRedis[0].Pass}
|
||
scheduler := asynq.NewScheduler(redisClientOpt, nil)
|
||
|
||
// 注册数据清理定时任务(每天凌晨3点)
|
||
task := asynq.NewTask(types.MsgCleanQueryData, nil, nil)
|
||
_, err := scheduler.Register(TASKTIME, task)
|
||
if err != nil {
|
||
panic(fmt.Sprintf("定时任务注册失败:%v", err))
|
||
}
|
||
|
||
// 注册解冻佣金扫描定时任务(每2小时执行一次)
|
||
unfreezeScanTask := asynq.NewTask(types.MsgUnfreezeCommissionScan, nil, nil)
|
||
_, err = scheduler.Register("0 */2 * * *", unfreezeScanTask) // 每2小时执行一次(每小时的第0分钟)
|
||
if err != nil {
|
||
panic(fmt.Sprintf("解冻佣金扫描定时任务注册失败:%v", err))
|
||
}
|
||
|
||
scheduler.Start()
|
||
fmt.Println("定时任务启动!!!")
|
||
|
||
mux := asynq.NewServeMux()
|
||
mux.Handle(types.MsgPaySuccessQuery, NewPaySuccessNotifyUserHandler(l.svcCtx))
|
||
mux.Handle(types.MsgCleanQueryData, NewCleanQueryDataHandler(l.svcCtx))
|
||
mux.Handle(types.MsgAgentProcess, NewAgentProcessHandler(l.svcCtx))
|
||
mux.Handle(types.MsgUnfreezeCommission, NewUnfreezeCommissionHandler(l.svcCtx))
|
||
mux.Handle(types.MsgUnfreezeCommissionScan, NewUnfreezeCommissionScanHandler(l.svcCtx))
|
||
|
||
return mux
|
||
}
|