user_id = $_SESSION['user_id']; $this->actionchecklogin(); L(require (ROOT_PATH . 'source/language/' . C('shop.lang') . '/user.php')); L(require (ROOT_PATH . 'source/language/' . C('shop.lang') . '/flow.php')); $files = array( 'order', 'clips', 'payment', 'transaction' ); $this->load_helper($files); } /** * 订单列表 */ public function actionIndex() { $size = 10; $page = I('page', 1, 'intval'); $status = I('status', 0, 'intval'); if(IS_POST){ $order_list = get_user_orders($this->user_id, $size, $page, $status); exit(json_encode(array('order_list'=>$order_list['list'], 'totalPage'=>$order_list['totalpage']))); } $this->assign('status', $status); $this->assign('page_title', '订单列表'); $this->display('user_order'); } /** * 查看订单详情 */ public function actionDetail() { $order_id = I('order_id', 0, 'intval'); $noTime = gmtime(); $date = array( 'order_status', 'shipping_status', 'pay_status', 'shipping_time', 'auto_delivery_time' ); $orderInfo = get_table_date('order_info', "order_id = '$order_id' and user_id = '$this->user_id'", $date); if ($GLOBALS['_CFG']['open_delivery_time'] == 1) { if ($orderInfo['order_status'] == 5 && $orderInfo['shipping_status'] == 1 && $orderInfo['pay_status'] == 2) { // 发货状态 $delivery_time = $orderInfo['shipping_time'] + 24 * 3600 * $orderInfo['auto_delivery_time']; if ($noTime > $delivery_time) { // 自动确认发货操作 $sql = "update {pre}order_info set order_status = 5, shipping_status = 2, pay_status = 2 where order_id = '$order_id'"; $this->db->query($sql); } } } /* 订单详情 */ $order = get_order_detail($order_id, $this->user_id); if ($order === false) { $this->err->show(L('back_home_lnk'), './'); exit(); } //订单店铺 $ru_id = $this->db->getRow("SELECT ru_id FROM ".$this->ecs->table('order_goods')." WHERE order_id = ".$order['order_id']); if($ru_id){ $order['shop_name'] = get_shop_name($ru_id['ru_id'], 1); //店铺名称 $order['shopUrl'] = U('store/index/index', array('id'=>$ru_id)); } /* 是否显示添加到购物车 */ if ($order['extension_code'] != 'group_buy' && $order['extension_code'] != 'exchange_goods') { $this->assign('allow_to_cart', 1); } /* 订单商品 */ $goods_list = order_goods($order_id); foreach ($goods_list as $key => $value) { $goods_list[$key]['market_price'] = price_format($value['market_price'], false); $goods_list[$key]['goods_price'] = price_format($value['goods_price'], false); $goods_list[$key]['subtotal'] = price_format($value['subtotal'], false); } /* 设置能否修改使用余额数 */ if ($order['order_amount'] > 0) { if ($order['order_status'] == OS_UNCONFIRMED || $order['order_status'] == OS_CONFIRMED) { $user = user_info($order['user_id']); if ($user['user_money'] + $user['credit_line'] > 0) { $this->assign('allow_edit_surplus', 1); $this->assign('max_surplus', sprintf(L('max_surplus'), $user['user_money'])); } } } /* 未发货,未付款时允许更换支付方式 */ if ($order['order_amount'] > 0 && ($order['pay_status'] == PS_UNPAYED || $order['pay_status'] == PS_PAYED_PART) && $order['shipping_status'] == SS_UNSHIPPED) { $payment_list = available_payment_list(false, 0, true); /* 过滤掉当前支付方式和余额支付方式 */ if (is_array($payment_list)) { foreach ($payment_list as $key => $payment) { // ecmoban模板堂 --will start // pc端去除ecjia的支付方式 if (substr($payment['pay_code'], 0, 4) == 'pay_') { unset($payment_list[$key]); continue; } // ecmoban模板堂 --will end if ($payment['pay_id'] == $order['pay_id'] || $payment['pay_code'] == 'balance') { unset($payment_list[$key]); } } } $this->assign('payment_list', $payment_list); } /* 订单 支付 配送 状态语言项 */ $os = L('os'); $ps = L('ps'); $ss = L('ss'); if ($order['order_status'] == OS_UNCONFIRMED) { $order['handler'] = "$order['order_id'])) . "\" onclick=\"if (!confirm('" . L('confirm_cancel') . "')) return false;\">" . L('cancel') . ""; } else if ($order['order_status'] == OS_SPLITED) { /* 对配送状态的处理 */ if ($order['shipping_status'] == SS_SHIPPED) { @$order['handler'] = "$order['order_id'])). "\" onclick=\"if (!confirm('" . L('confirm_received') . "')) return false;\">" .L('received') . ""; } elseif ($order['shipping_status'] == SS_RECEIVED) { @$order['handler'] = ''.L('ss_received').'';; } else { if ($order['pay_status'] == PS_UNPAYED) { @$order['handler'] = "$order['order_id'])). '" >' . L('pay_money') . ''; } else { $order['handler'] = ''.$ss[$order['shipping_status']].''; } } } else { if($order['order_status'] == OS_CONFIRMED && $order['pay_status'] == PS_UNPAYED){ $order['handler'] = "" .$ps[$order['pay_status']] . ""; }else{ $order['handler'] = $order['handler'] = ''.$os[$order['order_status']].''; } } $order['order_status'] = $os[$order[order_status]]; $order['pay_status'] = $ps[$order[pay_status]]; $order['shipping_status'] = $ss[$order['shipping_status']]; $order['c'] = get_region_name($order['country']); $order['detail_address'] .= $order['c']['region_name']; $order['p'] = get_region_name($order['province']); $order['detail_address'] .= $order['p']['region_name']; $order['cc'] = get_region_name($order['city']); $order['detail_address'] .= $order['cc']['region_name']; $order['dd'] = get_region_name($order['district']); $order['detail_address'] .= $order['dd']['region_name']; $order['detail_address'] .= $order['address']; /* 自提点信息 */ $sql = "SELECT * FROM ".$this->ecs->table('shipping_point')." WHERE id IN (SELECT point_id FROM ".$this->ecs->table('order_info')." WHERE order_id='{$order_id}')"; $order['point'] = $this->db->getRow($sql); if($order['point']){ $order['point']['pickDate'] = $order['shipping_dateStr']; } $this->assign('order', $order); $this->assign('goods_list', $goods_list); $this->assign('goods_count', count($goods_list)); $this->assign('page_title', '订单详情'); $this->display('user_order_checkout'); } /** * 订单跟踪 */ public function actionOrderTracking(){ $order_id = I('order_id', 0, 'intval'); $order = get_order_detail($order_id, $this->user_id); if ($order === false) { $this->err->show(L('back_home_lnk'), './'); exit(); } if($order['invoice_no']){ preg_match("/^/is", $order['invoice_no'], $url); if($url[1]){ $this->redirect($url[1]); } } show_message("还未发货或者已收货", '会员中心', U('user/index/index')); } /* 确认收货 */ public function actionAffirmReceived() { $user_id = $this->user_id; $order_id = isset($_GET['order_id']) ? intval($_GET['order_id']) : 0; if (affirm_received($order_id, $user_id)) { ecs_header("Location: " . U('user/order/index')); exit(); } else { show_message("还未发货或者已收货"); } } /** * 取消订单 */ public function actionCancel() { $order_id = isset($_GET['order_id']) ? intval($_GET['order_id']) : 0; if (cancel_order($order_id, $this->user_id)) { ecs_header("Location: " . U('user/order/index')); exit(); } else { $this->err->show(L('order_list_lnk'), U('user/order/index')); } } /** * 验证是否登录 */ public function actionchecklogin(){ if(!$this->user_id){ $url = urlencode(__HOST__ . $_SERVER['REQUEST_URI']); if(IS_POST) { $url = urlencode($_SERVER['HTTP_REFERER']); } ecs_header("Location: ".U('user/login/index',array('back_act'=>$url))); exit; } } // 订单列表获取订单数量 function Get_Order_Where_Count($user_id = 0, $show_type = 0, $where = '') { $sql = "SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('order_info') . " as oi" . " WHERE oi.user_id = '$user_id' and oi.is_delete = '$show_type'" . " and (select count(*) from " . $GLOBALS['ecs']->table('order_info') . " as oi_2 where oi_2.main_order_id = oi.order_id) = 0 " . // 主订单下有子订单时,则主订单不显示 . $where; return $GLOBALS['db']->getOne($sql); } }