Newsale.php 7.96 KB
<?php

namespace Product;

use LibModels\Wap\Product\NewsaleData;
use Configs\CacheConfig;
use Plugin\Helpers;

/**
 * 新品到着、折扣专区相关的模板数据模型
 * 
 * @name NewsaleModel
 * @package Models/Category
 * @copyright yoho.inc
 * @version 1.0 (2015-10-22 19:52:44)
 * @author gtskk <rocky.zhang@yoho.cn>
 */
class NewsaleModel
{
    /* 男生频道取新品到着及折扣专区数据的位置码 */
    const CODE_TOP_NEW_BOYS = 'a7989369aa86681c678bc40f171b8f1d';
    const CODE_TOP_SALE_BOYS = 'e9c9be32d72e2906d404a72ee24cb523';
    /* 女生频道取新品到着及折扣专区数据的位置码 */
    const CODE_TOP_NEW_GIRLS = 'b0ba12104cfecacdcfd7ad74117a22b8';
    const CODE_TOP_SALE_GIRLS = '785c0e6aab746949073c4ffb9d5106ac';
    /* 潮童频道取新品到着及折扣专区数据的位置码 */
    const CODE_TOP_NEW_KIDS = 'c39607aa21219117976848819cf81a69';
    const CODE_TOP_SALE_KIDS = 'ad1bb67a6007819c86f737d74172fd2e';
    /* 创意生活频道取新品到着及折扣专区数据的位置码 */
    const CODE_TOP_NEW_LIFESTYLE = '7c9ae01071f7a75d3911782feb4caebd';
    const CODE_TOP_SALE_LIFESTYLE = '8132c7db3adbeb7b0d0002de9691c753';
    
    /**
     * 根据频道获取新品到着数据
     * 
     * @param int $channel boys表示男生频道, girls表示女生频道, kids表示潮童频道, lifestyle表示创意生活频道
     * @return array
     */
    public static function getNewByChannel($channel)
    {
        $result = array();
        $new = array();

        /* 根据频道调用接口 */
        switch ($channel) {
            case 'boys':   // 男生
                $new = NewsaleData::newPackage(self::CODE_TOP_NEW_BOYS, '1,3', 1);
                break;
            case 'girls':   // 女生
                $new = NewsaleData::newPackage(self::CODE_TOP_NEW_GIRLS, '2,3', 2);
                break;
            case 'kids':   // 潮童
                $new = NewsaleData::newPackage(self::CODE_TOP_NEW_KIDS, '1,2,3', 3);
                break;
            case 'lifestyle':   // 创意生活
                $new = NewsaleData::newPackage(self::CODE_TOP_NEW_LIFESTYLE, '1,2,3', 4);
                break;
        }

        /* 顶部的轮翻广告列表 */
        $result['headerBanner'] = self::bannerData($new['newsaleTop']);
        
        /* 下部商品列表 */
        unset($new['newsaleTop']);
        foreach($new as $single)
        {
            // 处理Tabs
            $noTab = true;
            if(isset($single['tabs']) && $noTab)
            {
                $result['tabs'] = array();
                foreach ($single['tabs'] as $key => $one)
                {
                    $tabItem = array();
                    $tabItem['title'] = $one;
                    if($key === 1)
                    {
                        $tabItem['focus'] = true;
                    }
                    $result['tabs'][] = $tabItem;
                }
                $noTab = false;
            }

            // 处理商品
            $productsLi = array('goods'=>array());
            if(isset($single['product_list']))
            {
                foreach ($single['product_list'] as $value) 
                {
                    $productsLi['goods'][] = Helpers::formatProduct($value);
                }
            }
            
            // 对于第一个productsLi添加show字段
            if(!isset($result['goodsContainer']))
            {
                $productsLi['show'] = true;
            }

            $result['goodsContainer'][] = $productsLi;
        }
        
        return $result;
    }


    /**
     * 根据频道获取折扣专区数据
     * 
     * @param int $channel boys表示男生频道, girls表示女生频道, kids表示潮童频道, lifestyle表示创意生活频道
     * @return array
     */
    public static function getSaleByChannel($channel)
    {
        $result = array();
        $sale = array();

        /* 根据频道调用接口 */
        switch ($channel) {
            case 'boys':   // 男生
                $sale = NewsaleData::salePackage(self::CODE_TOP_SALE_BOYS, '1,3', 1);
                break;
            case 'girls':   // 女生
                $sale = NewsaleData::salePackage(self::CODE_TOP_SALE_GIRLS, '2,3', 2);
                break;
            case 'kids':   // 潮童
                $sale = NewsaleData::salePackage(self::CODE_TOP_SALE_KIDS, '1,2,3', 3);
                break;
            case 'lifestyle':   // 创意生活
                $sale = NewsaleData::salePackage(self::CODE_TOP_SALE_LIFESTYLE, '1,2,3', 4);
                break;
        }

        /* 顶部的轮翻广告列表 */
        $result['headerBanner'] = self::bannerData($sale['newsaleTop']);
        
        /* 下部商品列表 */
        unset($sale['newsaleTop']);
        foreach($sale as $single)
        {
            // 处理Tabs
            $noTab = true;
            if(isset($single['tabs']) && $noTab)
            {
                $result['tabs'] = array();
                foreach ($single['tabs'] as $key => $one)
                {
                    $tabItem = array();
                    $tabItem['title'] = $one;
                    if($key === 1)
                    {
                        $tabItem['focus'] = true;
                    }
                    $result['tabs'][] = $tabItem;
                }
                $noTab = false;
            }

            // 处理商品
            $productsLi = array('goods'=>array());
            if(isset($single['product_list']))
            {
                foreach ($single['product_list'] as $value) 
                {
                    $productsLi['goods'][] = Helpers::formatProduct($value);
                }
            }
            
            // 对于第一个productsLi添加show字段
            if(!isset($result['goodsContainer']))
            {
                $productsLi['show'] = true;
            }

            $result['goodsContainer'][] = $productsLi;
        }
        
        return $result;
    }


    /**
     * 处理页面顶部焦点图数据
     * 
     * @param  array $data 接口传回的焦点图数据
     * @return array       处理之后的数据
     */
    private static function bannerData($data)
    {
        $result = array();

        foreach ($data as $single)
        {
            foreach ($single['data'] as $one)
            {
                $banner = array();
                $banner['img'] = Helpers::getImageUrl($one['src'], 640, 240, 1);
                $banner['url'] = $one['url'];

                if(count($single['data']) === 1)
                {
                    $result = $banner;
                }
                else
                {
                    $result['list'][] = $banner;
                }
            }
        }

        return $result;
    }


    /**
     * 筛选出来的商品数据处理
     * 
     * @param  string gender    "1,3"表示男, "2,3"表示女, "1,2,3"表示全部
     * @param  integer brand    品牌Id
     * @param  integer sort     品类Id
     * @param  integer color    颜色Id
     * @param  integer size     尺码Id
     * @param  string price     价格
     * @param  string $channel  1表示男, 2表示女
     * @param  integer $p_d     折扣
     * @param  integer $dayLimit查询天数的限制区间,默认为1
     * @param  integer $limit   查询返回的最大限制数, 默认为50
     * @param  integer $page    分页第几页, 默认第1页
     * @return array            处理之后的筛选数据
     */
    public static function selectData($gender, $brand, $sort, $color, $size, $price, $p_d, $channel, $dayLimit = 1, $limit = 50, $page = 1)
    {
        $data = NewsaleData::selectNewSaleProducts($gender, $brand, $sort, $color, $size, $price, $p_d, $channel, $dayLimit, $limit, $page);

        $result = array();

        if($data['code'] === 200)
        {
            foreach ($data['data']['product_list'] as $val) {
                $result['goods'][] = Helpers::formatProduct($val);
            }
        }

        return $result;
    }
    
}