Add internal/task/task.go
This commit is contained in:
53
internal/task/task.go
Normal file
53
internal/task/task.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package task
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/robfig/cron/v3"
|
||||
)
|
||||
|
||||
// Scheduler 定时任务调度器
|
||||
type Scheduler struct {
|
||||
cron *cron.Cron
|
||||
}
|
||||
|
||||
// New 创建定时任务调度器
|
||||
func New() *Scheduler {
|
||||
return &Scheduler{cron: cron.New(cron.WithSeconds())}
|
||||
}
|
||||
|
||||
// Start 启动定时任务调度器
|
||||
func (s *Scheduler) Start() {
|
||||
s.cron.Start()
|
||||
log.Println("定时任务调度器已启动")
|
||||
}
|
||||
|
||||
// Stop 停止定时任务调度器
|
||||
func (s *Scheduler) Stop() {
|
||||
s.cron.Stop()
|
||||
log.Println("定时任务调度器已停止")
|
||||
}
|
||||
|
||||
// AddFunc 添加定时任务
|
||||
// spec 为 6 字段 cron 表达式(秒 分 时 日 月 周),cmd 为执行函数
|
||||
func (s *Scheduler) AddFunc(name, spec string, cmd func()) error {
|
||||
_, err := s.cron.AddFunc(spec, func() {
|
||||
log.Printf("定时任务 [%s] 开始执行", name)
|
||||
cmd()
|
||||
log.Printf("定时任务 [%s] 执行完成", name)
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
log.Printf("已注册定时任务 [%s]: %s", name, spec)
|
||||
return nil
|
||||
}
|
||||
|
||||
// RegisterDefaults 注册默认的示例定时任务(扩展位)
|
||||
// 实际项目中在此添加:订单自动完成、超时退款、优惠券过期、内容审核、账号过期检查等
|
||||
func (s *Scheduler) RegisterDefaults() {
|
||||
// 示例:每天凌晨 1 点执行数据清理
|
||||
_ = s.AddFunc("数据清理示例", "0 0 1 * * *", func() {
|
||||
log.Println("执行数据清理(示例任务,请按需替换为实际业务)")
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user