public function getAuction($id)
 {
     try {
         $auction = Auction::find($id);
         if (empty($auction)) {
             throw new Exception("没有找到请求的数据", 2001);
         }
         $auction->load('eventItem');
         $data = $auction->showDetail();
         $re = Tools::reTrue('获取竞拍成功', $data);
     } catch (Exception $e) {
         $re = Tools::reFalse($e->getCode(), '获取竞拍失败:' . $e->getMessage());
     }
     return Response::json($re);
 }
Example #2
0
 public function checkoutAuction()
 {
     if ($this->c_type != 4) {
         return true;
     }
     $auction = Auction::find($this->p_id);
     $auction->a_status = 3;
     $bid = AuctionBid::find($auction->a_win_id);
     $bid->is_pay = 1;
     $auction->save();
     $bid->save();
     return true;
 }
 public function postOrder($id)
 {
     $token = Input::get('token', '');
     $u_id = Input::get('u_id', '');
     $shipping_name = Input::get('shipping_name', '');
     $shipping_phone = Input::get('shipping_phone', '');
     $shipping_address = Input::get('shipping_address', '');
     $comment = Input::get('comment', '');
     DB::beginTransaction();
     try {
         $user = User::chkUserByToken($token, $u_id);
         $now = Tools::getNow();
         $auction = Auction::find($id);
         if (empty($auction) || $auction->a_status != 2) {
             throw new Exception("请求的竞拍不存在", 2001);
         }
         $auction->load(['eventItem']);
         $bid = AuctionBid::find($auction->a_win_id);
         if (empty($bid) || $bid->is_pay) {
             throw new Exception("出价信息有误", 2001);
         }
         $limit = new DateTime($auction->eventItem->e_end_at);
         $limit->modify('+3 days');
         $now = Tools::getNow(false);
         if ($limit < $now) {
             $blacklist = new AuctionBlacklist();
             $blacklist->u_id = $u_id;
             $blacklist->a_id = $auction->a_id;
             $blacklist->start_at = $now;
             $now->modify('+7 days');
             $blacklist->end_at = $now->format('Y-m-d H:i:s');
             $blacklist->remark = '超时未购买';
             $blacklist->save();
             $auction->a_status = 4;
             $auction->save();
             throw new Exception("竞拍已超时, 无法购买", 2);
             //when exception code is 2, commit anyway after catch
         }
         // add cart
         $cart = new Cart();
         $cart->p_id = $auction->a_id;
         $cart->p_name = $auction->eventItem->e_title;
         $cart->u_id = $u_id;
         $cart->b_id = Tools::getMakerBooth();
         $cart->created_at = Tools::getNow();
         $cart->c_quantity = 1;
         $cart->c_price = $auction->a_win_price;
         $cart->c_amount = $auction->a_win_price;
         $cart->c_discount = 100;
         $cart->c_price_origin = $auction->a_cost;
         $cart->c_amount_origin = $auction->a_cost;
         $cart->c_status = 2;
         $cart->c_type = 4;
         $re = $cart->save();
         if (!$re) {
             throw new Exception("提交库存失败", 7006);
         }
         $shipping_name = $shipping_name ? $shipping_name : $user->u_name;
         $shipping_phone = $shipping_phone ? $shipping_phone : $user->u_mobile;
         // add order
         $order_group_no = Order::generateOrderGroupNo($u_id);
         $rnd_str = rand(10, 99);
         $order_no = $order_group_no . $cart->b_id . $rnd_str;
         $order = new Order();
         $order->u_id = $u_id;
         $order->b_id = $cart->b_id;
         $order->o_amount_origin = $cart->c_amount_origin;
         $order->o_amount = $cart->c_amount;
         $order->o_shipping_fee = 0.0;
         $order->o_shipping_name = $shipping_name;
         $order->o_shipping_phone = $shipping_phone;
         $order->o_shipping_address = $shipping_address;
         $order->o_delivery_time = Tools::getNow();
         $order->o_shipping = 1;
         $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 => [$cart->c_id]]);
         $data = ['order_no' => $order_group_no];
         $re = Tools::reTrue('提交订单成功', $data);
         DB::commit();
     } catch (Exception $e) {
         $re = Tools::reFalse($e->getCode(), '提交订单失败:' . $e->getMessage());
         if ($e->getCode() == 2) {
             DB::commit();
         } else {
             DB::rollback();
         }
     }
     return Response::json($re);
 }