SearchData.php
4.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?php
namespace LibModels\Web\Product;
use Api\Yohobuy;
class SearchData extends \LibModels\Wap\Product\SearchData
{
/**
* 获取搜索的服务地址
*
* 备注:此处是根据环境来确定使用阿里云内网还是外网的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);
}
}