diff --git a/app/Http/Controllers/Api/ReplyController.php b/app/Http/Controllers/Api/ReplyController.php index c48be42..650505c 100644 --- a/app/Http/Controllers/Api/ReplyController.php +++ b/app/Http/Controllers/Api/ReplyController.php @@ -41,6 +41,11 @@ public function store(Request $request, WorkOrder $workOrder) return $this->error('工单状态异常,无法进行回复。请尝试重新建立工单。'); } + // 如果工单已经关闭,那么访客不能回复 + if ($workOrder->isClosed() && !auth('sanctum')->check()) { + return $this->error('工单已关闭,无法进行回复。'); + } + $create = [ 'content' => $request->input('content'), 'work_order_id' => $workOrder->id, diff --git a/app/Http/Controllers/Api/WorkOrderController.php b/app/Http/Controllers/Api/WorkOrderController.php index 1c935bc..64ecbdb 100644 --- a/app/Http/Controllers/Api/WorkOrderController.php +++ b/app/Http/Controllers/Api/WorkOrderController.php @@ -66,6 +66,11 @@ public function update(Request $request, WorkOrder $workOrder) 'status' => 'nullable|sometimes|string|in:closed', ]); + // 访客不能关闭 + if ($request->input('status') === 'closed' && !auth('sanctum')->check()) { + return $this->error('访客不能修改工单状态。'); + } + $workOrder->update($request->only('status')); return $this->success($workOrder); diff --git a/app/Models/WorkOrder/WorkOrder.php b/app/Models/WorkOrder/WorkOrder.php index 1ba5c82..2b36590 100644 --- a/app/Models/WorkOrder/WorkOrder.php +++ b/app/Models/WorkOrder/WorkOrder.php @@ -164,6 +164,16 @@ public function isFailure(): bool return $this->status === 'pending' || $this->status === 'error'; } + public function isOpen(): bool + { + return $this->status !== 'closed' && $this->status !== 'error' && $this->status !== 'pending'; + } + + public function isClosed(): bool + { + return $this->status === 'closed'; + } + /** * @throws CommonException */