From 64bfcf4bbb1f7a369b1cfe3431a69b33d28f090e Mon Sep 17 00:00:00 2001 From: Jing Li Date: Tue, 23 Apr 2024 20:34:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/TaskController.php | 45 +++++++++++++++++++-- routes/api.php | 1 + 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Api/TaskController.php b/app/Http/Controllers/Api/TaskController.php index 1d0bbd5..56072b0 100644 --- a/app/Http/Controllers/Api/TaskController.php +++ b/app/Http/Controllers/Api/TaskController.php @@ -34,8 +34,8 @@ MySQL; $tasks = Task::with([ 'taskable' => function (MorphTo $morphTo) { $morphTo->morphWith([ - TaskHygiene::class => ['task', 'workflow'], - TaskLedger::class => ['task'], + TaskHygiene::class => ['workflow'], + TaskLedger::class, ]); }, ]) @@ -60,7 +60,46 @@ MySQL; ->orderBy('end_at', 'ASC') ->simplePaginate($request->query('per_page', 20)); - return TaskResource::collection($tasks); + return TaskResource::collection( + $tasks->through(function ($task) { + $task->taskable->setRelation('task', $task->withoutRelations()); + return $task; + }) + ); + } + + public function show($id, Request $request) + { + /** @var \App\Models\Employee */ + $user = $request->user(); + + $task = Task::with([ + 'taskable' => function (MorphTo $morphTo) { + $morphTo->morphWith([ + TaskHygiene::class => ['workflow', 'store'], + TaskLedger::class => ['store'], + ]); + }, + ])->whereHasMorph( + 'taskable', + [TaskHygiene::class, TaskLedger::class], + function (Builder $query, string $type) use ($user) { + switch ($type) { + case TaskLedger::class: + case TaskHygiene::class: + if ($user->isStoreMaster()) { + $query->where('store_id', $user->store_id); + } else { + $query->whereRaw('1!=1'); + } + break; + } + } + )->findOrFail($id); + + $task->taskable->setRelation('task', $task->withoutRelations()); + + return TaskResource::make($task); } public function submit($id, Request $request) diff --git a/routes/api.php b/routes/api.php index 40cc011..a31dfd4 100644 --- a/routes/api.php +++ b/routes/api.php @@ -66,6 +66,7 @@ Route::group([ // 我的任务 - 任务列表 Route::get('tasks', [TaskController::class, 'index']); + Route::get('tasks/{task}', [TaskController::class, 'show']); // 我的任务 - 提交任务 Route::post('tasks/{task}/submit', [TaskController::class, 'submit']);