bindbox-game/internal/cron/cron_add_job.go
2025-10-16 13:28:24 +08:00

36 lines
675 B
Go

package cron
import (
"context"
"fmt"
"mini-chat/internal/repository/mysql/model"
"github.com/jakecoffman/cron"
)
func (s *server) AddJob(task *model.PatientMedicineTask, execUser string) cron.FuncJob {
_, cancel := context.WithCancel(context.Background())
s.mu.Lock()
s.taskContext[task.Code] = cancel
s.mu.Unlock()
return func() {
s.taskCount.Add()
defer func() {
s.taskCount.Done()
s.mu.Lock()
delete(s.taskContext, task.Code) // 清理任务上下文
s.mu.Unlock()
if err := recover(); err != nil {
s.logger.Error(fmt.Sprintf("[定时任务] 任务编码:%s, 执行异常: %+v", task.Code, err))
}
}()
// 执行任务
}
}