orderid; $mobile = $request->mobile; $nickname = $request->nickname; $state = $request->state; $start = $request->start; $end = $request->end; $title = $request->title; $item_type = $request->item_type; $orderField = $request->orderField; $orderDirection = $request->orderDirection; $numPerPage = $request->numPerPage ?: 30; $admin = Admin::user(); $orders = Order::when($admin->id > 1, function ($query) use ($admin) { $query->where('seller_id', $admin->seller_id); }) ->when($orderid, function ($query) use ($orderid) { $query->where('orderid', 'like', "%{$orderid}%"); }) ->when($mobile, function ($query) use ($mobile) { $query->whereHas('user', function ($query) use ($mobile) { $query->where('mobile', 'like', "%{$mobile}%"); }); }) ->when($nickname, function ($query) use ($nickname) { $query->whereHas('user', function ($query) use ($nickname) { return $query->whereHas('info', function ($query) use ($nickname) { $query->where('nickname', 'like', "%{$nickname}%"); }); }); }) ->when($title, function ($query) use ($title) { $goods_ids = Goods::where('title', 'like', "%{$title}%")->pluck('id'); $params_ids = GoodsParams::whereIn('goods_id', $goods_ids)->pluck('id'); $query->whereHas('details', function ($query) use ($params_ids) { return $query->whereIn('item_id', $params_ids); }); }) ->when($item_type, function ($query) use ($item_type) { return $query->where('item_type', $item_type); }) ->when($state == '', function ($query) { return $query->where('state', '<>', Order::ORDER_CLOSED); }) ->when($state, function ($query) use ($state) { switch ($state) { case 'UNPAY': return $query->where('state', Order::ORDER_UNPAY); break; case 'PAID': return $query->whereIn('state', [Order::ORDER_PAID, Order::ORDER_DELIVER]); break; case 'DELIVERED': return $query->where('state', Order::ORDER_DELIVERED); break; case 'SIGNED': return $query->where('state', Order::ORDER_SIGNED); break; case 'CLOSED': return $query->where('state', Order::ORDER_CLOSED); break; case 'CANCEL': return $query->where('state', Order::ORDER_CANCEL); break; case 'COMPLETED': return $query->where('state', Order::ORDER_COMPLETED); break; default: break; } }) ->when($start && $end, function ($query) use ($start, $end) { $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]); }) ->when($start && !$end, function ($query) use ($start) { $query->where('created_at', '>=', $start); }) ->when((!$start && $end), function ($query) use ($end) { $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end)))); }) ->when($orderField, function ($query) use ($orderField, $orderDirection) { $query->orderBy($orderField, $orderDirection); }) ->with(['seller', 'user.info']) ->orderBy('created_at', 'desc') ->paginate($numPerPage); return view('Admin::orders.index', compact('orders')); } public function unpay(Request $request) { $orderid = $request->orderid; $mobile = $request->mobile; $nickname = $request->nickname; $start = $request->start; $end = $request->end; $title = $request->title; $item_type = $request->item_type; $orderField = $request->orderField; $orderDirection = $request->orderDirection; $numPerPage = $request->numPerPage ?: 30; $orders = Order::Unpaid()->where('seller_id', Admin::user()->seller_id) ->when($orderid, function ($query) use ($orderid) { $query->where('orderid', 'like', "%{$orderid}%"); }) ->when($mobile, function ($query) use ($mobile) { $query->whereHas('user', function ($query) use ($mobile) { $query->where('mobile', 'like', "%{$mobile}%"); }); }) ->when($nickname, function ($query) use ($nickname) { $query->whereHas('user', function ($query) use ($nickname) { return $query->whereHas('info', function ($query) use ($nickname) { $query->where('nickname', 'like', "%{$nickname}%"); }); }); }) ->when($title, function ($query) use ($title) { $goods_ids = Goods::where('title', 'like', "%{$title}%")->pluck('id'); $params_ids = GoodsParams::whereIn('goods_id', $goods_ids)->pluck('id'); $query->whereHas('details', function ($query) use ($params_ids) { return $query->whereIn('item_id', $params_ids); }); }) ->when($item_type, function ($query) use ($item_type) { return $query->where('item_type', $item_type); }) ->when($start && $end, function ($query) use ($start, $end) { return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]); }) ->when($start && !$end, function ($query) use ($start) { return $query->where('created_at', '>=', $start); }) ->when(!$start && $end, function ($query) use ($end) { return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end)))); }) ->when($orderField, function ($query) use ($orderField, $orderDirection) { $query->orderBy($orderField, $orderDirection); }) ->with(['seller', 'user.info']) ->orderBy('created_at', 'desc') ->paginate($numPerPage); return view('Admin::orders.index', compact('orders')); } public function paid(Request $request) { $orderid = $request->orderid; $mobile = $request->mobile; $nickname = $request->nickname; $start = $request->start; $end = $request->end; $title = $request->title; $item_type = $request->item_type; $orderField = $request->orderField; $orderDirection = $request->orderDirection; $numPerPage = $request->numPerPage ?: 30; $orders = Order::UnDeliver()->where('seller_id', Admin::user()->seller_id) ->when($orderid, function ($query) use ($orderid) { $query->where('orderid', 'like', "%{$orderid}%"); }) ->when($mobile, function ($query) use ($mobile) { $query->whereHas('user', function ($query) use ($mobile) { $query->where('mobile', 'like', "%{$mobile}%"); }); }) ->when($nickname, function ($query) use ($nickname) { $query->whereHas('user', function ($query) use ($nickname) { return $query->whereHas('info', function ($query) use ($nickname) { $query->where('nickname', 'like', "%{$nickname}%"); }); }); }) ->when($title, function ($query) use ($title) { $goods_ids = Goods::where('title', 'like', "%{$title}%")->pluck('id'); $params_ids = GoodsParams::whereIn('goods_id', $goods_ids)->pluck('id'); $query->whereHas('details', function ($query) use ($params_ids) { return $query->whereIn('item_id', $params_ids); }); }) ->when($item_type, function ($query) use ($item_type) { return $query->where('item_type', $item_type); }) ->when($start && $end, function ($query) use ($start, $end) { return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]); }) ->when($start && !$end, function ($query) use ($start) { return $query->where('created_at', '>=', $start); }) ->when(!$start && $end, function ($query) use ($end) { return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end)))); }) ->when($orderField, function ($query) use ($orderField, $orderDirection) { $query->orderBy($orderField, $orderDirection); }) ->with(['seller', 'user.info']) ->orderBy('created_at', 'desc') ->paginate($numPerPage); return view('Admin::orders.index', compact('orders')); } public function signed(Request $request) { $orderid = $request->orderid; $mobile = $request->mobile; $nickname = $request->nickname; $start = $request->start; $end = $request->end; $title = $request->title; $item_type = $request->item_type; $orderField = $request->orderField; $orderDirection = $request->orderDirection; $numPerPage = $request->numPerPage ?: 30; $orders = Order::Signed()->where('seller_id', Admin::user()->seller_id) ->when($orderid, function ($query) use ($orderid) { $query->where('orderid', 'like', "%{$orderid}%"); }) ->when($mobile, function ($query) use ($mobile) { $query->whereHas('user', function ($query) use ($mobile) { $query->where('mobile', 'like', "%{$mobile}%"); }); }) ->when($nickname, function ($query) use ($nickname) { $query->whereHas('user', function ($query) use ($nickname) { return $query->whereHas('info', function ($query) use ($nickname) { $query->where('nickname', 'like', "%{$nickname}%"); }); }); }) ->when($item_type, function ($query) use ($item_type) { return $query->where('item_type', $item_type); }) ->when($title, function ($query) use ($title) { $goods_ids = Goods::where('title', 'like', "%{$title}%")->pluck('id'); $params_ids = GoodsParams::whereIn('goods_id', $goods_ids)->pluck('id'); $query->whereHas('details', function ($query) use ($params_ids) { return $query->whereIn('item_id', $params_ids); }); }) ->when($start && $end, function ($query) use ($start, $end) { return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]); }) ->when($start && !$end, function ($query) use ($start) { return $query->where('created_at', '>=', $start); }) ->when(!$start && $end, function ($query) use ($end) { return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end)))); }) ->when($orderField, function ($query) use ($orderField, $orderDirection) { $query->orderBy($orderField, $orderDirection); }) ->with(['seller', 'user.info']) ->orderBy('created_at', 'desc') ->paginate($numPerPage); return view('Admin::orders.index', compact('orders')); } public function show(Order $order) { return view('Admin::orders.show', compact('order')); } /** * 订单发货 * @Author: * @Date:2018-11-02T14:47:34+0800 * @return [type] [description] */ public function deliver(Request $request, Order $order) { if ($request->isMethod('PUT')) { try { $order->deliver($request->company, $request->number); return $this->success('发货成功', 'close'); } catch (\Exception $e) { return $this->error('发货失败' . $e->getmessage()); } } else { return view('Admin::orders.deliver', compact('order')); } } public function signin(Order $order) { try { $order->deliver('自提', '自提'); $order->signin(); return $this->success('操作成功'); } catch (\Exception $e) { return $this->error('操作失败' . $e->getmessage()); } } /** * 订单发货 * @Author: * @Date:2018-11-02T14:47:34+0800 * @return [type] [description] */ public function remark(Request $request, Order $order) { if ($request->isMethod('PUT')) { try { $order->remark_mgr = $request->remark_mgr; $order->save(); return $this->success('备注成功', 'close'); } catch (\Exception $e) { return $this->error('备注失败' . $e->getmessage()); } } else { return view('Admin::orders.remark', compact('order')); } } /** * 取消订单 * @Author: * @Date:2018-11-02T14:45:57+0800 * @return [type] [description] */ public function destroy() {} public function close(Order $order) { try { $order->close(); return $this->success('操作成功'); } catch (\Exception $e) { return $this->error('操作失败' . $e->getmessage()); } } public function complete(Order $order) { try { $order->complete(); return $this->success('操作成功'); } catch (\Exception $e) { return $this->error('操作失败' . $e->getmessage()); } } public function logistic(Order $order) { $message = Logistic::getMessage($order->express->company ?? '', $order->express->number ?? ''); //类型csn,编号 return view('Admin::orders.logistic', compact('order', 'message')); } }