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); }
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'])); }