Common.php 12.4 KB
<?php

use Action\WebAction;
use Index\HomeModel;
use Product\SearchModel;
use Shopping\CartModel;
use Configs\WebCacheConfig;
use LibModels\Web\Home\IndexData;
use LibModels\Web\Home\UserData;
use LibModels\Web\Home\CartData;
use WebPlugin\Cache;
use WebPlugin\Images;
use WebPlugin\Helpers;

class CommonController extends WebAction
{

    /**
     * 获取首页资源品牌
     */
    public function getIndexResourceBrandAction()
    {
        $data = array();

        do {
            if (!$this->isAjax()) {
                break;
            }

            $type = $this->get('type');
            if (empty($type)) {
                break;
            }

            // 首页资源品牌,采用内存存储
            $key = WebCacheConfig::KEY_WEB_INDEX_BRANDS_LIST_DATA . '_' . $type;
            // array('logoBrand'=>'','moreBrand'=>'')
            $data = Cache::get($key,'master');
            if(empty($data)) {//从slave取数据
                $data = Cache::get($key, 'slave');
            }
            
        } while (false);

        $this->echoJson($data);
    }

    /**
     * 新品上架 接口数据
     *
     * @param string channel 当前频道
     * @param int pageIndex 当前页数
     * @param int pageCount 一页显示个数
     */
    public function getNewArrivalAction()
    {
        $result = array();
        do {
            /* 判断是不是AJAX请求 */
            if (!$this->isAjax()) {
                break;
            }
            $channels = array(
                HomeModel::COOKIE_NAME_BOYS,
                HomeModel::COOKIE_NAME_GIRLS,
                HomeModel::COOKIE_NAME_KIDS,
                HomeModel::COOKIE_NAME_LIFESTYLE
            );
            $channel = $this->post('type', '');
            $pageIndex = (int) $this->post('pageIndex', 0);
            $pageCount = (int) $this->post('pageCount', 8);
            if (!in_array($channel, $channels)) {
                break;
            }

            $data = HomeModel::getNewArrival($channel);
            if (empty($data)) {
                break;
            }

            if ($pageIndex < 0) {
                $pageIndex = 0;
            }
            if ($pageCount < 0 || $pageCount > 50) {
                $pageCount = 20;
            }
            $data = array_slice($data, $pageIndex, $pageCount);
            if (empty($data)) {
                break;
            }
            $result = array(
                'code' => 200,
                'goods' => $data
            );
            $data = array();
            
        } while (false);

        $this->echoJson($result);
    }

    /**
     * 获取资源位banner
     * 
     * @return jsonp
     */
    public function getbannerAction()
    {
        $contentCode = $this->get('content_code', '');
        $callback = $this->get('callback', '');
        $width = $this->get('width', '');
        $height = $this->get('height', '');
        
        $data = IndexData::getResourceData($contentCode);
        if (empty($data['data'])) {
            return $this->helpJsonCallbackResult($callback, 200, '没有数据', '');
        } else {
            $banner = '';
            if (isset($data['data'][0]['data'])) {
                if ($data['data'][0]['template_name'] == 'single_image') {
                    $banner = current($data['data'][0]['data']);
                } else if ($data['data'][0]['template_name'] == 'single_name_image') {
                    $banner = $data['data'][0]['data'];
                }
                if (!empty($banner)) {
                    if (empty($width) || empty($height)) {
                        $width = 2600; //通栏广告
                        $height = 60;
                    }
                    $banner['src'] = Images::getImageUrl($banner['src'], $width, $height, 2);
                    //str_replace('?imageView/{mode}/w/{width}/h/{height}', '', $banner['src']);
                }
            }
            return $this->helpJsonCallbackResult($callback, $data['code'], $data['message'], $banner);
        }
    }

    /**
     * 获取邮件订阅
     * 
     * @return jsonp
     */
    public function emailsubscriberAction()
    {
        $callback = $this->get('callback', '');
        $email = $this->get('email', '');
        $uid = intval($this->get('uid', '0'));
        $data = array();
        do {
            if (!Helpers::verifyEmail($email)) {
                break;
            }
            $data = IndexData::emailSubscriber($email, $uid);
            if (isset($data['code']) && $data['code'] === 200) {
                return $this->helpJsonCallbackResult($callback, $data['code'], $data['message'], array('result' => 1));
            }
        } while(false);
        return $this->helpJsonCallbackResult($callback, 403, '订阅失败', '');
    }

    /**
     * 意见反馈
     * 
     * @return jsonp
     */
    public function suggestfeedbackAction()
    {
        $callback = $this->get('callback', '');
        $feedback_id = intval($this->get('feedback_id', 0));
        $question_id = intval($this->get('question_id', 0));
        $answer = trim($this->get('answer'));
        $solution = intval($this->get('solution', 0));
        if (!empty($feedback_id) || !empty($question_id) || !empty($answer) || !empty($solution)) {
            $data = IndexData::suggestFeedback($feedback_id, $question_id, $answer, $solution);
            return $this->helpJsonCallbackResult($callback, $data['code'], $data['message'], $data['data']);
        } else {
            return $this->helpJsonCallbackResult($callback, 403, '意见反馈失败');
        }
    }

    /*
     * 简单头部
     */
    public function getSimpleHeaderAction()
    {
        $result = array();
        do {
            /* 判断是不是AJAX请求 */
            if (!$this->isAjax()) {
                break;
            }

            //获取用户
            $uid = $this->getUid(true);
            if (!$uid) {
                $isLogin = false;
                $username = '';
            } else {
                $isLogin = true;
                $username = $this->_uname;
            }
            //拼接简单头部
            $time = time();
            $tool = array(
                'favorite' => Helpers::url('/home/favorite?t=' . $time), //我的收藏链接
                'coupon' => Helpers::url('/home/coupons?t=' . $time), //我的优惠券链接
                'order' => Helpers::url('/home/orders?t=' . $time), //订单中心连接
                'help' => Helpers::url('/help'),
            );
            if ($isLogin) {
                $tool['user'] = $username;
                $tool['userCenter'] = Helpers::url('/home?t=' . $time);//用户中心链接
                $tool['logout'] = Helpers::url('/logout.html?t=' . $time); //退出
            } else {
                $tool['login'] = Helpers::url('/signin.html'); //登录链接,已登录不传
                $tool['register'] = Helpers::url('/reg.html'); //注册链接,已登录不传
            }

            $simpleHeader = array(
                'user' => $username,
                'href' => $tool,
                'logo' => array(
                    'img' => '//static.yohobuy.com/newheader/img/logo_e.png',
                    'url' => SITE_MAIN
                ),
            );

            $result = array(
                'code' => 200,
                'data' => $simpleHeader
            );
        } while (false);

        $this->echoJson($result);
    }

    /**
     * 头部调用登陆用户信息
     */
    public function passportAction()
    {
        $callback = $this->get('callback');
        $uid = $this->getUid();
        $userInfo = UserData::passportGet($uid);
        if (!empty($uid)) {
            $total = 0;
            //更新购物车cookie信息
            $shoppingKey = Helpers::getShoppingKeyByCookie();
            $result = CartModel::shoppingCart($uid, $shoppingKey);
            if (isset($result['main_goods'])) {
                foreach ($result['main_goods'] as $val) {
                    $total += $val['buy_number'];
                }
                // 老站购物车需要的COOKIE
                $this->setCookie('_g', json_encode(array(
                    '_k' => $shoppingKey,
                    '_nac' => $total,
                    '_ac' => 0,
                    '_r' => 1
                )));
            }
        }
        if (isset($userInfo['data'])) {
            if (isset($userInfo['data']['data']['vip']['curYearCost'])) {
                $userInfo['data']['data']['vip']['curYearCost'] = intval($userInfo['data']['data']['vip']['curYearCost']);
            }
            if (isset($userInfo['data']['data']['vip']['nextVipInfo']['needCost'])) {
                $userInfo['data']['data']['vip']['nextVipInfo']['needCost'] = intval($userInfo['data']['data']['vip']['nextVipInfo']['needCost']);
            }
            if (isset($userInfo['data']['data']['head_ico']) && !empty($userInfo['data']['data']['head_ico'])) {
                $userInfo['data']['data']['head_ico'] = Images::getImageUrl($userInfo['data']['data']['head_ico'], 63, 63, 2, 'yhb-head');
            }
            if (isset($userInfo['data']['data']['vip']['curYearCostPer'])) {
                $userInfo['data']['data']['vip']['curYearCostPer'] = intval($userInfo['data']['data']['vip']['curYearCostPer']);
            }
            $userInfo['data']['result'] = 1;
            $this->helpJsonCallbackResult($callback, 200,'User info', $userInfo['data']);
        }
    }

    /**
     * 最近浏览记录
     */
    public function recentReviewAction()
    {
        $result = array();
        $callback = $this->get('callback');
        $limit = $this->get('limit');
        do {
            $productInfo = explode(',', $this->getCookie('_browseskn'));
            $skn = '';
            if (empty($productInfo)) {
                break;
            }
            foreach ($productInfo as $val) {
                $sknArray = explode('-', $val);
                $skn[]= $sknArray[0];
            }
//            rsort($skn);
            $skn = array_slice($skn, 0 ,$limit);
            $result = SearchModel::historyProduct($skn, $limit);
        } while(false);
        $this->helpJsonCallbackResult($callback, 200,'User info', $result);
    }

    /**
     * 购物车
     * @author sefon 2016-4-20 15:15:31
     */
    public function shoppingCartAction()
    {
        $callback = $this->get('callback');
        $uid = $this->getUid(true);
        $shoppingKey = Helpers::getShoppingKeyByCookie();
        $result = CartModel::shoppingCart($uid, $shoppingKey);
        $this->helpJsonCallbackResult($callback, 200,'shoppingCart', $result);
    }

    /**
     * 删除购物车商品
     */
    public function delCartGoodsAction()
    {
        $productSku = $this->get('product_sku');
        $buyNumber = $this->get('product_num');
        $callback = $this->get('callback');
        $uid = $this->getUid(true);
        $shoppingKey = Helpers::getShoppingKeyByCookie();
        $skuList[$productSku] = intval($buyNumber);
        $result = CartModel::removeFromCart($uid, json_encode($skuList), $shoppingKey);
        if (isset($result['code']) && $result['code'] == 200 && isset($result['total_goods_num'])) {
            $this->helpJsonCallbackResult($callback, 200, $result['message'], array('total_goods_num' => $result['total_goods_num']));
        } else {
            $this->helpJsonCallbackResult($callback, $result['code'], $result['message'], '');
        }
    }
    
   /**
    * 选择支付时,时间间隔校验插入
    */
    public function addPaymentIntervalAction()
    {
        $data = array('code'=>400,'message'=>'','data'=>'');

        do {
            if (!$this->isAjax()) {
                break;
            }

            $uid = $this->getUid(TRUE);
            $orderCode = $this->get('orderCode','');
            $payment = $this->get('payment',0);
            
            if (!$uid || !$orderCode || !$payment) {
                break;
            }
            
            $res = CartData::savePrePayInfo($uid, $orderCode, $payment);
            $data = array('code'=>$res['code'],'message'=>$res['message'],'data'=>$res['data']);
            
        } while (false);

        $this->echoJson($data);
    }
}