middleware('auth.api'); $this->user = \Auth::guard('api')->user(); $this->uid = \Auth::guard('api')->id(); } /** * 小程序收货地址列表页数据,页面初始化时请求该接口 */ public function index() { $addresses = $this->user->addresses()->orderBy('is_default', 'desc')->orderBy('id', 'desc')->get(); return AddressResource::collection($addresses)->additional([ 'status' => 'SUCCESS', 'status_code' => 200, ]); } /** * 小程序编辑收货地址,页面初始化时请求该接口 */ public function detail(UserAddress $address) { return $this->success(new AddressResource($address)); } /** * 新建保存/编辑更新操作 小程序新建、编辑页面点击保存时请求该接口。 * @param \Illuminate\Http\Request $request * @return array */ public function update(Request $request) { $address = []; if ($request->id) { $address = UserAddress::find($request->id); } $data = [ '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 (!empty($address)) { $res = \Address::update($address, $data); } else { $res = \Address::store( [ 'user_id' => $this->uid, '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 ($res) { return $this->success(['msg' => '修改成功']); } else { return $this->failed('修改失败'); } } /** * 小程序删除收货地址,地址管理页请求该接口 */ public function delete($id) { if (\Address::destroy($id)) { return $this->success(['msg' => '操作成功']); } else { return $this->failed('操作失败'); } } /** * 省市区三级联动返回数据,小程序新建/编辑收货地址中切换省市区时出现。 * @param \Illuminate\Http\Request $request * @return array */ public function areas(Request $request) { $psn = $request->psn; if ($psn == 0) { $areas = Area::where('psn', $psn)->where('depth', 1)->select(DB::raw('sn as id'), 'sn', 'psn', 'name', DB::raw('depth as type'))->get() ?? []; } else { $areas = Area::where(['psn' => $psn])->select(DB::raw('sn as id'), 'sn', 'psn', 'name', DB::raw('depth as type'))->get() ?? []; } if ($areas) { return $this->success($areas); } else { return $this->failed('请选择省份/城市'); } } }