Exemple #1
0
 public function login()
 {
     $user = new \Model\UserModel();
     if (!empty($_POST)) {
         //检验验证码
         $verify = new \Think\Verify();
         if ($verify->check($_POST['captcha'])) {
             //检验用户名和密码
             //通过返回值判断是否成功
             //成功:返回用户信息  失败:flase
             $info = $user->checkNamePwd($_POST['username'], $_POST['password']);
             if ($info) {
                 //如果检验通过保存session
                 session('user_id', $info['user_id']);
                 session('username', $info['username']);
                 //移动购物车数据
                 $cart = new \Model\CartModel();
                 $cart->moveData();
                 $this->redirect('buy/cartlist');
             } else {
                 $this->redirect('User/login', array(), 2, '用户名或密码错误');
             }
         } else {
             $this->redirect('User/login', array(), 2, '验证码错误');
         }
     }
     $this->display();
 }
 public function updateCart()
 {
     $goods_id = $_GET['goods_id'] + 0;
     $goods_attr_id = $_GET['goods_attr_id'];
     $goods_count = $_GET['goods_count'] + 0;
     $cart_model = new \Model\CartModel();
     $cart_model->updateCart($goods_id, $goods_attr_id, $goods_count = $goods_count);
     echo 'ok';
 }
 public function _initialize()
 {
     //获取购物车中的总商品数和总价格
     $cart_model = new \Model\CartModel();
     $total = $cart_model->getTotal();
     $this->assign('total', $total);
     //取出顶级栏目,用于导航显示
     $cat_model = new \Model\CategoryModel();
     $nav_list = $cat_model->getNav();
     $this->assign('nav_list', $nav_list);
 }
Exemple #4
0
 public function addresslist()
 {
     if (session('username') == "") {
         $this->redirect('User/login');
     } else {
         $cart = new \Model\CartModel();
         $data = $cart->cartlist();
         $tp = 0;
         foreach ($data as $k => $v) {
             $tp += $v['shop_price'] * $v['goods_num'];
         }
         $this->assign('tp', $tp);
         $this->assign('data', $data);
         $this->display();
     }
 }
 public function login()
 {
     //实现登陆
     if (IS_POST) {
         $model = new \Model\UserModel();
         if ($model->login()) {
             $url = empty($_SESSION['return_url']) ? 'Index/index' : $_SESSION['return_url'];
             //用户登陆成功调用转移cookie中购物车的数据入数据库
             $cart_model = new \Model\CartModel();
             $cart_model->cookie2db();
             $this->success('登陆成功', U($url), 1);
             exit;
         }
         $this->error($model->getError());
     }
     $this->display();
 }
 public function showGoods()
 {
     $order_id = $_GET['order_id'] + 0;
     //根据订单的order_id取出数据
     $data = M('OrderGoods')->where("order_id={$order_id}")->select();
     //重新构建数组,取出商品的缩略图和商品的属性信息
     $goodsdata = array();
     $cart_model = new \Model\CartModel();
     foreach ($data as $v) {
         //获取商品信息
         $v['info'] = M('Goods')->field('goods_thumb,goods_sn')->find($v['goods_id']);
         //获取商品属性
         $v['attrs'] = $cart_model->getAttrs($v['goods_attr_id']);
         //获取商品库存
         $where = "goods_id=" . $v['goods_id'] . " and goods_attr_id='" . $v['goods_attr_id'] . "'";
         $product = M('Product')->where($where)->find();
         $v['goods_number'] = $product['goods_number'];
         $goodsdata[] = $v;
     }
     $this->assign('goodsdata', $goodsdata);
     $this->display();
 }
 public function flow()
 {
     //获取购物车中的全部商品
     $cart_model = new \Model\CartModel();
     $cartlist = $cart_model->cartlist();
     //下单之前要判断库存是否充足
     //运用文件锁和事务,防止订单出错
     $fp = fopen('./Public/order.lock', 'w');
     //开始加锁
     if (flock($fp, LOCK_EX)) {
         foreach ($cartlist as $v) {
             //取出库存,根据goods_id,goods_attr_id来取出(没有属性的商品则在goods表中取)
             if (!empty($v['goods_attr_id'])) {
                 $where = "goods_id=" . $v['goods_id'] . " and goods_attr_id='" . $v['goods_attr_id'] . "'";
                 $kc = M('Product')->where($where)->find();
                 //返回一个一维数组
             } else {
                 $kc = M('Goods')->where("goods_id=" . $v['goods_id'])->find();
             }
             if ($kc['goods_number'] < $v['goods_count']) {
                 $this->error('库存不足,无法下订单');
             }
         }
         //在checkout.html中表单增加隐藏域,用来获取收货人的信息,也可以用连表
         //查询的形式,在订单信息表中就不用收货人信息的几个字段,改成收货人表的
         //id字段做关联
         $data['user_id'] = $_SESSION['user_id'];
         //用户登陆的id
         $data['order_sn'] = 'sn_' . uniqid();
         //订单号
         $cart_model = new \Model\CartModel();
         $total = $cart_model->getTotal();
         $data['goods_amount'] = $total['total_price'];
         //总金额
         $data['consignee'] = I('post.consignee');
         //收货人名
         $data['address'] = I('post.address');
         //收货人地址
         $data['mobile'] = I('post.mobile');
         //收货人手机
         $data['payment'] = I('post.payment');
         //支付方式
         $data['shipping'] = I('post.shipping');
         //配送方式
         $data['addtime'] = time();
         //下单时间
         //开启事务
         mysql_query("start transaction");
         $order_id = M('OrderInfo')->add($data);
         //添加订单信息,成功返回自增的订单编号
         if (!$order_id) {
             //失败就回滚,并释放文件锁
             mysql_query("rollback");
             flock($fp, LOCK_UN);
             // 释放锁定
         }
         //将购物车中的商品全部遍历添加到订单商品关系表中
         foreach ($cartlist as $v) {
             $res_id = M('OrderGoods')->add(array('order_id' => $order_id, 'goods_id' => $v['goods_id'], 'goods_name' => $v['info']['goods_name'], 'goods_attr_id' => $v['goods_attr_id'], 'shop_price' => $v['info']['shop_price'], 'goods_count' => $v['goods_count']));
             if (!$res_id) {
                 //失败就回滚,并释放文件锁
                 mysql_query("rollback");
                 flock($fp, LOCK_UN);
                 // 释放锁定
             }
         }
         //下单成功,有一个减少库存的操作
         //判断订单商品有没有goods_attr_id,有则在product表中修改,没有则在goods表中修改
         foreach ($cartlist as $v) {
             //取出库存,根据goods_id,goods_attr_id来取出(没有属性的商品则在goods表中取)
             if (!empty($v['goods_attr_id'])) {
                 $where = "goods_id=" . $v['goods_id'] . " and goods_attr_id='" . $v['goods_attr_id'] . "'";
                 $rs = M('Product')->where($where)->setDec('goods_number', $v['goods_count']);
                 //还要更改商品表中的库存量
                 M('Goods')->where("goods_id=" . $v['goods_id'])->setDec('goods_number', $v['goods_count']);
                 if (!$rs) {
                     //失败就回滚,并释放文件锁
                     mysql_query("rollback");
                     flock($fp, LOCK_UN);
                     // 释放锁定
                 }
             } else {
                 $rs = M('Goods')->where("goods_id=" . $v['goods_id'])->setDec('goods_number', $v['goods_count']);
                 if (!$rs) {
                     //失败就回滚,并释放文件锁
                     mysql_query("rollback");
                     flock($fp, LOCK_UN);
                     // 释放锁定
                 }
             }
         }
         //都成功,提交事务
         mysql_query("commit");
         flock($fp, LOCK_UN);
         // 释放锁定
     } else {
         $this->error('系统忙,请稍后下单');
     }
     //订单成功,要清空购物车,跳转到显示订单完成的页面
     $cart_model->clearCart();
     $this->redirect("Order/done", array('order_sn' => $data['order_sn']));
 }