| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- <?php
- namespace App\Http\Controllers\TaskCenter;
- use App\Libs\ApiResponse;
- use App\Libs\Utils;
- use App\Services\TaskCenterService;
- use Illuminate\Http\Request;
- use Illuminate\Routing\Controller as BaseController;
- class TaskCenterController extends BaseController
- {
- use ApiResponse;
- protected $taskCenterService;
- public function __construct(TaskCenterService $taskCenterService)
- {
- $this->taskCenterService = $taskCenterService;
- }
- /**
- * 查询任务详情
- *
- * @param Request $request
- * @return mixed
- */
- public function detail(Request $request)
- {
- $taskId = (int)$request->input('task_id', 0);
- if ($taskId <= 0) {
- Utils::throwError('1002:task_id不能为空');
- }
- $task = $this->taskCenterService->getTaskDetail($taskId);
- if (!$task) {
- Utils::throwError('20003:任务不存在');
- }
- return $this->success([
- 'task_id' => $task->id,
- 'task_type' => $task->task_type,
- 'title' => $task->title,
- 'status' => $task->status,
- 'result' => $this->parseResult($task->result) ?? '',
- 'error_message' => $task->error_message ?? '',
- 'ref_task_id'=> $task->ref_task_id,
- 'created_at' => $task->created_at ? $task->created_at->format('Y-m-d H:i:s') : '',
- 'updated_at' => $task->updated_at ? $task->updated_at->format('Y-m-d H:i:s') : '',
- ]);
- }
- /**
- * 分页查询任务列表(默认每页20条,按创建时间倒序)
- *
- * @param Request $request
- * @return mixed
- */
- public function taskList(Request $request)
- {
- $params = $request->only(['task_id', 'status', 'task_type', 'page', 'page_size']);
- $tasks = $this->taskCenterService->getTaskList($params);
- $list = $tasks->map(function ($task) {
- return [
- 'task_id' => $task->id,
- 'task_type' => $task->task_type,
- 'title' => $task->title,
- 'status' => $task->status,
- 'result' => $this->parseResult($task->result),
- 'error_message' => $task->error_message,
- 'ref_task_id' => $task->ref_task_id,
- 'created_at' => $task->created_at ? $task->created_at->format('Y-m-d H:i:s') : '',
- 'updated_at' => $task->updated_at ? $task->updated_at->format('Y-m-d H:i:s') : '',
- ];
- });
- return $this->success([
- 'list' => $list,
- 'total' => $tasks->total(),
- 'per_page' => $tasks->perPage(),
- 'current_page' => $tasks->currentPage(),
- 'last_page' => $tasks->lastPage(),
- ]);
- }
- /**
- * 解析结果字段(JSON字符串转换为数组,保持兼容)
- *
- * @param mixed $result
- * @return mixed
- */
- private function parseResult($result)
- {
- if (is_string($result) && is_json($result)) {
- return json_decode($result, true);
- }
- return $result;
- }
- }
|