Newsale.php 5.29 KB
<?php

namespace Product;

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

/**
 * 新品到着相关的模板数据模型
 * 
 * @name NewsaleModel
 * @package models/Product
 * @copyright yoho.inc
 * @version 1.0 (2015-10-22 17:23:51)
 * @author fei.hong <fei.hong@yoho.cn>
 */
class NewsaleModel
{
    
    /* 获取新品到着顶部焦点图的位置码 */
    const CODE_FOCUS_NEW = 'a7989369aa86681c678bc40f171b8f1d';
    /* 获取折扣专区顶部焦点图的位置码 */
    const CODE_FOCUS_SALE = 'e9c9be32d72e2906d404a72ee24cb523';

    /**
     * 获取新品到着的焦点图资源数据
     * 
     * @return array
     */
    public static function getNewFocus()
    {
        $result = array();

        if (USE_CACHE) {
            // 先尝试获取一级缓存(master), 有数据则直接返回.
            $result = Cache::get(CacheConfig::KEY_ACTION_PRODUCT_NEWSALE_INDEX, 'master');
            if (!empty($result)) {
                return $result;
            }
        }

        // 调用接口获取数据并封装
        $newsale = NewsaleData::getNewsaleFocus(self::CODE_FOCUS_NEW);
        if (isset($newsale['code']) && isset($newsale['data'][0]['data'][0])) {
            $result = Helpers::formatBanner($newsale['data'][0]['data'][0], 640, 240);
        }

        if (USE_CACHE) {
            // 接口调用异常时, 不害怕,从我们的二级缓存(slave)里再取数据.
            if (empty($result)) {
                $result = Cache::get(CacheConfig::KEY_ACTION_PRODUCT_NEWSALE_INDEX, 'slave');
            }
            // 接口调用正常,数据封装完成, 则设置一级(master)和二级(slave)数据缓存
            else {
                Cache::set(CacheConfig::KEY_ACTION_PRODUCT_NEWSALE_INDEX, $result);
            }
        }

        return $result;
    }

    /**
     * 获取折扣专区的焦点图资源数据
     * 
     * @return array
     */
    public static function getSaleFocus()
    {
        $result = array();

        if (USE_CACHE) {
            // 先尝试获取一级缓存(master), 有数据则直接返回.
            $result = Cache::get(CacheConfig::KEY_ACTION_PRODUCT_NEWSALE_DISCOUNT, 'master');
            if (!empty($result)) {
                return $result;
            }
        }

        // 调用接口获取数据并封装
        $newsale = NewsaleData::getNewsaleFocus(self::CODE_FOCUS_SALE);
        if (isset($newsale['code']) && isset($newsale['data'][0]['data'][0])) {
            $result = Helpers::formatBanner($newsale['data'][0]['data'][0], 640, 240);
        }

        if (USE_CACHE) {
            // 接口调用异常时, 不害怕,从我们的二级缓存(slave)里再取数据.
            if (empty($result)) {
                $result = Cache::get(CacheConfig::KEY_ACTION_PRODUCT_NEWSALE_DISCOUNT, 'slave');
            }
            // 接口调用正常,数据封装完成, 则设置一级(master)和二级(slave)数据缓存
            else {
                Cache::set(CacheConfig::KEY_ACTION_PRODUCT_NEWSALE_DISCOUNT, $result);
            }
        }

        return $result;
    }

    /**
     * 获取新品到着的商品列表
     * 
     * @param int $channel 1:男生,2:女生,3:潮童,4:创意生活
     * @param int $limit 查询的限制数
     * @return array
     */
    public static function getNewProducts($channel, $limit)
    {
        $result = array();
        $products = array();

        /* 根据频道查询商品列表 */
        switch (intval($channel)) {
            case 1: // 男生
                $products = NewsaleData::getNewProducts('1,3', 1, $limit);
                break;
            case 2: // 女生
                $products = NewsaleData::getNewProducts('2,3', 2, $limit);
                break;
            case 3: // 潮童
                $products = NewsaleData::getNewProducts('1,2,3', 3, $limit);
                break;
            case 4: // 创意生活
                $products = NewsaleData::getNewProducts('1,2,3', 4, $limit);
                break;
        }

        /* 格式化商品数据 */
        if (!empty($products)) {
            $result = NewSaleProcess::newSaleData($products);
        }

        return $result;
    }

    /**
     * 获取折扣专区的商品列表
     * 
     * @param int $channel 1:男生,2:女生,3:潮童,4:创意生活
     * @param int $limit 查询的限制数
     * @return array
     */
    public static function getSaleProducts($channel, $limit)
    {
        $result = array();
        $products = array();

        /* 根据频道查询商品列表 */
        switch (intval($channel)) {
            case 1: // 男生
                $products = NewsaleData::getSaleProducts('1,3', 1, $limit);
                break;
            case 2: // 女生
                $products = NewsaleData::getSaleProducts('2,3', 2, $limit);
                break;
            case 3: // 潮童
                $products = NewsaleData::getSaleProducts('1,2,3', 3, $limit);
                break;
            case 4: // 创意生活
                $products = NewsaleData::getSaleProducts('1,2,3', 4, $limit);
                break;
        }

        /* 格式化商品数据 */
        if (!empty($products)) {
            $result = NewSaleProcess::newSaleData($products);
        }

        return $result;
    }

}