where("user_id", $user['user_id'])->find(); session('user', $user); //覆盖session 中的 user $this->user = $user; $this->user_id = $user['user_id']; $this->assign('user', $user); //存储用户信息 $this->assign('user_id', $this->user_id); } else { $nologin = array( 'login', 'pop_login', 'do_login', 'logout', 'verify', 'set_pwd', 'finished', 'verifyHandle', 'reg', 'send_sms_reg_code', 'identity', 'check_validate_code', 'forget_pwd', 'check_captcha', 'check_username', 'send_validate_code', ); if (!in_array(ACTION_NAME, $nologin)) { header("location:" . U('Mobile/User/login')); exit; } if (ACTION_NAME == 'password') $_SERVER['HTTP_REFERER'] = U("Mobile/User/index"); } } public function buy_virtual(){ $goods = $this->check_virtual_goods(); $this->assign('goods',$goods); return $this->fetch(); } public function check_virtual_goods(){ $goods_id = I('goods_id/d'); if(empty($goods_id))$this->error('请求参数错误'); $goods = M('goods')->where(array('goods_id'=>$goods_id))->find(); if(!$goods)$this->error('该商品不允许购买,原因有:商品下架、不存在、过期等'); if($goods['is_virtual'] == 1 && $goods['virtual_indate']>time() && $goods['store_count']>0){ $goods_num = $goods['goods_num'] = I('goods_num/d'); if($goods_num < 1){$this->error('最少购买1件');} if ($goods['virtual_limit'] > $goods['store_count'] || $goods['virtual_limit'] == 0) { $goods['virtual_limit'] = $goods['store_count']; } $goods_spec = I('goods_spec/a'); if(!empty($goods_spec) && $goods_spec !='undefined'){ $specGoodsPriceList = M('SpecGoodsPrice')->where(array('goods_id'=>$goods_id))->cache(true,TPSHOP_CACHE_TIME)->getField("key,key_name,price,store_count,sku"); // 获取商品对应的规格价钱 库存 条码 foreach($goods_spec as $key => $val){ if($val != 'undefined'){ $spec_item[] = $val; // 所选择的规格项 // $goods['spec_key_name'] .= $specGoodsPriceList[$val]['key_name']; } } if(!empty($spec_item) && $spec_item !='undefined') // 有选择商品规格 { sort($spec_item); $spec_key = implode('_', $spec_item); if($specGoodsPriceList[$spec_key]['store_count'] < $goods_num){ $this->error('该商品规格库存不足'); } $goods['goods_spec_key'] = $spec_key; $goods['spec_key_name'] = $specGoodsPriceList[$spec_key]['key_name']; $spec_price = $specGoodsPriceList[$spec_key]['price']; // 获取规格指定的价格 $goods['shop_price'] = empty($spec_price) ? $goods['shop_price'] : $spec_price; } } $goods_spec_key = I('goods_spec_key'); if(!empty($goods_spec_key)){ $specGoods = M('SpecGoodsPrice')->where(array('goods_id'=>$goods_id,'key'=>$goods_spec_key))->find(); if($specGoods['store_count']<$goods_num)$this->error('该商品规格库存不足'); $goods['shop_price'] = empty($specGoods['price']) ? $goods['shop_price'] : $specGoods['price']; $goods['goods_spec_key'] = $goods_spec_key; $goods['spec_key_name'] = $specGoods['key_name']; } $goods['goods_fee'] = $goods['shop_price']*$goods['goods_num']; return $goods; }else{ $this->error('该商品不允许购买,原因可能:商品下架、不存在、过期等'); } } /** * 虚拟订单列表 */ public function virtual_list() { $type = I('get.type'); $search_key = I('search_key'); $virtualLogic = new \app\common\logic\VirtualLogic; $result = $virtualLogic->orderList($this->user_id, $type, $search_key); $this->assign('order_status', C('ORDER_STATUS')); $this->assign('shipping_status', C('SHIPPING_STATUS')); $this->assign('pay_status', C('PAY_STATUS')); $this->assign('order_list', $result['order_list']); $this->assign('active', 'order_list'); $this->assign('active_status', $type); $this->assign('now', time()); if ($_GET['is_ajax']) { return $this->fetch('ajax_Virtual_list'); } return $this->fetch(); } /** * 虚拟订单详情 */ public function virtual_order(){ $Order = new \app\common\model\Order(); $VirtualLogic = new VirtualLogic(); $order_id = I('get.order_id/d'); $map['order_id'] = $order_id; $map['user_id'] = $this->user_id; $orderobj = $Order->where($map)->find(); if(!$orderobj) $this->error('没有获取到订单信息'); // 添加属性 包括按钮显示属性 和 订单状态显示属性 $order_info = $orderobj->append(['order_status_detail','virtual_order_button','order_goods','cancel_info'])->toArray(); if($order_info['prom_type'] != 5){ //普通订单 $this->redirect(U('Order/order_detail',['id'=>$order_id])); } //获取订单操作记录 $order_action = Db::name('order_action')->where(array('order_id'=>$order_id))->select(); $data = $VirtualLogic->check_virtual_code($order_info); $vrorders = $data['vrorders']; $order_info = $data['order_info']; $this->assign('vrorders',$vrorders); $this->assign('order_status',C('ORDER_STATUS')); $this->assign('pay_status',C('PAY_STATUS')); $this->assign('order_info',$order_info); $this->assign('order_action',$order_action); return $this->fetch(); } /** * 虚拟订单确定收货 */ public function virtual_confirm(){ $order_id = I('post.order_id/d', 0); $data = confirm_order($order_id, $this->user_id); if($data['status']==1){ Db::name('order_goods')->where(['order_id'=>$order_id])->save(['is_send'=>1]); //订单商品状态需要更改一下,不然评价列表找不到 } $this->ajaxReturn($data); } }