share('nav', 4); $this->middleware('auth'); } public function index() { $orders = Order::where('user_id', Auth::id()) ->where('state', '<>', Order::ORDER_CLOSED) ->orderBy('id', 'desc') ->get(); return view('orders.index', compact('orders')); } public function unpay() { $orders = Order::Unpaid() ->where('user_id', Auth::id()) ->orderBy('id', 'desc') ->get(); return view('orders.index', compact('orders')); } public function paid() { $orders = Order::UnDeliver() ->where('user_id', Auth::id()) ->orderBy('id', 'desc') ->get(); return view('orders.index', compact('orders')); } public function delivered() { $orders = Order::Delivered() ->where('user_id', Auth::id()) ->orderBy('id', 'desc') ->get(); return view('orders.index', compact('orders')); } public function signed() { $orders = Order::Signed() ->where('user_id', Auth::id()) ->orderBy('id', 'desc') ->get(); return view('orders.index', compact('orders')); } public function show($orderid) { $order = Order::where('orderid', $orderid)->firstOrFail(); return view('orders.show', compact('order')); } //确认订单 public function create(Request $request) { $user = Auth::user(); $address_id = $request->get('address', ''); $address = $address_id ? UserAddress::find($address_id) : UserAddress::where('user_id', Auth::id())->orderBy('is_default', 'desc')->first() ?? ''; if (!($request->has('details'))) { $items = Session::get('items_store'); } else { $items = $request->details; Session::put(['items_store' => $items]); } //为存储到order表中区分普通商品or套餐商品,item_id>0套餐商品 if (!($request->has('item'))) { $item = Session::get('item'); } else { $item = $request->item; Session::put(['item' => $item]); } if (empty($items)) { return redirect()->route('user.index'); } $sellers_score = 0; $sellers_total = 0; $sellers_freight = 0; $sellers_count = 0; //按照商户分单,一个商户一个订单,一个订单可多个商品 foreach ($items as $key => $seller_item) { $detail[$key]['seller_id'] = $key; $detail[$key]['amount'] = 0; $detail[$key]['freight'] = 0; $detail[$key]['heavy'] = 0; $detail[$key]['score'] = 0; foreach ($seller_item as $kk => $value) { $params = GoodsParams::find($value['params_id']); if ($params) { if ($item['type'] == 'MEMBER') { $price = $user->identity_id > 0 ? $params->price : $params->original; } else { $price = $params->price; } $detail[$key]['items'][] = [ 'params_id' => $params->id, 'params_cover' => $params->storage, 'params_title' => $params->getTitle(), 'params_price' => $price, 'params_score' => $params->score, 'number' => $value['number'], 'cart_id' => isset($value['cart_id']) ? $value['cart_id'] : 0, //是否从购物车下单的商品 ]; } $detail[$key]['amount'] += $value['number'] * $price; $detail[$key]['score'] += $value['number'] * $params->score; } $sellers_score += $detail[$key]['score']; $sellers_total += $detail[$key]['amount']; $detail[$key]['freight'] = 0; //包邮 $detail[$key]['item']['id'] = $item['id']; //0普通商品订单,一单支持多商品, $detail[$key]['item']['type'] = $item['type']; //0普通商品订单,一单支持多商品, $card_id = $item['card_id'] ?? 0; $sellers_total += $detail[$key]['freight']; $sellers_freight += $detail[$key]['freight']; $sellers_count += 1; } return view('orders.create', compact('detail', 'address', 'sellers_total', 'sellers_score', 'sellers_freight', 'sellers_count', 'card_id')); } public function store(Request $request) { $user = Auth::user(); try { DB::transaction(function () use ($request, $user) { $address = UserAddress::find($request->address_id); $card_id = $request->card_id ?? 0; foreach ($request->details as $kk => $seller_detail) { $items[$kk] = array(); $score[$kk] = 0; $score_order[$kk] = 0; foreach ($seller_detail['items'] as $key => $value) { if ($value['cart_id'] != 0 && $cart = Cart::find($value['cart_id'])) { $cart->delete(); } $params = GoodsParams::find($value['params_id']); if ($seller_detail['type'] == 'MEMBER' && $user->identity_id < 1) { $params->price = $params->original; } array_push($items[$kk], new OrderDetail(['goods' => $params, 'number' => $value['number']])); } $express_type[$kk] = isset($seller_detail['express_type']) ? $seller_detail['express_type'] : 1; $seller_detail['freight'] = 0; $this->orderid = \Orders::create(Auth::id(), $seller_detail['seller_id'], $seller_detail['type'], $items[$kk], $express_type[$kk], $address, $request->remark, null, $score_order[$kk], $seller_detail['freight'], $card_id); } }); Session::forget('items_store'); Session::forget('item'); return $this->success('订单创建成功', route('pay.order', $this->orderid)); } catch (\Exception $e) { return $this->error('订单创建失败' . $e->getmessage()); } } public function sign($orderid) { $order = Order::where('orderid', $orderid)->firstOrFail(); try { $order->signin(); return $this->success('签收成功', route('orders.signed')); } catch (\Exception $e) { return $this->error('签收失败' . $e->getmessage()); } } public function delete($orderid) { $order = Order::where('orderid', $orderid)->firstOrFail(); try { $order->close(); return $this->success('取消订单成功'); } catch (\Exception $e) { return $this->error('取消订单失败' . $e->getmessage()); } } }