package controller import ( "context" "model-asynch/model/dto" "model-asynch/service" ) type task struct{} // Task 任务控制器 var Task = new(task) // CreateTask 根据 modelName 创建异步任务,返回 taskId func (c *task) CreateTask(ctx context.Context, req *dto.CreateTaskReq) (res *dto.CreateTaskRes, err error) { return service.Task.Create(ctx, req) } // GetTaskResult 获取任务结果(只返回 oss 地址 + state) func (c *task) GetTaskResult(ctx context.Context, req *dto.GetTaskResultReq) (res *dto.GetTaskResultRes, err error) { return service.Task.GetResult(ctx, req.TaskID) } // GetTaskBatch 批量查询任务(成功任务标记为已下载) func (c *task) GetTaskBatch(ctx context.Context, req *dto.GetTaskBatchReq) (res *dto.GetTaskBatchRes, err error) { return service.Task.GetBatch(ctx, req) } // ListTask 任务列表分页查询 func (c *task) ListTask(ctx context.Context, req *dto.ListTaskReq) (res *dto.ListTaskRes, err error) { return service.Task.List(ctx, req) } // RunWork 手动触发一次 worker(由上层定时任务调用) func (c *task) RunWork(ctx context.Context, req *dto.RunWorkReq) (res *dto.RunWorkRes, err error) { batchSize, goroutines := 10, 1 if req != nil { if req.BatchSize > 0 { batchSize = req.BatchSize } if req.Goroutines > 0 { goroutines = req.Goroutines } } n, err := service.AsyncWorker.RunOnce(ctx, batchSize, goroutines) if err != nil { return nil, err } return &dto.RunWorkRes{Claimed: n}, nil } // CleanWork 手动触发一次 cleaner(由上层定时任务调用) func (c *task) CleanWork(ctx context.Context, req *dto.CleanWorkReq) (res *dto.CleanWorkRes, err error) { service.Cleaner.RunOnce(ctx) return &dto.CleanWorkRes{Ok: true}, nil }