12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package server
- import (
- "context"
- "github.com/go-co-op/gocron"
- "github.com/go-nunu/nunu-layout-advanced/internal/task"
- "github.com/go-nunu/nunu-layout-advanced/pkg/log"
- "go.uber.org/zap"
- "time"
- )
- type TaskServer struct {
- log *log.Logger
- scheduler *gocron.Scheduler
- userTask task.UserTask
- gameShieldTask task.GameShieldTask
- }
- func NewTaskServer(
- log *log.Logger,
- userTask task.UserTask,
- gameShieldTask task.GameShieldTask,
- ) *TaskServer {
- return &TaskServer{
- log: log,
- userTask: userTask,
- gameShieldTask: gameShieldTask,
- }
- }
- func (t *TaskServer) Start(ctx context.Context) error {
- gocron.SetPanicHandler(func(jobName string, recoverData interface{}) {
- t.log.Error("TaskServer Panic", zap.String("job", jobName), zap.Any("recover", recoverData))
- })
- // eg: crontab task
- t.scheduler = gocron.NewScheduler(time.UTC)
- // if you are in China, you will need to change the time zone as follows
- // t.scheduler = gocron.NewScheduler(time.FixedZone("PRC", 8*60*60))
- //_, err := t.scheduler.Every("3s").Do(func()
- //_, err := t.scheduler.CronWithSeconds("0/3 * * * * *").Do(func() {
- // err := t.userTask.CheckUser(ctx)
- // if err != nil {
- // t.log.Error("CheckUser error", zap.Error(err))
- // }
- //})
- //if err != nil {
- // t.log.Error("CheckUser error", zap.Error(err))
- //}
- // 添加游戏盾检查任务 - 每1小时执行
- _, err := t.scheduler.Cron("0 */1 * * *").Do(func() {
- err := t.gameShieldTask.CheckGameShield(ctx)
- if err != nil {
- t.log.Error("CheckGameShield error", zap.Error(err))
- }
- })
- if err != nil {
- t.log.Error("Register CheckGameShield task error", zap.Error(err))
- }
- // 添加游戏盾数据同步任务 - 每天凌晨3点执行
- _, err = t.scheduler.Cron("0 3 * * *").Do(func() {
- err := t.gameShieldTask.SyncAllExpireTimeFromHost(ctx)
- if err != nil {
- t.log.Error("SyncAllExpireTimeFromHost error", zap.Error(err))
- }
- })
- if err != nil {
- t.log.Error("Register SyncAllExpireTimeFromHost task error", zap.Error(err))
- }
- t.scheduler.StartBlocking()
- return nil
- }
- func (t *TaskServer) Stop(ctx context.Context) error {
- t.scheduler.Stop()
- t.log.Info("TaskServer stop...")
- return nil
- }
|