service = app('WorkOrderMistakeService'); $this->orderService = app('OrderService'); } public function storeApi(Request $request): array { if (Gate::denies('订单管理-订单-生成工单')) return ['success' => false, 'message' => '没有对应权限']; $this->orderService->syncOrderByCodes([$request->input('order_no')]); if ($this->service->checkWorkOrder($request->input('order_no'))) { return ['success' => false, 'message' => '当前订单已有相同类型的工单']; } $this->service->store($request->all()); return ['success' => true]; } public function ownerEditApi(Request $request): array { if (Gate::denies('订单管理-工单处理-货主编辑')) { return ['success' => false, 'message' => '没有对应权限']; } $detail = WorkOrderDetail::query()->with('workOrder')->find($request->input('detail_id')); if (!$detail) { return ['success' => false, 'message' => '参数异常']; } else if ($detail->status === '完成') { return ['success' => false, 'message' => '处理失败,刷新当前页面重试']; } $this->service->ownerEdit($detail, $request->all()); $data = WorkOrder::query()->defaultWith()->find($detail->work_order_id); return ['success' => true, 'data' => $data]; } public function baoShiHandleApi(Request $request): array { if (Gate::denies('订单管理-工单处理-宝时编辑')) { return ['success' => false, 'message' => '没有对应权限']; } $detail = WorkOrderDetail::query()->with('workOrder')->find($request->input('detail_id')); if (!$detail) { return ['success' => false, 'message' => '参数异常']; } else if ($detail->status === '完成' || $detail->status === '宝时终审') { return ['success' => false, 'message' => '处理失败,刷新当前页面重试']; } $this->service->baoShiCheckMistake($detail, $request->all()); $data = WorkOrder::query()->defaultWith()->find($detail->work_order_id); return ['success' => true, 'data' => $data]; } public function ownerHandleApi(Request $request): array { if (Gate::denies('订单管理-工单处理-货主编辑')) return ['success' => false, 'message' => '没有对应权限']; $detail = WorkOrderDetail::query()->with('workOrder')->find($request->input('detail_id')); if (!$detail) { return ['success' => false, 'message' => '参数异常']; } else if ($detail->status === '完成') { return ['success' => false, 'message' => '处理失败,刷新当前页面重试']; } $this->service->ownerReview($detail, $request->all()); $data = WorkOrder::query()->defaultWith()->find($detail->work_order_id); return ['success' => true, 'data' => $data]; } public function ownerEndEditApi(Request $request): array { if (Gate::denies('订单管理-工单处理-货主编辑')) return ['success' => false, 'message' => '没有对应权限']; $detail = WorkOrderDetail::query()->with('workOrder')->find($request->input('detail_id')); if (!$detail) { return ['success' => false, 'message' => '参数异常']; } else if ($detail->status === '宝时审核') { return ['success' => false, 'message' => '处理失败,刷新当前页面重试']; } $this->service->ownerEditReview($detail, $request->all()); $data = WorkOrder::query()->defaultWith()->find($detail->work_order_id); return ['success' => true, 'data' => $data]; } public function baoShiReviewApi(Request $request): array { if (Gate::denies('订单管理-工单处理-宝时编辑')) { return ['success' => false, 'message' => '没有对应权限']; } $detail = WorkOrderDetail::query()->with('workOrder')->find($request->input('detail_id')); if (!$detail) { return ['success' => false, 'message' => '参数异常']; } $this->service->baoShiReview($detail, $request->all()); $data = WorkOrder::query()->defaultWith()->find($detail->work_order_id); return ['success' => true, 'data' => $data]; } public function checkLogisticNumberApi(Request $request){ $logisticNumbers = array_unique(array_filter(preg_split('/[,, \n]+/u', $request->input('logistic_numbers')))); $result = $this->service->check($logisticNumbers, '错漏发'); if(!$result['success']){ return $result; } $orderPackages = OrderPackage::query()->with('order','commodities.commodity')->whereIn("logistic_number",$logisticNumbers)->get(); $params = []; $count = 0; foreach ($orderPackages as $package){ $commodities = $package->commodities??[]; foreach($commodities as $commodity){ $count ++; $params[] = [ 'order_code' => $package->order->code ?? '', 'owner_id' => $package->order->owner_id ?? '', 'commodity_id'=>$commodity->commodity_id ?? '', 'sku' => $commodity->commodity->sku ?? '', 'sku_name' => $commodity->commodity->name ?? '', 'amount' => $commodity->amount ?? '', 'logistic_number' => $package->logistic_number ?? '', 'abnormal_type' => '', 'issue_type' => '', ]; } } return ['success' => true,'data' => $params]; } public function createBatchApi(Request $request){ if (Gate::denies('订单管理-订单-生成工单')){ return ['success' => false, 'message' => '没有对应权限']; } $logisticNumbers = array_unique(array_filter(preg_split('/[,, \n]+/u',$request->input('logistic_numbers') ))); $result = $this->service->check($logisticNumbers,'错漏发'); if(!$result['success']){ return $request; } $data = $request->input("data"); $params = []; foreach ($data as $item){ $params[] = [ 'order_no'=> $item['order_no'], 'remark' => $request->input('remark'), 'commodities' => $item['commodities'], ]; } $this->service->batchStore($params); return ['success' => true]; } }