public function updated(WorkOrder $workOrder) { $sendedUsers = []; $messageData = []; switch ($workOrder->status) { case 0: $messageData = ['title' => '工单 #' . $workOrder->id . ' 已关闭', 'template' => 'host.communication.message.template.closed']; break; case 2: $messageData = ['title' => '工单 #' . $workOrder->id . ' 已被受理', 'template' => 'host.communication.message.template.accept']; break; case 3: $messageData = ['title' => '工单 #' . $workOrder->id . ' 已被标记为解决', 'template' => 'host.communication.message.template.solved']; break; } foreach ($workOrder->participants as $participant) { if ($participant->id == \Auth::id()) { continue; } $url = \get_uri_path(route('host.work.work-order.show', $workOrder->id)); $message = new Message(); $message->title = $messageData['title']; $message->content = view($messageData['template'], ['workOrder' => $workOrder, 'url' => $url]); $message->sendTo($participant); // 当工单解决或关闭则取消关注 if ($workOrder->status == 0 || $workOrder->status == 3) { $workOrder->participants()->detach($participant->id); } $sendedUsers[] = $participant->id; } foreach ($workOrder->group->participants as $participant) { if ($participant->id == \Auth::id()) { continue; } if (!in_array($participant->id, $sendedUsers)) { $url = \get_uri_path(route('host.work.work-order.show', $workOrder->id)); $message = new Message(); $message->title = $messageData['title']; $message->content = view($messageData['template'], ['workOrder' => $workOrder, 'url' => $url]); $message->sendTo($participant); } } // 创建历史 $history = new WorkOrderHistory(); $history->event_id = WorkOrderHistory::EVENT_WORK_ORDER_STATUS_CHANGE; $history->remark = json_encode(['status' => $workOrder->status]); $history->workOrder()->associate($workOrder); $history->user()->associate(\Auth::user()); $history->save(); }