Orders.php 7.16 KB
<?php

use Action\WebAction;
use WebPlugin\Helpers;
use Home\UserModel;
use Home\OrderModel;
use LibModels\Web\Home\OrderData;
use WebPlugin\Paging;

/**
 * 订单
 */
class OrdersController extends WebAction
{

    /**
     * 我的订单
     */
    public function indexAction()
    {
        //判断是否登录
        $uid = $this->auditJumpLogin();

        //头部导航
        $channel = Helpers::getChannelNameByCookie();
        $this->setWebNavHeader($channel);
        //面包屑-左侧导航
        $path = UserModel::getCenterCrumb('订单中心');
        $leftNav = UserModel::getCenterLeftNav('我的订单', $uid);
        //分页
        $page = $this->get('page', 1);
        $type = $this->get('type', 1);
        $limit = 10;
        $paging = new Paging('yoho');

        //订单 type-8-历史
        if ($type == 8) {
            $orders = OrderModel::getHistoryOrders($uid, $page, $limit);
        }
        else {
            $orders = OrderModel::getOrders($uid, $page, $limit, $type, TRUE);
        }

        $total = isset($orders['pager']['total']) ? $orders['pager']['total'] : 0;
        $pageTotal = isset($orders['pager']['pageTotal']) ? $orders['pager']['pageTotal'] : 0;
        $page = isset($orders['pager']['page']) ? $orders['pager']['page'] : 0;
        unset($orders['pager']);
        $paging->setTotal($total)->setSize($limit)->setQuery(array('page' => $page, 'type' => $type));

        //数据整合
        $data = array(
            'path' => $path,
            'userThumb' => UserModel::getUserHeadImg($uid),
            'homeNav' => $leftNav,
            'tabs' => OrderModel::getOrderTabs($type),
            'pager' => array(
                'count' => $total,
                'curPage' => $page,
                'totalPages' => $pageTotal,
                'pagerHtml' => $paging->view(false)
            )
        );

        //历史订单/普通订单
        $orderKey = ($type == 8) ? 'historyOrders' : 'orders';
        $data[$orderKey] = $orders;
        $this->_view->display('orders', array('meOrdersPage' => true, 'meOrders' => $data));
    }

    /**
     * 订单详情
     */
    public function detailAction()
    {
        //判断是否登录
        $uid = $this->auditJumpLogin();

        //头部导航
        $channel = Helpers::getChannelNameByCookie();
        $this->setWebNavHeader($channel);
        //面包屑-左侧导航
        $path = UserModel::getCenterCrumb('订单详细', array('href' => Helpers::url('/home/orders'), 'name' => '订单中心'));
        $leftNav = UserModel::getCenterLeftNav('我的订单', $uid);

        $orderCode = $this->get('orderCode', '');
        //兼容老网站传参方式
        if (!$orderCode) {
            $orderCode = $this->get('order_code', '');
        }
        $detail = OrderModel::getOrderDetail($uid, $orderCode);
        //非当前用户的订单,跳转个首
        if(isset($detail['code']) && $detail['code']==400){
            $this->go(Helpers::url('/home'));
        }
        $data = array(
            'path' => $path,
            'userThumb' => UserModel::getUserHeadImg($uid),
            'homeNav' => $leftNav
        );
        if ($detail) {
            $data += array(
                'orderNum' => $detail['orderNum'],
                'curStatus' => $detail['statusStr'],
                'complete' => $detail['complete'],
                'virtualGoods' => $detail['virtualGoods'],
                'progress' => $detail['progress'],
                'remark' => $detail['remark'],
                'goods' => $detail['goods'],
                'yohoCoinUrl' => $detail['yohoCoinUrl'],
                'orderBalance' => isset($detail['orderBalance']) ? $detail['orderBalance'] : array(),
                'operation' => $detail['operation']
            );
            if (isset($detail['noramlPayMode'])) {
                $data['orderInfo'] = $detail['orderInfo'];
                $data['traceOrder'] = $detail['traceOrder'];
                $data['noramlPayMode'] = $detail['noramlPayMode'];
            }
            else if (isset($detail['virtualPayMode'])) {
                $data['virtualPayMode'] = $detail['virtualPayMode'];
            }
        }

        $this->_view->display('order-detail', array('meOrdersPage' => true, 'meOrderDetail' => $data));
    }

    /**
     * 二维码票
     */
    public function ticketsAction()
    {
        //判断是否登录
        $uid = $this->auditJumpLogin();

        //头部导航
        $channel = Helpers::getChannelNameByCookie();
        $this->setWebNavHeader($channel);
        //面包屑-左侧导航
        $path = UserModel::getCenterCrumb('查看二维码', array('href' => Helpers::url('/home/orders'), 'name' => '订单中心'));
        $leftNav = UserModel::getCenterLeftNav('我的订单', $uid);

        $orderCode = $this->get('orderCode', '');
        //兼容老网站传参方式
        if (!$orderCode) {
            $orderCode = $this->get('order_code', '');
        }
        $detail = OrderModel::getOrderDetail($uid, $orderCode);
         //非当前用户的订单,跳转个首
        if(isset($detail['code']) && $detail['code']==400){
            $this->go(Helpers::url('/home'));
        }
        
        if (isset($detail) && $detail) {
            $tickets = OrderModel::getTicketsInfo($orderCode);
            $data = array(
                'path' => $path,
                'userThumb' => UserModel::getUserHeadImg($uid),
                'homeNav' => $leftNav,
                'name' => $detail['goods'][0]['name'],
                'num' => $detail['goods'][0]['num'],
                'orderNum' => $detail['orderNum'],
                'myOrdersUrl' => Helpers::url('/home/orders'),
                'tickets' => $tickets
            );
        }

        $this->_view->display('ticket', array('meOrderTicket' => $data));
    }

    /**
     * 取消订单-ajax
     */
    public function cancelOrderAction()
    {
        $data = array('code' => 400, 'message' => '', 'data' => '');

        do {

            /* 判断是不是AJAX请求 */
            if (!$this->isAjax()) {
                break;
            }
            $uid = $this->auditJumpLogin();
            $orderCode = trim($this->post('orderCode', ''));
            $data = OrderData::cancelUserOrder($uid, $orderCode);
            if (!isset($data['code'])) {
                break;
            }
        }
        while (false);

        $this->echoJson($data);
    }

    /**
     * 确认订单-ajax
     */
    public function confirmOrderAction()
    {
        $data = array('code' => 400, 'message' => '', 'data' => '');

        do {
            /* 判断是不是AJAX请求 */
            if (!$this->isAjax()) {
                break;
            }
            $uid = $this->auditJumpLogin();
            $orderCode = trim($this->post('orderCode', ''));
            $data = OrderData::confirmUserOrder($uid, $orderCode);
            if (!isset($data['code'])) {
                break;
            }
        }
        while (false);

        $this->echoJson($data);
    }

}