package initialize import ( "fmt" "kra/internal/task" "kra/pkg/timer" "github.com/robfig/cron/v3" "gorm.io/gorm" ) // TimerManager 定时任务管理器 type TimerManager struct { timer timer.Timer db *gorm.DB } // NewTimerManager 创建定时任务管理器 func NewTimerManager(db *gorm.DB) *TimerManager { return &TimerManager{ timer: timer.NewTimerTask(), db: db, } } // Timer 获取定时器实例 func (m *TimerManager) Timer() timer.Timer { return m.timer } // Start 启动定时任务 func (m *TimerManager) Start() { go func() { var option []cron.Option option = append(option, cron.WithSeconds()) // 清理DB定时任务 _, err := m.timer.AddTaskByFunc("ClearDB", "@daily", func() { err := task.ClearTable(m.db) if err != nil { fmt.Println("timer error:", err) } }, "定时清理数据库【日志,黑名单】内容", option...) if err != nil { fmt.Println("add timer error:", err) } // 其他定时任务可以在这里添加 }() } // Stop 停止定时任务 func (m *TimerManager) Stop() { if m.timer != nil { m.timer.Close() } } // AddTask 添加定时任务 func (m *TimerManager) AddTask(name, spec string, fn func(), desc string, options ...cron.Option) (cron.EntryID, error) { return m.timer.AddTaskByFunc(name, spec, fn, desc, options...) } // RemoveTask 移除定时任务 func (m *TimerManager) RemoveTask(name string) { m.timer.Clear(name) }