<?php namespace Product; use Configs\CacheConfig; use LibModels\Wap\Product\NewsaleData; use Plugin\DataProcess\NewSaleProcess; use Plugin\DataProcess\ListProcess; use Plugin\Helpers; use Plugin\Cache; /** * 新品到着相关的模板数据模型 * * @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_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'; /** * 获取新品到着的焦点图资源数据 * * @return array */ public static function getNewFocus($channel) { $result = array(); /* 根据频道调用接口 */ switch (intval($channel)) { case 1: // 男生 $result = self::cacheControl(CacheConfig::KEY_ACTION_PRODUCT_NEWSALE_INDEX_BOYS, self::CODE_TOP_NEW_BOYS); break; case 2: // 女生 $result = self::cacheControl(CacheConfig::KEY_ACTION_PRODUCT_NEWSALE_INDEX_GIRLS, self::CODE_TOP_NEW_GIRLS); break; case 3: // 潮童 $result = self::cacheControl(CacheConfig::KEY_ACTION_PRODUCT_NEWSALE_INDEX_KIDS, self::CODE_TOP_NEW_KIDS); break; case 4: // 创意生活 $result = self::cacheControl(CacheConfig::KEY_ACTION_PRODUCT_NEWSALE_INDEX_LIFESTYLE, self::CODE_TOP_NEW_LIFESTYLE); break; } return $result; } /** * 获取折扣专区的焦点图资源数据 * * @return array */ public static function getSaleFocus($channel) { $result = array(); /* 根据频道调用接口 */ switch (intval($channel)) { case 1: // 男生 $result = self::cacheControl(CacheConfig::KEY_ACTION_PRODUCT_NEWSALE_DISCOUNT_BOYS, self::CODE_TOP_SALE_BOYS); break; case 2: // 女生 $result = self::cacheControl(CacheConfig::KEY_ACTION_PRODUCT_NEWSALE_DISCOUNT_GIRLS, self::CODE_TOP_SALE_GIRLS); break; case 3: // 潮童 $result = self::cacheControl(CacheConfig::KEY_ACTION_PRODUCT_NEWSALE_DISCOUNT_KIDS, self::CODE_TOP_SALE_KIDS); break; case 4: // 创意生活 $result = self::cacheControl(CacheConfig::KEY_ACTION_PRODUCT_NEWSALE_DISCOUNT_LIFESTYLE, self::CODE_TOP_SALE_LIFESTYLE); break; } 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 (isset($products['code']) && $products['code'] == 200) { $result = NewSaleProcess::newSaleData($products['data']); } 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 (isset($products['code']) && $products['code'] == 200) { $result = NewSaleProcess::newSaleData($products['data']); } return $result; } /** * 顶部焦点图缓存控制 * @param const $cacheKey 缓存常量值 * @param const $codeKey 顶部焦点图位置码 * @return array 焦点图数据 */ private static function cacheControl($cacheKey, $codeKey) { $result = array(); if (USE_CACHE) { // 先尝试获取一级缓存(master), 有数据则直接返回. $result = Cache::get($cacheKey, 'master'); if (!empty($result)) { return $result; } } $newsale = NewsaleData::getNewsaleFocus($codeKey); // 调用接口获取数据并封装 if (isset($newsale['code']) && isset($newsale['data'][0]['data'])) { if(count($newsale['data'][0]['data']) === 1) { $result = Helpers::formatBanner($newsale['data'][0]['data'][0], 640, 240); } else { foreach ($newsale['data'][0]['data'] as $one) { $result['list'][] = Helpers::formatBanner($one, 640, 240); } } } if (USE_CACHE) { // 接口调用异常时, 不害怕,从我们的二级缓存(slave)里再取数据. if (empty($result)) { $result = Cache::get($cacheKey, 'slave'); } // 接口调用正常,数据封装完成, 则设置一级(master)和二级(slave)数据缓存 else { Cache::set($cacheKey, $result); } } return $result; } /** * 筛选出来的商品数据处理 * * @param array $data 筛选出来的原数据 * @return array 处理之后的数据 */ public static function selectData($data) { $result = array(); if (isset($data['code']) && $data['code'] === 200 && isset($data['data']['product_list'])) { foreach ($data['data']['product_list'] as $val) { $result['goods'][] = Helpers::formatProduct($val, true, false, false, 299,388); } } return $result; } /** * 获取筛选数据 * @param array $data 接口返回的数据 * @param string $gender 默认选择的性别,默认1,2,3表示所有 * @return array 处理之后的数据 */ public static function filterData($data, $gender = '1,2,3') { $result = array(); /* 格式化筛选数据 */ if (isset($data['code']) && $data['code'] == 200 && isset($data['data']['filter'])) { $result['filter'] = ListProcess::getFilterData($data['data']['filter'], $gender); } return $result; } }