public function postOrder() { $now = new DateTime(); $token = Input::get('token', ''); $u_id = Input::get('u_id', 0); $amount_origin = Input::get('amount_origin', 0); $amount = Input::get('amount', 0); $shipping_fee = Input::get('shipping_fee', 0); $shipping_name = Input::get('shipping_name', ''); $shipping_phone = Input::get('shipping_phone', ''); $shipping_address = Input::get('shipping_address', ''); $shipping = Input::get('shipping', 1); $delivery_time = Input::get('delivery_time', $now->format('Y-m-d H:i:s')); $comment = Input::get('comment', ''); $carts = Input::get('carts', null); DB::beginTransaction(); try { if (empty($carts)) { throw new Exception("请传入有效的购物车", 1); } $carts = explode(',', $carts); $user = User::chkUserByToken($token, $u_id); $list = Cart::whereIn('c_id', $carts)->get(); $total_amount = 0; $total_amount_origin = 0; $b_ids = []; $amount_origin_sum = 0; $amount_sum = 0; $groups = []; foreach ($list as $key => $cart) { if ($cart->u_id != $u_id) { throw new Exception("没有权限操作该购物车", 7001); } if ($cart->c_status > 1) { throw new Exception("购物车无效", 7005); } $cart->updateCart($cart->c_quantity); if (empty($groups[$cart->b_id]['amount_origin'])) { $groups[$cart->b_id]['amount_origin'] = 0; $groups[$cart->b_id]['amount'] = 0; $groups[$cart->b_id]['carts_ids'] = []; } $groups[$cart->b_id]['amount_origin'] += $cart->c_amount_origin; $groups[$cart->b_id]['amount'] += $cart->c_amount; $groups[$cart->b_id]['carts_ids'][] = $cart->c_id; $b_ids[] = $cart->b_id; $amount_sum += $groups[$cart->b_id]['amount']; $amount_origin_sum += $groups[$cart->b_id]['amount_origin']; } if ($amount_origin_sum != $amount_origin || $amount_sum != $amount) { throw new Exception("支付金额已刷新, 请重新提交订单", 9003); } $order_group_no = Order::generateOrderGroupNo($u_id); foreach ($groups as $b_id => $group) { $rnd_str = rand(10, 99); $order_no = $order_group_no . $b_id . $rnd_str; $order = new Order(); $order->u_id = $u_id; $order->b_id = $b_id; $order->o_amount_origin = $group['amount_origin']; $order->o_amount = $group['amount']; $order->o_shipping_fee = $shipping_fee; $order->o_shipping_name = $shipping_name; $order->o_shipping_phone = $shipping_phone; $order->o_shipping_address = $shipping_address; $order->o_delivery_time = $delivery_time; $order->o_shipping = $shipping; $order->o_comment = $comment; $order->o_number = $order_no; $order->o_group_number = $order_group_no; $o_id = $order->addOrder(); Cart::bindOrder([$order->o_id => $group['carts_ids']]); } // push msg to seller $list = Booth::whereIn('b_id', $b_ids)->get(); foreach ($list as $key => $booth) { $obj = new MessageDispatcher($booth->u_id); $obj->fireTextToUser('您有新的订单, 请及时发货'); } $re = Tools::reTrue('提交订单成功', ['order_no' => $order_group_no]); DB::commit(); } catch (Exception $e) { $re = Tools::reFalse($e->getCode(), $e->getMessage()); DB::rollback(); } return Response::json($re); }