service = app(OrderIssueProcessLogService::class); } /** * 处理日志创建 * @param Request $request * @return array */ public function apiStore(Request $request): array { if (!Gate::allows('订单管理-问题件-编辑')) { return ['success' => false, 'fail_info' => '没有对应的权限']; } if ($request->filled(['id', 'content'])) { try { $log = OrderIssueProcessLog::query()->create([ 'order_issue_id' => $request->input('id'), 'content' => $request->input('content'), 'tag' => $request->input('tag'), 'user_id' => Auth::id(), 'type' => '处理', ]); $log->loadMissing('user'); return ['success' => true, 'data' => $log]; } catch (Exception $e) { return ['success' => false, 'fail_info' => $e->getMessage()]; } } else { return ['success' => false, 'fail_info' => '没有传入对应参数']; } } /** * 删除处理日志 * @param Request $request * @return array|bool[] * @throws \Exception */ public function destroyApi(Request $request): array { if (!$request->filled('id')) { return ['success' => false, 'fail_info' => '没有传入对应参数']; } /** @var OrderIssueProcessLog $orderIssueProcessLog */ $orderIssueProcessLog = OrderIssueProcessLog::query()->where('id', $request->input('id'))->first(); if (!$orderIssueProcessLog) return ['success' => false, 'fail_info' => '日志不存在,请刷新重试']; // 删除的如果是完结条目,将处理状态改为空 if ($orderIssueProcessLog['type'] === '结束') OrderIssue::query()->where('id', $orderIssueProcessLog['order_issue_id'])->update(['final_status' => null]); $orderIssueProcessLog->delete(); app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent())); return ['success' => true]; } /** * 批量完结订单 * @param Request $request * @return array */ public function batchStoreApi(Request $request) { if (!Gate::allows('订单管理-问题件-编辑')) { return ['success' => false, 'fail_info' => '没有对应的权限']; } /** @var OrderIssueProcessLogService $service */ $service = app(OrderIssueProcessLogService::class); try { $data = $service->batchStoreAndReturnLogs($request->all()); $logs = OrderIssueProcessLog::query() ->with('user') ->whereIn('id', data_get($data, '*.id')) ->get(); $result_data = []; foreach ($logs as $log) { $result_data[$log->order_issue_id] = $log; } app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent())); return ['success' => true, 'logs' => $result_data]; } catch (\Exception $e) { app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()) . '||' . $e->getMessage() . "||" . $e->getTraceAsString()); return ['success' => false, $e->getMessage()]; } } // 标记处理记录 public function tagApi(Request $request): array { if (Gate::denies('订单管理-问题件-编辑')) return ['success' => false, 'fail_info' => '没有对应的权限']; OrderIssueProcessLog::query()->where('id', $request['id'])->update(['tag' => 1]); return ['success' => true]; } /** * 工单为问题批量添加处理日志 * @param Request $request * @return array */ public function workOrderCreateLogApi(Request $request): array { if (!Gate::allows('订单管理-问题件-编辑')) { return ['success' => false, 'message' => '没有对应的权限']; } $workOrderQuery = WorkOrder::query()->select('order_id')->whereIn('id', $request->input('ids')); $orderIssues = OrderIssue::query()->whereIn('order_id', $workOrderQuery)->get(); if (count($orderIssues) !== count($request->input('ids'))) { return ['success' => false, 'message' => '部分工单没有对应的问题件,请检查后重试']; } $params = ['content' => $request->input('content'), 'orderIssueIds' => $orderIssues->map(function ($item) { return $item->id; })]; $data = $this->service->batchStoreAndReturnLogs($params); $data = OrderIssueProcessLog::query()->with('user')->whereIn('id', data_get($data, "*.id"))->get(); return ['success' => true, 'data' => $data]; } }