package tasks import ( "fmt" "sync" "sync/atomic" "time" "networktool/internal/model" ) type Service struct { counter uint64 mu sync.RWMutex items map[string]model.TaskResult } func New() *Service { return &Service{items: make(map[string]model.TaskResult)} } func (s *Service) Create() model.TaskResult { id := fmt.Sprintf("task-%d-%04d", time.Now().Unix(), atomic.AddUint64(&s.counter, 1)) item := model.TaskResult{TaskID: id, Status: "pending", Step: "validating", Detail: "任务已创建", Rollback: false} s.mu.Lock() s.items[id] = item s.mu.Unlock() return item } func (s *Service) Update(taskID string, status string, step string, detail string, rollback bool) { s.mu.Lock() defer s.mu.Unlock() item, ok := s.items[taskID] if !ok { return } item.Status = status item.Step = step item.Detail = detail item.Rollback = rollback s.items[taskID] = item } func (s *Service) Get(taskID string) (model.TaskResult, bool) { s.mu.RLock() defer s.mu.RUnlock() item, ok := s.items[taskID] return item, ok }