input('id')) { $ticket = Ticket::where('id', $request->input('id')) ->first(); if (!$ticket) { return $this->fail([400202,'工单不存在']); } $ticket['message'] = TicketMessage::where('ticket_id', $ticket->id)->get(); for ($i = 0; $i < count($ticket['message']); $i++) { if ($ticket['message'][$i]['user_id'] !== $ticket->user_id) { $ticket['message'][$i]['is_me'] = true; } else { $ticket['message'][$i]['is_me'] = false; } } return $this->success($ticket); } $current = $request->input('current') ? $request->input('current') : 1; $pageSize = $request->input('pageSize') >= 10 ? $request->input('pageSize') : 10; $model = Ticket::orderBy('updated_at', 'DESC'); if ($request->input('status') !== NULL) { $model->where('status', $request->input('status')); } if ($request->input('reply_status') !== NULL) { $model->whereIn('reply_status', $request->input('reply_status')); } if ($request->input('email') !== NULL) { $user = User::where('email', $request->input('email'))->first(); if ($user) $model->where('user_id', $user->id); } $total = $model->count(); $res = $model->forPage($current, $pageSize) ->get(); return response([ 'data' => $res, 'total' => $total ]); } public function reply(Request $request) { $request->validate([ 'id' => 'required|numeric', 'message' => 'required|string' ],[ 'id.required' => '工单ID不能为空', 'message.required' => '消息不能为空' ]); $ticketService = new TicketService(); $ticketService->replyByAdmin( $request->input('id'), $request->input('message'), $request->user['id'] ); return $this->success(true); } public function close(Request $request) { $request->validate([ 'id' => 'required|numeric' ],[ 'id.required' => '工单ID不能为空' ]); try { $ticket = Ticket::findOrFail($request->input('id')); $ticket->status = Ticket::STATUS_CLOSED; $ticket->save(); return $this->success(true); } catch (ModelNotFoundException $e) { return $this->fail([400202, '工单不存在']); } catch (\Exception $e) { return $this->fail([500101, '关闭失败']); } } }