SearchData.php 4.97 KB
<?php
namespace LibModels\Web\Product;

use Api\Yohobuy;
class SearchData extends \LibModels\Wap\Product\SearchData
{
    public static $shopsUrl = 'http://101.200.31.165/yohosearch/shops.json';
    /**
     * 获取搜索的服务地址
     *
     * 备注:此处是根据环境来确定使用阿里云内网还是外网的URL
     *
     * @return string
     */
    private static function getUrl($type = 'search')
    {
        defined('APPLICATION_ENV') || define('APPLICATION_ENV', 'developer');
        switch (APPLICATION_ENV) {
            case 'release':
                if($type == 'sort'){
                    return 'http://100.98.132.63/yohosearch/sortgroup.json';
                }
                elseif($type == 'suggest'){
                    return 'http://100.98.132.63/yohosearch/suggest.json';
                }
                return 'http://100.98.132.63/yohosearch/search.json';
            case 'test':
            case 'preview':
            case 'developer':
            default:
                if($type == 'sort'){
                    return 'http://101.200.31.165/yohosearch/sortgroup.json';
                }
                elseif($type == 'suggest'){
                    return 'http://101.200.31.165/yohosearch/suggest.json';
                }

                return 'http://101.200.31.165/yohosearch/search.json';
        }
    }
    /**
     * 根据分类列表获取商品信息
     *
     * @param array $params
     * @param array $sortList
     * @return array
     */
    public static function getSearchDataBySort(array $params, array $sortList)
    {
        $data = array();
        foreach ($sortList as $v) {
            if(empty($v['viewNum'])){
                continue;
            }
            $searchParams = array_merge($params, $v);
            $list = self::searchElasticByCondition($searchParams, true);
            $productList = empty($list['data']['product_list']) ? array() : $list['data']['product_list'];
            if(count($productList) < $v['viewNum']){
                continue;
            }
            $data = array_merge($data, $productList);
        }
        return $data;
    }

    /**
     * 根据查询条件查询品类列表
     * 
     * @param  string  $query  关键字
     * @param  bool  $needAllSort 为1时返回全部分类
     * @param  bool  needSmallSort 为1时返回小分类
     * @param  string  $brand  品牌,查多个品牌以逗号分隔
     * @param  string  $mosort 产品产品大分类ID,查多个大类以逗号分隔
     * @param  string  $misort 产品产品中分类ID,查多个中类以逗号分隔
     * @param  string  $sort 产品产品小分类ID,查多个小类以逗号分隔
     * @param  string  $gender 性别,默认为null,"1"表示男, "2"表示女, "3"表示通用
     * @param  integer $color  颜色id
     * @param  integer $size   尺码id
     * @param  integer $price  价格
     * @param  integer $style  风格ID
     * @param  integer $parameter_xxx 属性类型ID与值ID 参数名称格式:parameter_{属性类型ID}={属性值ID},如查询厚度为中“parameter_875=4801”
     * @param  integer $stocknumber 库存量
     * @param  integer $shelve_time 时间区间
     * @param  integer $specialoffer 特价类型
     * @param  bool $sales 是否销售
     * @param  bool $promotion 是否为促销品
     * @param  integer $vdt 是否为促销品
     * @param  bool $vdt 折扣类型
     * @param  integer $p_d 促销浮点值
     * @param  integer $attribute  商品属性  1正常商品 2赠品
     * @param  integer $limited 是否限量 “N”或“Y”
     * @param  integer $new  是否新品 “N”或“Y”
     * @param  integer $status 是否上架
     * @param  integer $sell_channels 销售平台
     * @param  integer $p_d_int  促销折扣 int型如7
     * @param  integer $act_temp 活动模板
     * @param  integer $act_rec	活动模板是否推荐
     * @param  integer $act_status	活动模板商品状态
     * @param  integer $attribute_not	过滤商品属性,attribute_not=2过滤掉赠品
     * @param  integer $not_*	not_字段名,过滤字段
     * @return array           搜索到的数据
     */
    public static function getClassesData($classes = array(), $cache = false)
    {
        $classes['sales'] = 'Y';  //在销售商品分类
        $classes['status'] = 1;   //上架商品分类
        $classes['stocknumber'] = 1;    //过滤掉已售罄
        return Yohobuy::get(self::getUrl('sort'),$classes, $cache);
    }

    /**
     * 获取搜索提示
     * @param $param
     * @param $cache
     * @return array
     */
    public static function getSuggest($param, $cache = false)
    {
        if (empty($param['query'])) {
            return array();
        }
        if (empty($param['size'])) {
            $param['size'] = 10;
        }
        return Yohobuy::get(self::getUrl('suggest'),$param, $cache);
    }
}