NewsaleData.php 7.1 KB
<?php

namespace LibModels\Wap\Product;

use Api\Yohobuy;
use Api\Sign;

/**
 * 新品到着,折扣专区接口操作类
 * 
 * @name NewsaleData
 * @package Library/LibModels/wap/Product
 * @copyright yoho.inc
 * @version 1.0 (2015-10-8)
 * @author gtskk <rocky.zhang@yoho.cn>
 */
class NewsaleData
{

    /**
     * 获取新品到着,折扣专区焦点图数据
     * @param  string $contentCode 	内容位置码
     * @return array              	新品到着焦点图有关数据
     */
    public static function getNewsaleFocus($contentCode)
    {
        // 构建必传参数
        $param = Yohobuy::param();

        $param['content_code'] = $contentCode;
        $param['client_secret'] = Sign::getSign($param);

        return Yohobuy::get(Yohobuy::SERVICE_URL . 'operations/api/v5/resource/get', $param);
    }

    /**
     * 获取新品到着商品数据
     * 
     * @param  string $gender 		"1,3"表示男, "2,3"表示女, "1,2,3"表示全部
     * @param  string $channel      1表示男, 2表示女
     * @param  string $order 		排序方式,默认s_t_desc表示按照时间倒序排列
     * @param  integer $limit    	查询返回的最大限制数, 默认为60
     * @param  integer $page 		分页第几页, 默认第1页
     * @return array           		新品到着商品数据
     */
    public static function getNewProducts($gender, $channel, $order = 's_t_desc', $limit = 60, $page = 1)
    {
        $param = Yohobuy::param();
        $param['method'] = 'app.search.newProduct';
        $param['gender'] = $gender;
        $param['order'] = $order;
        $param['page'] = $page;
        $param['limit'] = $limit;
        $param['yh_channel'] = $channel;

        $param['dayLimit'] = 1;
        $param['client_secret'] = Sign::getSign($param);

        return Yohobuy::get(Yohobuy::API_URL, $param);
    }

    /**
     * 筛选新品到着、折扣专区商品
     * 
     * @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 $p_d     	 折扣
     * @param  integer $channel  表示频道号,1位男生,2为女生
     * @param  integer $dayLimit 限制读取多少天,默认为1天
     * @param  integer $limit    查询返回的最大限制数, 默认为50
     * @param  integer $page 	 分页第几页, 默认第1页
     * @param  string $order        排序方式,默认s_t_desc表示按照时间倒序排列
     * 
     * @return array          	 根据指定条件筛选出来的商品
     */
    public static function selectNewSaleProducts($gender, $brand, $sort, $color, $size, $price, $p_d, $channel, $dayLimit = null, $limit = 60, $page = 1, $order = 's_t_desc')
    {
        $selectItems = array(
            'gender' => $gender,
            'brand' => $brand,
            'sort' => $sort,
            'color' => $color,
            'size' => $size,
            'price' => $price,
            'p_d' => $p_d,
            'dayLimit' => $dayLimit
        );
        // 拉取筛选参数
        $queriedParams = array_filter($selectItems, function($v) {
            return !empty($v);
        });

        $param = Yohobuy::param();
        if (!is_null($dayLimit)) {
            $param['method'] = 'app.search.newProduct';
        } else {
            $param['method'] = 'app.search.sales';
            $param['p_d'] = '0.1,0.9';
        }
        $param['page'] = $page;
        $param['limit'] = $limit;
        $param['order'] = $order;
        $param['yh_channel'] = $channel;
        $param = array_merge($param, $queriedParams);
        $param['client_secret'] = Sign::getSign($param);

        return Yohobuy::get(Yohobuy::API_URL, $param, 600); // 缓存10分钟
    }

    /**
     * 获取折扣专区商品数据
     * 
     * @param  string $gender 		"1,3"表示男, "2,3"表示女, "1,2,3"表示全部
     * @param  string $channel 		1表示男, 2表示女
     * @param  integer $limit    	查询返回的最大限制数, 默认为50
     * @param  integer $page 		分页第几页, 默认第1页
     * @return array           		折扣专区商品数据
     */
    public static function getSaleProducts($gender, $channel, $limit = 60, $page = 1)
    {
        $param = Yohobuy::param();
        $param['method'] = 'app.search.sales';
        $param['gender'] = $gender;
        $param['page'] = $page;
        $param['limit'] = $limit;
        $param['yh_channel'] = $channel;

        $param['p_d'] = '0.1,0.9';
        $param['client_secret'] = Sign::getSign($param);

        return Yohobuy::get(Yohobuy::API_URL, $param);
    }

    /**
     * 筛选折扣专区商品
     * 
     * @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 $limit   查询返回的最大限制数, 默认为50
     * @param  integer $page 	分页第几页, 默认第1页
     * @return array          	筛选出来的折扣专区商品
     */
    public static function selectSaleProducts($gender, $brand, $sort, $color, $size, $price, $p_d, $channel, $limit = 50, $page = 1)
    {
        $selectItems = array(
            'gender' => $gender,
            'brand' => $brand,
            'sort' => $sort,
            'color' => $color,
            'size' => $size,
            'price' => $price
        );
        // 拉取筛选参数
        $queriedParams = array_filter($selectItems, function($v) {
            return $v !== null;
        });

        $param = Yohobuy::param();
        $param['method'] = 'app.search.sales';
        $param['yh_channel'] = $channel;
        $param['p_d'] = $p_d;
        $param['page'] = $page;
        $param['limit'] = $limit;
        $param = array_merge($param, $queriedParams);

        $param['client_secret'] = Sign::getSign($param);

        return Yohobuy::get(Yohobuy::API_URL, $param);
    }

    /**
     * 获取热销排行榜商品数据
     *
     * @param  string $gender "1,3"表示男, "2,3"表示女, "1,2,3"表示全部
     * @param  string|null $sort 品类ID查询参数
     * @param  integer|null $tab_id Tab的ID
     * @param  integer $limit 查询返回的最大限制数, 默认为50
     * @param  integer $page 分页第几页, 默认第1页
     * @return array                新品到着商品数据
     */
    public static function getTopProducts($gender, $sort = null, $tab_id = null, $limit = 50, $page = 1)
    {
        $param = Yohobuy::param();
        $param['method'] = 'app.search.top';
        $param['gender'] = $gender;
        !empty($sort) && $param['sort'] = $sort;
        !empty($tab_id) && $param['tab_id'] = $tab_id;
        $param['page'] = $page;
        $param['limit'] = $limit;

        $param['client_secret'] = Sign::getSign($param);

        return Yohobuy::get(Yohobuy::API_URL, $param);
    }

}