all(); if (! isset($requestData['sort'])) { $requestData['sort'] = 'logistics.updated_at'; } $logisticsList = LogisticsRepo::list($requestData); $logistics = LogisticsResource::collection($logisticsList); $logisticsFormat = $logistics->jsonSerialize(); $data = [ 'logistics_format' => $logisticsFormat, 'logistics' => $logistics, 'type' => 'logistics', ]; $data = hook_filter('admin.logistics.index.data', $data); if ($request->expectsJson()) { return $logisticsFormat; } return view('admin::pages.logistics.index', $data); } public function trashed(Request $request) { $requestData = $request->all(); $requestData['trashed'] = true; $productList = LogisticsRepo::list($requestData); $products = LogisticsResource::collection($productList); $productsFormat = $products->jsonSerialize(); $data = [ 'categories' => CategoryRepo::flatten(locale()), 'products_format' => $productsFormat, 'products' => $products, 'type' => 'trashed', ]; $data = hook_filter('admin.product.trashed.data', $data); if ($request->expectsJson()) { return $products; } return view('admin::pages.products.index', $data); } public function create(Request $request) { return $this->form($request, new Logistics()); } public function store(LogisticsRequest $request) { try { $requestData = $request->all(); $logistics = (new LogisticsService)->create($requestData); $data = [ 'request_data' => $requestData, 'logistics' => $logistics, ]; hook_action('admin.logistics.store.after', $data); return redirect()->to(admin_route('logistics.index')) ->with('success', trans('common.created_success')); } catch (\Exception $e) { return redirect(admin_route('logistics.create')) ->withInput() ->withErrors(['error' => $e->getMessage()]); } } public function edit(Request $request, Logistics $logistics) { return $this->form($request, $logistics); } public function update(LogisticsRequest $request, Logistics $logistics) { try { $requestData = $request->all(); $logistics = (new LogisticsService)->update($logistics, $requestData); $data = [ 'request_data' => $requestData, 'logistics' => $logistics, ]; hook_action('admin.logistics.update.after', $data); return redirect()->to($this->getRedirect())->with('success', trans('common.updated_success')); } catch (\Exception $e) { return redirect(admin_route('products.edit', $product))->withErrors(['error' => $e->getMessage()]); } } public function copy(LogisticsRequest $request, Logistics $product) { try { $product = (new LogisticsService)->copy($product); $data = [ 'product' => $product, ]; hook_action('admin.product.copy.after', $data); return json_success(trans('common.copy_success'), []); } catch (\Exception $e) { return json_encode($e->getMessage()); } } public function destroy(Request $request, Logistics $logistics) { $logistics->delete(); hook_action('admin.logistics.destroy.after', $logistics); return json_success(trans('common.deleted_success')); } public function restore(Request $request) { $productId = $request->id ?? 0; Logistics::withTrashed()->find($productId)->restore(); hook_action('admin.product.restore.after', $productId); return ['success' => true]; } protected function form(Request $request, Logistics $logistics) { $logistics = hook_filter('admin.logistics.form.logistics', $logistics); $types = [ ['title' => 'weight','name'=>trans('admin/logistics.type_weight')], ['title' => 'num','name'=>trans('admin/logistics.type_num')], ['title' => 'free','name'=>trans('admin/logistics.type_free')], ]; // 获取 $countryIds = (array)explode(',',$logistics->country_ids); $logistics->country_ids = CountryRepo::getInList($countryIds); $data = [ 'logistics' => $logistics, 'types' => $types, '_redirect' => $this->getRedirect(), ]; $data = hook_filter('admin.logistics.form.data', $data); return view('admin::pages.logistics.form.form', $data); } public function name(int $id) { $name = LogisticsRepo::getName($id); return json_success(trans('common.get_success'), $name); } /** * 根据商品ID批量获取商品名称 * * @param Request $request * @return array */ public function getNames(Request $request): array { $productIds = explode(',', $request->get('product_ids')); $name = LogisticsRepo::getNames($productIds); return json_success(trans('common.get_success'), $name); } public function autocomplete(Request $request) { $products = LogisticsRepo::autocomplete($request->get('name') ?? ''); return json_success(trans('common.get_success'), $products); } public function updateStatus(Request $request) { LogisticsRepo::updateStatusByIds($request->get('ids'), $request->get('status')); return json_success(trans('common.updated_success'), []); } public function destroyByIds(Request $request) { $productIds = $request->get('ids'); LogisticsRepo::DeleteByIds($productIds); hook_action('admin.product.destroy_by_ids.after', $productIds); return json_success(trans('common.deleted_success'), []); } public function trashedClear() { LogisticsRepo::forceDeleteTrashed(); } }