share('nav', 2); view()->share('app_title', '提货商城'); } public function index(Request $request) { $area = $this->getDefault('area'); $this->setSearchValue($request); $pick_search = session('pick_search'); $number = $pick_search['number']; $operator = $pick_search['operator']; $begin = $pick_search['begin']; $type = $pick_search['type']; $adverts = Advert::where('channel', 'pick')->orderBy('sort', 'asc')->take(5)->get(); //banner $lists = Mobile::where('status', 1) ->when($number, function ($q) use ($number) { $q->where('number', 'like', "%{$number}"); }) ->when($operator, function ($q) use ($operator) { $q->where('operator', $operator); }) ->when($area->sn, function ($q) use ($area) { $q->where('city_sn', $area->sn); }) ->when($begin, function ($q) use ($begin) { $q->where('begin', $begin); }) ->when($type, function ($q) use ($type) { $q->where('type', $type); }) ->inRandomOrder() ->take(6) ->get(); if ($request->isMethod('POST')) { if ($lists->isNotEmpty()) { $html = response(view('pick.mobile', compact('lists')))->getContent(); return $this->success($html); } else { return $this->error('没有数据了'); } } else { view()->share('user', Auth::user()); return view('pick.index', compact('lists', 'adverts', 'area', 'number')); } } public function setSearchValue($request) { $pick_search = [ 'number' => '', 'operator' => [], 'begin' => [], 'type' => [], ]; foreach ($request->all() as $key => $value) { $pick_search[$key] = $value; } session(['pick_search' => $pick_search]); } //更多 public function lists(Request $request) { $adverts = Advert::where('channel', 'pick')->orderBy('sort', 'asc')->take(5)->get(); //banner $area = $this->getDefault('area'); $this->setSearchValue($request); $pick_search = session('pick_search'); $number = $pick_search['number']; $operator = $pick_search['operator']; $begin = $pick_search['begin']; $type = $pick_search['type']; $lists = Mobile::where('status', 1) ->when($number, function ($q) use ($number) { $q->where('number', 'like', "%{$number}"); }) ->when($area->sn, function ($q) use ($area) { $q->where('city_sn', $area->sn); }) ->when($operator, function ($q) use ($operator) { $q->whereIn('operator', $operator); }) ->when($begin, function ($q) use ($begin) { $q->whereIn('begin', $begin); }) ->when($type, function ($q) use ($type) { $q->whereIn('type', $type); }) ->paginate(); if ($request->isMethod('AJAX')) { $html = response(view('pick.mobile', compact('lists')))->getContent(); return $this->success($html); } else { return view('pick.lists', compact('lists', 'adverts', 'number', 'area')); } } //领取手机号 public function receiveMobile(Request $request) { $id = $request->mobile_id; $mobile = Mobile::find($id); $res = $this->checkCard($request); if ($res['status'] != 'ERROR') { $card = $res['card']; } else { $url = $res['redirect'] ?? ''; return $this->error($res['message'], $url); } try { DB::transaction(function () use ($mobile, $card) { $data = new OrderDetail(['goods' => $mobile, 'number' => 1]); $this->orderid = \Orders::create(Auth::id(), 0, 'PICK', [0 => $data], 0, null, '', null, 0, 0, $card->id); }); return $this->success('订单创建成功', route('pay.order', $this->orderid)); } catch (\Exception $e) { return $this->error('订单创建失败' . $e->getmessage()); } } //领取商品 public function receiveGoods(Request $request) { $params_id = $request->params_id; $params = Mobile::find($params_id); $res = $this->checkCard($request); if ($res['status'] != 'ERROR') { $card = $res['card']; } else { return $this->error($res['message'], $res['redirect']); } $data['details'][0][1]['params_id'] = $params_id; $data['details'][0][1]['number'] = 1; $data['item']['id'] = 0; $data['item']['type'] = 'PICK'; $data['item']['card_id'] = $card->id; return $this->success('领取成功', route('orders.create', $data)); } //校验提货卡 public function checkCard($request) { if (!Auth::user()) { return $this->error('请登录后进行此操作', route('login', ['callback' => url()->current()])); } if (count(array_filter($request->pass)) != 4) { return $this->error('卡密必须输入完整'); } $pass = implode('-', $request->pass); $card = Card::where('pass', $pass)->first(); if (!$card) { return ['status' => 'ERROR', 'message' => '卡密不正确']; } elseif ($card->status == 5 || empty($card->user_id)) { return ['status' => 'ERROR', 'message' => '卡号状态不对']; } return ['status' => 'SUCCESS', 'card' => $card]; } //提货商品详情 public function detail(Goods $good) { $params = $good->params()->where('stock', '>', 0)->orderBy('price', 'asc')->get(); $first = $good->params()->orderBy('original', 'asc')->first(); $user = Auth::user(); return view('pick.detail', compact('good', 'params', 'user', 'first')); } public function search() { $pick_search = session('pick_search'); return view('pick.search', compact('pick_search')); } }