Compare commits

...

1 Commits

Author SHA1 Message Date
sugarBecomer 09d59162d0 🐛 遗漏的文件 2025-11-08 21:50:22 +08:00
2 changed files with 77 additions and 0 deletions
+49
View File
@@ -0,0 +1,49 @@
package schedule
import (
"context"
"likedream-goframe/internal/cst"
"likedream-goframe/internal/framework/redis"
"likedream-goframe/internal/utils"
"github.com/hibiken/asynq"
)
var globalPeriodicTaskManager *asynq.PeriodicTaskManager
func initPeriodicTasks(ctx context.Context) {
// 创建周期性任务配置提供者
provider := &periodicTaskConfigProvider{}
// 创建周期性任务管理器
globalPeriodicTaskManager, _ = asynq.NewPeriodicTaskManager(
asynq.PeriodicTaskManagerOpts{
RedisUniversalClient: redis.GetClient(),
PeriodicTaskConfigProvider: provider,
SyncInterval: 0, // 立即同步,使用默认值
},
)
// 启动周期性任务管理器
e := globalPeriodicTaskManager.Start()
utils.OkOrPanic(e)
}
// periodicTaskConfigProvider 提供周期性任务配置
type periodicTaskConfigProvider struct{}
// GetConfigs 返回所有周期性任务配置
func (p *periodicTaskConfigProvider) GetConfigs() ([]*asynq.PeriodicTaskConfig, error) {
return []*asynq.PeriodicTaskConfig{
{
//Cronspec: "0 1 * * *", // 每天凌晨1点执行
Cronspec: "0 1 * * * ",
Task: asynq.NewTask(cst.TaskResetDaily, nil),
Opts: []asynq.Option{
asynq.Queue(cst.TaskQueueDefault),
asynq.MaxRetry(3),
asynq.Timeout(0), // 使用默认超时
},
},
}, nil
}
@@ -0,0 +1,28 @@
package schedule
import (
"context"
"likedream-goframe/internal/db"
"likedream-goframe/internal/ent/cptask"
"likedream-goframe/internal/utils"
"github.com/gogf/gf/v2/frame/g"
"github.com/hibiken/asynq"
)
type ResetTaskHandler struct {
}
// ProcessTask 处理每日重置任务状态
func (h *ResetTaskHandler) ProcessTask(ctx context.Context, _ *asynq.Task) (err error) {
defer utils.Pass(&err)
g.Log().Info(ctx, "开始执行每日任务状态重置")
// 执行重置任务状态
db.Global.CpTask.Update().Where(cptask.TaskStatusIn(cptask.TaskStatusDone, cptask.TaskStatusFail)).SetTaskStatus(cptask.TaskStatusNotStart).ExecX(ctx)
g.Log().Info(ctx, "每日任务状态重置完成")
return
}