middleware('auth'); view()->share('nav', 4); } public function index() { $addresses = Auth::user()->addresses()->orderBy('is_default', 'desc')->orderBy('id', 'desc')->get(); if ($addresses->isEmpty()) { return redirect()->route('addresses.create'); } $provinces = Area::where('type', '省级')->pluck('name', 'sn'); return view('address.index', compact('addresses', 'provinces')); } public function create() { $provinces = \Area::index(0); return view('address.create', compact('provinces')); } public function store(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required|max:4', 'mobile' => ['required', new Checkmobile], 'province_sn' => 'required', 'city_sn' => 'required', 'area_sn' => 'required', 'address' => 'required', ], [ 'name.required' => '收货人必须填写', 'name.max' => '收货人最多:max字符', 'mobile.required' => '手机号必须填写', 'province_sn.required' => '省份必须选择', 'city_sn.required' => '城市必须选择', 'area_sn.required' => '地区必须选择', 'address.required' => '详细地址必须填写', ]); if ($validator->fails()) { return $this->error($validator->errors()->first()); } $data = [ 'user_id' => Auth::id(), 'name' => $request->name, 'mobile' => $request->mobile, 'province_sn' => $request->province_sn, 'city_sn' => $request->city_sn, 'area_sn' => $request->area_sn, 'address' => $request->address, ]; if ($request->has('def')) { $data['is_default'] = 1; } $info = \Address::store($data); if ($request->callback) { $callback = $request->callback . '?address=' . $info->id; } else { $callback = route('addresses.index'); } return $this->success('地址创建成功', $callback); } public function show(UserAddress $address) { # code... } public function edit(UserAddress $address) { $provinces = \Area::index(0); $cities = \Area::index($address->province_sn); $areas = \Area::index($address->city_sn); return view('address.edit', compact('address', 'provinces', 'cities', 'areas')); } public function update(Request $request, UserAddress $address) { if (\Address::update($address, $request->all())) { return $this->success('修改成功', route('addresses.index')); } else { return $this->error('修改失败'); } } public function destroy($id) { if (\Address::destroy($id)) { return $this->success('删除成功', route('addresses.index')); } else { return $this->error(); } } public function select(Request $request) { $callback = $request->has('callback') && $request->callback == route('orders.create') ? route('orders.create') : route('orders.create'); $addresses = Auth::user()->addresses()->orderBy('is_default', 'desc')->orderBy('id', 'desc')->get(); return view('address.change', compact('addresses', 'callback')); } public function areas(Request $request) { if (empty($request->psn)) { return ['msg' => '请选择省份', 'code' => 0]; } $areas = \Area::index($request->psn); if ($areas) { return response()->json(['msg' => '', 'code' => 1, 'data' => $areas]); } else { return ['msg' => '请选择省份/城市', 'code' => 0]; } } public function setdef($id) { if (\Address::setDefault(UserAddress::find($id))) { return $this->success('设置成功', route('addresses.index')); } else { return $this->error(); } } }