middleware('auth'); } public function index(Request $request, OrderPackageFilters $filters) { /** @var UserService $userService */ $userService = app('UserService'); $owner_ids = $userService->getPermittingOwnerIds(auth()->user()); $paginateParams = $request->input(); $orderPackages = OrderPackage::query() ->filter($filters) ->with([ 'order.logistic', 'rejectedBill'=>function($query){ $query->select('id','logistic_number','logistic_number_return')->where('logistic_number', '原单退回'); }, 'orderPackageRemarks' => function ($query) { $query->with('user')->orderByDesc('created_at'); }, 'order.owner', 'order.issue' => function ($query) { $query->with(['issueType', 'logs' => function ($query) { $query->with('user')->orderBy('created_at', 'DESC'); }]); }]) ->orderByDesc('id') ->paginate($request->paginate ?? 50); $logistics = Logistic::all(); $owners = Owner::find($owner_ids); return view('package.logistic.index', compact('orderPackages', 'logistics', 'owners', 'paginateParams')); } public function update(Request $request) { $data = []; if ('无' == $request->input('exception_type')) { $data['exception_type'] = $request->input('exception_type'); $data['exception'] = "否"; } else { $data['exception_type'] = $request->input('exception_type'); } OrderPackage::query()->where('id', $request['id'])->update($data); //更新统计数据 event(new UpdateOrderPackageExceptionListenerEvent([$request['id']])); } public function batchUpdate(Request $request) { $data['status'] = OrderPackage::switchStatus($request->input('status')); $logistic_numbers = $request->input('logistic_numbers'); //标记为手动更新 $data['is_manual_update']= true; OrderPackage::query()->whereIn('logistic_number', $logistic_numbers)->update($data); } /** * @throws Exception */ public function export(Request $request, OrderPackageFilters $filters) { /** @var UserService $userService */ $userService = app('UserService'); $owner_ids = $userService->getPermittingOwnerIds(auth()->user()); $query = OrderPackage::query() ->filter($filters) ->whereIn('owner_id', $owner_ids) ->with(['order.logistic', 'order.owner', 'order.issue' => function ($query) { $query->with(['issueType', 'logs' => function ($query) { $query->with('user')->orderBy('created_at', 'DESC'); }]); }]); if ($request->exists('checkAllSign')) { $orderPackages = $query->orderByDesc('id')->get(); } else { $orderPackages = $query ->whereIn('logistic_number', explode(',', $request['data'])) ->orderByDesc('id')->get(); } $row = ["异常类型", "单号", "状态", "快递公司", "货主", "省份", "发出日期", "收货日期", "称重日期", "快递路由", "客服备注", "情况说明", "问题类别", "说明", "操作者", "时间",]; $json = []; foreach ($orderPackages as $orderPackage) { $transfer_status = ""; if (is_array($orderPackage->transfer_status) && !empty($orderPackage->transfer_status)) { foreach ($orderPackage->transfer_status as $transfer) { $transferItemStr = ""; $transferItemStr = $transferItemStr . $transfer['accept_address'] . " " . $transfer['remark'] . " " . $transfer['accept_time']; $transfer_status = $transfer_status . $transferItemStr . ",\r\n"; } } $remark = ""; if (is_array($orderPackage->remark) && !empty($orderPackage->remark)) { foreach ($orderPackage->remark as $remarkItem) { $remark = $remark . $remarkItem . ",\r\n"; } } $logsContent = ""; $users = ""; $logCreatedAt = ""; if ($orderPackage->order && $orderPackage->order->issue) { foreach ($orderPackage->order->issue->logs as $log) { $logsContent = $logsContent . $log->content . ",\r\n"; $users = $users . $log->user->name . ",\r\n"; $logCreatedAt = $logCreatedAt . $log->created_at . ",\r\n"; } } $data = [ $orderPackage->logistic_number, $orderPackage->status, $orderPackage->order->logistic->name, $orderPackage->order->owner->name, $orderPackage->order->province, $orderPackage->sent_at, $orderPackage->received_at, $orderPackage->weighed_at, $transfer_status, $remark, $logsContent, $users, $logCreatedAt, ]; $json[] = $data; } return Export::make($row, $json, "包裹快递"); } }