bind("orderIssueService", OrderIssueService::class); app()->bind("orderService", OrderService::class); } public function index(Request $request) { if (!Gate::allows('订单管理-问题件-查询')) { return redirect(url('/')); } $orderIssueService = app('orderIssueService'); $owners = Owner::all(); $orderIssues = $orderIssueService->paginate($request); return view('order.issue.index', compact('owners', 'orderIssues')); } // 置顶 public function orderIssueOnTop(Request $request) { if (!Gate::allows('订单管理-问题件-置顶')) { ['success' => false, 'fail_info' => '没有对应权限']; } $orderIssueService = app('orderIssueService'); $meg = $orderIssueService->orderIssueOnTop($request); if ($meg['success']) { $description = '订单问题件id' . $request->input('id') . '置顶信息' . $request->input('remark'); $this->log(__METHOD__, "订单问题件置顶" . __FUNCTION__, $description, Auth::user()['id']); } return $meg; } // 取消置顶 public function cancelTop(Request $request) { if (!Gate::allows('订单管理-问题件-置顶')) { ['success' => false, 'fail_info' => '没有对应权限']; } if(!$request->has('orderIssue_id')){ return ['success'=>false,'fail_info'=>'没有传入对应的id']; } else if(!$request->has('remark')){ return ['success'=>false,'fail_info'=>'没有传入对应的备注信息']; } $orderIssueOnTop = OrderIssueOnTop::create($request->all()); if(!$orderIssueOnTop){ return ['success'=>false,'fail_info'=>'订单置顶失败,稍后重试']; } return ['success'=>true]; } // 校验Oracle 订单号 public function verifyOracleOrderNo(Request $request) { $orderIssueService = app('orderIssueService'); if (!$request->input('oracleOrderNo')) { $meg['success'] = false; $meg['fail_info'] = '没有参入对应的参数'; return $meg; } $meg = $orderIssueService->verifyOracleOrderNo($request->input('oracleOrderNo')); return $meg; } // 校验快递单号 public function verifyLogisticNumber(Request $request) { $orderIssueService = app('orderIssueService'); if (!$request->input('logisticNumber')) { $meg['success'] = false; $meg['fail_info'] = '没有参入对应的参数'; return $meg; } return $orderIssueService->verifyLogisticNumber($request); } // 订单问题件标记 public function orderIssueTag(Request $request) { if (!Gate::allows('订单管理-订单问题件生成')) { return ['success' => false, 'fail_info' => '没有对应权限']; } if (!$request->input('orderNos')) { return ['success' => false, 'fail_info' => '没有传入的订单编号']; } $orderIssueService = app('orderIssueService'); return $orderIssueService->orderIssueTag($request); } // 创建订单问题件页面 public function create() { if (!Gate::allows('订单管理-订单问题件生成')) { return redirect(url('/')); } $types = OrderIssueType::all(); $meg = ['success' => true]; $userWorkGroup = UserWorkgroup::all(); $logistic = Logistic::all(); return view('order.issue.create', compact(['types', 'meg', 'userWorkGroup', 'logistic'])); } // 创建订单问题件 public function store(Request $request) { if (!Gate::allows('订单管理-订单问题件生成')) { return redirect(url('/')); } $orderIssueService = app('orderIssueService'); $type = $request->input('type'); $orderIssue = null; if ($type == 'RejectedBill') { $orderIssue = $orderIssueService->createByRejectedBill($request); } else if ($type == 'WMSOrderNo') { $orderIssue = $orderIssueService->createByOracleOrderNo($request); } else if ($type == 'LogisticNumber') { $orderIssue = $orderIssueService->createByLogisticNumber($request); } $msg = ''; if ($orderIssue == null) { $msg = '创建订单问题件失败'; } else { $msg = '创建订单问题件成功'; } $owners = Owner::all(); $orderIssues = $orderIssueService->paginate($request); return view('order.issue.index', compact('owners', 'orderIssues', 'msg')); } public function edit($id) { if (!Gate::allows('订单管理-问题件-编辑')) { return redirect(url('/')); } $orderIssue = OrderIssue::where('id', $id)->first(); $owners = Owner::all(); return view('order/issue/edit', compact(['orderIssue', 'owners'])); } public function update(Request $request, OrderIssue $orderIssue) { if (!Gate::allows('订单管理-问题件-编辑')) { return redirect(url('/')); } $orderIssue->fill($request); $orderIssue->update(); $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']); return redirect('order/issue/index'); } public function destroy(Request $request) { if (!Gate::allows('订单管理-问题件-删除')) { return ['success' => false, 'fail_info' => '没有对应权限']; } if (!($request->has('id'))) { return ['success' => 'false', 'fail_info' => '没有问题题件相关的参数']; } $bool = OrderIssue::find($request->input('id'))->delete(); if ($bool) { $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']); return ['success' => 'true']; } else { return ['success' => 'false', 'fail_info' => '删除问题单出现异常,请联系管理员']; } } public function ajaxGetOrderHead(Request $request) { $logisticNumberReturn = $request->input('logisticNumberReturn'); $type = $request->input('type'); $orderNo = $request->input('orderNo'); $orderIssueService = app('orderIssueService'); if ($type == 'logisticNumberReturn') { if (!$logisticNumberReturn) { return ['success' => false, 'fail_info' => '没有传入对应的参数']; } $arr = $orderIssueService->GetOrderHead($request); return ['success' => true, 'data' => $arr]; } else if ($type = 'WMSOrderNo') { if (!$orderNo) { return ['success' => false, 'fail_info' => '没有传入对应的参数']; } $arr = $orderIssueService->getOrderHeadByOrderNo($request); return ['success' => true, 'data' => $arr]; } else if ($type == 'logisticNumber') { if (!$request->has('logisticNumber')) { return ['success' => false, 'fail_info' => '没有传入对应的参数']; } $orderIssueService->createByLogisticNumber($request); } else { return ['success' => false, 'fail_info' => '没有传入对应的参数']; } } public function import(Request $request) { if (!Gate::allows('订单管理-订单问题件生成')) { return redirect(url('/')); } $file = $request->file('file'); $fileSuffix = $request->file('file')->getClientOriginalExtension(); if (in_array($fileSuffix, ['xlsx', 'xlsm', 'xltx', 'xltm', 'xls', 'xlt', 'ods', 'ots', 'slk', 'xml', 'gnumeric', 'htm', 'html', 'csv', 'tsv'])) { ini_set('max_execution_time', 2100); ini_set('memory_limit', '512M'); $extension = $request->file()['file']->getClientOriginalExtension(); $extension[0] = strtoupper($extension[0]); Excel::import(new OrderIssueImport(), $request->file()['file']->path(), null, $extension); if (Cache::has('error')) { return '

导入Excel失败

' . Cache::pull('error') . '

'; } else { $exception = Cache::get('exception'); $a = ''; for ($i = 0; $i < count($exception); $i++) { $a .= implode(',', $exception[$i]) . ' '; }; $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']); return '

导入Excel成功

'; } } else { return '

失败

不支持该文件类型

'; } } public function exportOrderIssue(Request $request) { $orderIssueService = app('orderIssueService'); $resultdata = $orderIssueService->exportExcel($request); $row = [[ 'ID' => 'id', 'created_at' => '登记日期', 'order_created_at' => '订单日期', 'owner' => '客户', 'shop' => '店铺', 'order_no' => '原始订单号', 'logistic' => '原始承运商', 'consignee_name' => '收货人名称', 'consignee_phone' => '收货人电话', 'province' => '省', 'city' => '市', 'district' => '区', 'address' => '收货人地址', // order -> package -> commodity 'commodity_code' => '条码', 'commodity_name' => '商品', 'amount' => '数量', 'status' => '退单状态', // 退回商品信息 rejectedBill -> items 'barcode_goods' => '条码', 'name_goods' => '商品名', 'goods_amount' => '数量', 'is_checked' => '是否正品', 'remark' => '备注', 'order_issue_type' => '问题类别', 'second_order' => '二次订单', 'second_logistic' => '二次承运商', 'second_logistic_number' => '二次运单号', // order -> package -> commodity 's_commodity_code' => '条码', 's_commodity_name' => '商品名', 's_amount' => '数量', 's_is_checked' => '是否正品', 's_remark' => '备注', 'final_status' => '最终状态', 'logistic_indemnity_money' => '承运商赔偿金额', 'logistic_express_remission' => '承运商快递减免', 'baoshi_indemnity_money' => '宝石赔偿金额', 'baoshi_express_remission' => '宝石快递减免', 'user_workgroup' => '事故责任方']]; $data = []; foreach ($resultdata as $result) { // orderIssue $rowData = [ 'ID' => $result->id, 'created_at' => $result->created_at, // 登记日期 'order_created_at' => $result->order ? $result->order->created_at : '', // 订单创建日期 'owner' => $result->owner ? $result->owner->name : '', 'shop' => $result->shop ? $result->shop->name : '', 'order_no' => $result->code, 'final_status' => $result->final_status, 'logistic_indemnity_money' => $result->logistic_indemnity_money, 'logistic_express_remission' => $result->logistic_express_remission, 'baoshi_indemnity_money' => $result->baoshi_indemnity_money, 'baoshi_express_remission' => $result->baoshi_express_remission, 'user_workgroup' => $result->userWorkGroup ? $result->userWorkGroup->name : '', ]; // order if (isset($result->order)) { $rowData['logistic'] = $result->order->logistic ? $result->order->logistic->name : ''; $rowData['consignee_name'] = $result->order->consignee_name; $rowData['consignee_phone'] = $result->order->consignee_phone; $rowData['province'] = $result->order->province; $rowData['city'] = $result->order->city; $rowData['district'] = $result->order->district; $rowData['address'] = $result->order->address; $packages = []; if (isset($result->packages)) { foreach ($result->packages as $key => $value) { $arr = [ 'commodity_code'=>$value->barcode_goods, 'commodity_name'=>$value->name_goods, 'amount'=>$value->amount ]; array_push($packages,$arr); } } $rowData['packages'] = $packages; } // secondOrder if (isset($result->secondOrder)) { $rowData['second_order'] = $result->secondOrder->code; $rowData['second_logistic'] = $result->secondOrder->logistic->name; $rowData['second_logistic_number'] = $result->secondOrder->code; $secondOrder = $result->secondOrder; if (isset($secondOrder->packages)) { $packages = []; foreach ($secondOrder->packages as $key => $value) { $arr = [ 'commodity_code'=>$value->barcode_goods, 'commodity_name'=>$value->name_goods, 'amount'=>$value->amount ]; array_push($packages,$arr); } $rowData['s_packages'] = $packages; } } // rejectedBill if (isset($result->rejectedBill)) { $rejectedBillItems = []; $items = $result->rejectedBill->items ?? []; foreach ($items as $key => $value) { $item = [ 'barcode_goods' => $value['barcode_goods'], 'name_goods' => $value['name_goods'], 'goods_amount' => $value['amount'], 'is_checked' => $value['is_checked'], 'remark' => $value['remark'], ]; array_push($rejectedBillItems, $item); } $rowData['rejectedBillItems'] = $rejectedBillItems; } array_push($data, $rowData); } } public function excelImport(Request $request) { if (!Gate::allows('订单管理-订单问题件生成')) { return redirect(url('/')); } return view('order.issue.import'); } // 完结订单 public function endOrderIssue(Request $request) { if (!Gate::allows('订单管理-问题件-编辑')) { return ['success' => false, 'fail_info' => '没有对应的权限']; } if (!$request->has('ids')) { return ['success' => false, 'fail_info' => '没有传入对应的参数']; } $count = OrderIssue::whereIn('id', $request->input('ids'))->where('handle_status', 2)->count(); if ($count > 0) { return ['success' => false, 'fail_info' => '勾选的内容中已有完结的订单问题件,取消勾选后重试']; } else { $count = OrderIssue::whereIn('id', $request->input('ids'))->update(['handle_status' => 2]); foreach ($request->input('ids') as $id) { OrderIssueProcessLog::create(['order_issue_id' => $id, 'user_id' => Auth::user()['id'], 'type' => 3]); } $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']); return ['success' => true]; } } // 添加处理日志 public function addOrderIssuesLog(Request $request) { if (!Gate::allows('订单管理-问题件-编辑')) { return ['success' => false, 'fail_info' => '没有对应的权限']; } if ($request->has(['id', 'content'])) { $orderIssueProcessLog = OrderIssueProcessLog::create(['order_issue_id' => $request->input('id'), 'content' => $request->input('content'), 'user_id' => Auth::user()['id'], 'type' => 2]); if ($orderIssueProcessLog) { $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']); return ['success' => true, 'data' => $orderIssueProcessLog]; } else { return ['success' => false, 'fail_info' => '录入失败']; } } else { return ['success' => false, 'fail_info' => '没有传入对应参数']; } } }