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)) } }() // 执行任务 } }