Esempio n. 1
0
 public function addtocart($goods_id)
 {
     $msg = array();
     if (!$goods_id) {
         $msg['error'] = '-1';
         $msg['msg'] = '加入购物车失败!';
         echo json_encode($msg);
         throw new Exception('exit');
     }
     $goods_id = (int) $goods_id;
     //模拟下单start
     $uid = LuS::get('uid');
     $data['goods_id'] = $goods_id;
     $data['goods_num'] = 1;
     // $data = $goods_id;
     //购物车已经存在$goods_id商品的数量
     $cart_goods_info = Cart::getCartGoodsInfoByGoodsId($uid, $goods_id);
     //检查库存
     $goods_info = AdminGoodsM::getGoodsInfoByGoodsId($goods_id);
     if ($goods_info['goods_num'] < $data['goods_num'] + $cart_goods_info['goods_num']) {
         $msg['error'] = '-2';
         $msg['msg'] = '库存不足!';
         echo json_encode($msg);
         throw new Exception('exit');
     }
     //添加
     $add_rs = Cart::add($uid, $data);
     if ($add_rs) {
         //模拟下单end
         $msg['error'] = '1';
         $msg['msg'] = '加入购物车成功!';
         $msg['num'] = Cart::getCount($uid);
     } else {
         //模拟下单end
         $msg['error'] = '-1';
         $msg['msg'] = '加入购物车失败!';
     }
     echo json_encode($msg);
     throw new Exception('exit');
 }
Esempio n. 2
0
 public function _show($smarty)
 {
     $uid = LuS::get('uid');
     if ($uid) {
         $is_login = true;
     } else {
         $is_login = false;
     }
     $smarty->assign('is_login', $is_login);
     //首页
     $home_url = HOMEURL;
     $smarty->assign('home_url', $home_url);
     //登录
     $login_url = url('login', 'login::index');
     $smarty->assign('login_url', $login_url);
     //注册
     $reg_url = url('reg', 'reg::index');
     $smarty->assign('reg_url', $reg_url);
     //退出登录
     $outlogin_url = url('home', 'home::outlogin');
     $smarty->assign('outlogin_url', $outlogin_url);
     //个人中心
     $usercenter_url = url('usercenter', 'usercenter::index');
     $smarty->assign('usercenter_url', $usercenter_url);
     $my_order_url = url('usercenter', 'usercenter::orderlist');
     $smarty->assign('my_order_url', $my_order_url);
     //用户名
     $username = LuS::get('username');
     $smarty->assign('username', $username);
     //购物车数量
     $cart_num = Cart::getCount($uid);
     $smarty->assign('cart_num', $cart_num);
     //购物车
     $cart_url = url('goods', 'goods::cart');
     $smarty->assign('cart_url', $cart_url);
 }
 public function checkout()
 {
     $cartModel = new Cart();
     //Check cart is not empty
     $cartData = $cartModel->getCount();
     if ($cartData <= 0) {
         $this->Session->setFlash('Your cart is empty, please back to homepage to shopping.', 'default', array(), 'success');
         $this->redirect(array('controller' => 'carts', 'action' => 'view'));
     }
     //Check and save Customer data to database
     if ($this->request->is('post') && !empty($this->request->data)) {
         $this->Customer->create();
         if ($this->Customer->save($this->request->data)) {
             $customerId = $this->Customer->getLastInsertID();
             //Save data to "invoices" table
             $invoiceModel = new Invoice();
             $invoiceData = array();
             $invoiceData['Invoice']['customer_id'] = $customerId;
             $invoiceData['Invoice']['order_date'] = date('Y-d-m H:i:s', strtotime('+1day'));
             $foodModel = new Food();
             $cartArray = $cartModel->readFood();
             $totalPrice = $foodModel->getTotalPriceByCart($cartArray);
             $invoiceData['Invoice']['total_price'] = $totalPrice;
             $invoiceData['Invoice']['note'] = $this->request->data['Customer']['note'];
             $invoiceData['Invoice']['price_temp'] = $totalPrice;
             $invoiceData['Invoice']['price_refund'] = 0;
             $invoiceData['Invoice']['payment_type'] = 'Cash';
             if ($invoiceModel->save($invoiceData)) {
                 $invoiceId = $invoiceModel->getLastInsertID();
                 //Save data to "invoice_details" table
                 foreach ($cartArray as $foodId => $amount) {
                     $invoiceDetailModel = new InvoiceDetail();
                     $invoiceDetailData = array();
                     $invoiceDetailData['InvoiceDetail']['invoice_id'] = $invoiceId;
                     $invoiceDetailData['InvoiceDetail']['food_id'] = $foodId;
                     $invoiceDetailData['InvoiceDetail']['amount'] = $amount;
                     $foodData = $foodModel->getFoodDataById($foodId);
                     $invoiceDetailData['InvoiceDetail']['price'] = $foodData['Food']['price'];
                     $invoiceDetailData['InvoiceDetail']['is_choose'] = 0;
                     $invoiceDetailModel->save($invoiceDetailData);
                 }
                 //Set invoice_id to session after insert data to "invoices" table
                 CakeSession::write('invoice_id', $invoiceId);
                 //Remove cart ordered
                 $cartModel->resetCart();
                 $this->Session->setFlash('Thanks for your ordered.', 'default', array(), 'success');
                 $this->redirect(array('controller' => 'customers', 'action' => 'order'));
             }
         } else {
             $this->Session->setFlash('Please input correct data.', 'default', array(), 'error');
         }
     }
     //Show carts list
     $carts = $cartModel->readFood();
     $foods = array();
     if (null != $carts) {
         foreach ($carts as $foodId => $count) {
             $foodModel = new Food();
             $food = $foodModel->read(null, $foodId);
             $food['Food']['count'] = $count;
             $foods[] = $food;
         }
     }
     $this->set(compact('foods'));
 }
Esempio n. 4
0
 public function getResponse()
 {
     $this->doorGets->checkAjaxMode();
     $response = array('code' => 404, 'data' => array());
     $arrayAction = array('index' => 'Home', 'add' => 'add', 'plus' => 'plus', 'minus' => 'minus', 'remove' => 'remove', 'shippingMethod' => 'shippingMethod');
     $out = '';
     $params = $this->doorGets->Params();
     $modules = $this->doorGets->getAllActiveModules();
     $lgActuel = $this->doorGets->getLangueTradution();
     $lg = 'en';
     if (array_key_exists('lg', $params['GET']) && array_key_exists($params['GET']['lg'], $this->doorGets->allLanguages)) {
         $lg = $this->doorGets->myLanguage = $params['GET']['lg'];
     }
     if (array_key_exists($this->Action, $arrayAction)) {
         switch ($this->Action) {
             case 'index':
                 break;
             case 'add':
                 if (true) {
                     $uri = array_key_exists('uri', $params['GET']) && !empty($params['GET']['uri']) ? $params['GET']['uri'] : '';
                     $quantity = array_key_exists('qty', $params['GET']) && !empty($params['GET']['qty']) ? (int) $params['GET']['qty'] : 1;
                     $id = array_key_exists('id', $params['GET']) && !empty($params['GET']['id']) ? $params['GET']['id'] : '';
                     if (empty($quantity)) {
                         $quantity = 1;
                     }
                     if (!empty($uri) && !empty($id) && array_key_exists($uri, $modules)) {
                         $sqlUri = $this->doorGets->getRealUri($uri);
                         $table = '_m_' . $sqlUri;
                         $tableTraduction = $table . '_traduction';
                         $isContent = $this->doorGets->dbQS($id, $table);
                         if (!empty($isContent)) {
                             $idTraduction = $this->doorGets->getIdContentTraduction($isContent);
                             if (!is_null($idTraduction)) {
                                 $isContentTraduction = $this->doorGets->dbQS($idTraduction, $tableTraduction);
                                 if (!empty($isContentTraduction)) {
                                     $product = array('uri' => $uri, 'id' => $id, 'quantity' => $quantity);
                                     $Cart = new Cart($this->doorGets);
                                     $Cart->addProduct($product);
                                     $Cart->save();
                                     $products = $Cart->getProducts();
                                     $productName = $products[$uri . '-' . $id]['title'];
                                     $response = array('code' => 200, 'data' => array('message' => $productName . ' ' . $this->doorGets->__("est dans votre panier") . '.', 'products' => $Cart->getProducts(), 'count' => $Cart->getCount(), 'totalAmount' => number_format($Cart->getTotalAmount(), 2, ',', ' '), 'totalAmountVat' => number_format($this->vat * $Cart->getTotalAmount() + $Cart->shippingAmount, 2, ',', ' '), 'subtotalAmountVat' => $Cart->getSubTotalAmountPromoVAT(true), 'totalAmountPromo' => number_format($Cart->getTotalAmountPromo(), 2, ',', ' '), 'totalAmountPromoVat' => number_format($this->vat * $Cart->getTotalAmountPromo() + $Cart->shippingAmount, 2, ',', ' '), 'shippingAmount' => $Cart->getShippingAmount(), 'langue' => $lg, 'uri' => $uri));
                                 }
                             }
                         }
                     }
                 }
                 break;
             case 'minus':
                 if (array_key_exists('uri', $params['GET'])) {
                     $uri = $params['GET']['uri'];
                     $Cart = new Cart($this->doorGets);
                     $newAmount = $Cart->minusProduct($uri);
                     $Cart->save();
                     $response = array('code' => 200, 'data' => array('message' => $this->doorGets->__("Le quantité du produit a été mise à jour") . '.', 'products' => $Cart->getProducts(true), 'count' => $Cart->getCount(), 'totalAmount' => $Cart->getTotalAmount(true), 'totalAmountVat' => $Cart->getTotalAmountVAT(true), 'subtotalAmountVat' => $Cart->getSubTotalAmountPromoVAT(true), 'totalAmountPromo' => $Cart->getTotalAmountPromo(true), 'totalAmountPromoVat' => $Cart->getTotalAmountPromoShippingVAT(true), 'shippingAmount' => $Cart->getShippingAmount(), 'langue' => $lg, 'newAmount' => $newAmount, 'uri' => $uri));
                 }
                 break;
             case 'plus':
                 if (array_key_exists('uri', $params['GET'])) {
                     $uri = $params['GET']['uri'];
                     $Cart = new Cart($this->doorGets);
                     $newAmount = $Cart->plusProduct($uri);
                     $Cart->save();
                     $response = array('code' => 200, 'data' => array('message' => $this->doorGets->__("Le quantité du produit a été mise à jour") . '.', 'products' => $Cart->getProducts(true), 'count' => $Cart->getCount(), 'totalAmount' => $Cart->getTotalAmount(true), 'totalAmountVat' => $Cart->getTotalAmountVAT(true), 'subtotalAmountVat' => $Cart->getSubTotalAmountPromoVAT(true), 'totalAmountPromo' => $Cart->getTotalAmountPromo(true), 'totalAmountPromoVat' => $Cart->getTotalAmountPromoShippingVAT(true), 'shippingAmount' => $Cart->getShippingAmount(), 'langue' => $lg, 'newAmount' => $newAmount, 'uri' => $uri));
                 }
                 break;
             case 'remove':
                 if (array_key_exists('uri', $params['GET'])) {
                     $uri = $params['GET']['uri'];
                     $Cart = new Cart($this->doorGets);
                     $Cart->removeProduct($uri);
                     $Cart->save();
                     $response = array('code' => 200, 'data' => array('message' => $this->doorGets->__("Le produit a été supprimé de votre panier") . '.', 'products' => $Cart->getProducts(true), 'count' => $Cart->getCount(), 'totalAmount' => $Cart->getTotalAmount(true), 'totalAmountVat' => $Cart->getTotalAmountVAT(true), 'subtotalAmountVat' => $Cart->getSubTotalAmountPromoVAT(true), 'totalAmountPromo' => $Cart->getTotalAmountPromo(true), 'totalAmountPromoVat' => $Cart->getTotalAmountPromoShippingVAT(true), 'shippingAmount' => $Cart->getShippingAmount(), 'langue' => $lg, 'uri' => $uri));
                 }
                 break;
             case 'shippingMethod':
                 if (array_key_exists('key', $params['GET'])) {
                     $key = $params['GET']['key'];
                     $Cart = new Cart($this->doorGets);
                     $Cart->setShippingMethod($key);
                     $Cart->save();
                     $response = array('code' => 200, 'data' => array('message' => $this->doorGets->__("Le prix de la livraison est à jour") . '.', 'products' => $Cart->getProducts(true), 'count' => $Cart->getCount(), 'totalAmount' => $Cart->getTotalAmount(true), 'totalAmountVat' => $Cart->getTotalAmountVAT(true), 'subtotalAmountVat' => $Cart->getSubTotalAmountPromoVAT(true), 'totalAmountPromo' => $Cart->getTotalAmountPromo(true), 'totalAmountPromoVat' => $Cart->getTotalAmountPromoShippingVAT(true), 'shippingAmount' => $Cart->getShippingAmount(), 'langue' => $lg));
                 }
                 break;
         }
     }
     return json_encode($response, JSON_FORCE_OBJECT);
 }