From 0c9f3057d4e5d25aacf2f5ed0e5b4bf476a11674 Mon Sep 17 00:00:00 2001 From: Jing Li Date: Mon, 22 Apr 2024 10:17:54 +0800 Subject: [PATCH] Update --- .../Controllers/Api/WorkflowController.php | 43 +++++++++++-------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/app/Http/Controllers/Api/WorkflowController.php b/app/Http/Controllers/Api/WorkflowController.php index 5cd5289..8296eab 100644 --- a/app/Http/Controllers/Api/WorkflowController.php +++ b/app/Http/Controllers/Api/WorkflowController.php @@ -4,13 +4,15 @@ namespace App\Http\Controllers\Api; use Illuminate\Http\{Request, Response}; use Illuminate\Database\Eloquent\Relations\Relation; -use App\Http\Resources\{ReimbursementResource, WorkflowLogResource, OfficalBusinessResource, EmployeeSignRepairResource, HolidayApplyResource, OvertimeApplyResource, AgreementResource, EmployeePromotionResource}; +use App\Http\Resources\WorkflowLogResource; use App\Enums\CheckStatus; -use App\Models\{WorkflowLog, WorkflowCheck}; +use App\Models\WorkflowCheck; use Illuminate\Support\Facades\DB; use Illuminate\Validation\Rule; use App\Admin\Services\WorkFlowService; use App\Exceptions\RuntimeException; +use App\Http\Resources\TaskResource; +use App\Models\TaskHygiene; class WorkflowController extends Controller { @@ -21,7 +23,7 @@ class WorkflowController extends Controller ]); $subjectType = $request->input('subject_type'); $model = Relation::getMorphedModel($subjectType); - $resource = $this->mapResource($subjectType); + $resource = $this->mapResource($model); $user = $request->user(); @@ -38,6 +40,15 @@ class WorkflowController extends Controller $list = $query->paginate($request->input('per_page')); + switch ($model) { + case TaskHygiene::class: + $list->loadMissing(['task', 'store']); + $list->through(function (TaskHygiene $item) { + return tap($item->task)->setRelation('taskable', $item->unsetRelation('task')); + }); + break; + } + return $resource::collection($list); } @@ -48,7 +59,7 @@ class WorkflowController extends Controller ]); $subjectType = $request->input('subject_type'); $model = Relation::getMorphedModel($subjectType); - $resource = $this->mapResource($subjectType); + $resource = $this->mapResource($model); $include = ['workflow']; if ($request->input('include')) { @@ -120,21 +131,17 @@ class WorkflowController extends Controller } } - protected function mapResource($key) + protected function mapResource(string $model) { - $map = [ - 'reimbursements' => ReimbursementResource::class, - 'employee_sign_repairs' => EmployeeSignRepairResource::class, - 'holiday_applies' => HolidayApplyResource::class, - 'overtime_applies' => OvertimeApplyResource::class, - 'agreements' => AgreementResource::class, - 'offical_business' => OfficalBusinessResource::class, - 'employee_promotions' => EmployeePromotionResource::class, - ]; - $resource = data_get($map, $key); - if (!$resource) { - throw new RuntimeException('未知的 subject_type resource: ' . $key); + $class = match ($model) { + TaskHygiene::class => TaskResource::class, + default => 'App\\Http\\Resources\\'.class_basename($model).'Resource', + }; + + if (! class_exists($class)) { + throw new RuntimeException('未知的 subject_type'); } - return $resource; + + return $class; } }