|
|
<?php
|
|
|
namespace Product;
|
|
|
|
|
|
use Api\Yohobuy;
|
|
|
use Plugin\Helpers;
|
|
|
use Plugin\HelperSearch;
|
|
|
use \LibModels\Web\Product\SearchData;
|
|
|
|
...
|
...
|
@@ -17,40 +19,141 @@ class SearchModel |
|
|
{
|
|
|
|
|
|
/**
|
|
|
* 根据条件获取搜索数据
|
|
|
*
|
|
|
* @param $condition 搜索数据的条件
|
|
|
* @param $options Array([imgSize]
|
|
|
* => Array([0] => 235[1] => 314)[minImgSize] => Array([0] => 60[1] => 80)[gender] => 1[needPd] => Y[rowNum] => 5[viewNum] => 60)
|
|
|
* @author sefon 2015-12-17 16:12:18
|
|
|
* @return array
|
|
|
* 搜索相关页面公共条件处理
|
|
|
* @param $param
|
|
|
* @param $option
|
|
|
* @return mixed
|
|
|
*/
|
|
|
public static function getSearchData($condition, $options)
|
|
|
public static function SearchCondition($param, $option)
|
|
|
{
|
|
|
$data = array();
|
|
|
// 调用接口查询商品数据
|
|
|
$result = SearchData::searchElasticByCondition($condition);
|
|
|
if (isset($result['code']) && $result['code'] === 200) {
|
|
|
// 调用分类信息
|
|
|
$category = SearchData::getClassesData($condition);
|
|
|
if (isset($category['code']) && $category['code'] === 200) {
|
|
|
$result['data']['filter']['group_sort'] = $category['data']['sort'];
|
|
|
/* 过滤请求参数 */
|
|
|
$condition = filter_input_array(INPUT_GET, array(
|
|
|
'query' => FILTER_SANITIZE_STRING,
|
|
|
'brand' => FILTER_VALIDATE_INT,
|
|
|
'sort' => FILTER_VALIDATE_INT,
|
|
|
'msort' => FILTER_VALIDATE_INT,
|
|
|
'misort' => FILTER_VALIDATE_INT,
|
|
|
'color' => FILTER_VALIDATE_INT,
|
|
|
'size' => FILTER_DEFAULT,
|
|
|
'style' => FILTER_DEFAULT,
|
|
|
'price' => FILTER_DEFAULT,
|
|
|
'gender' => FILTER_SANITIZE_STRING,
|
|
|
'p_d' => FILTER_DEFAULT,
|
|
|
'shelve_time' => FILTER_DEFAULT,
|
|
|
'isNew' => FILTER_DEFAULT,
|
|
|
'specialoffer' => FILTER_DEFAULT,
|
|
|
'limited' => FILTER_DEFAULT,
|
|
|
'order' => FILTER_DEFAULT,
|
|
|
'viewNum' => FILTER_VALIDATE_INT,
|
|
|
'rowNum' => FILTER_VALIDATE_INT,
|
|
|
'page' => FILTER_VALIDATE_INT), false);
|
|
|
//关键字
|
|
|
if (isset($condition['query']) && !empty($condition['query'])) {
|
|
|
$condition['query'] = rawurldecode($condition['query']);
|
|
|
}
|
|
|
//性别
|
|
|
if (isset($condition['gender']) && !empty($condition['gender'])) {
|
|
|
$condition['gender'] = rawurldecode($condition['gender']);
|
|
|
}
|
|
|
else {
|
|
|
$condition['gender'] = Helpers::getGenderByCookie();
|
|
|
}
|
|
|
//每页显示商品数
|
|
|
$viewNumArray = array(60, 100, 200);
|
|
|
if(!isset($condition['viewNum']) || empty($condition['viewNum'])){
|
|
|
$condition['viewNum'] =60;
|
|
|
}
|
|
|
if (!in_array($condition['viewNum'], $viewNumArray)) {
|
|
|
$condition['viewNum'] = 60;
|
|
|
}
|
|
|
//每行显示的商品数量
|
|
|
if(!isset($condition['rowNum']) || empty($condition['rowNum'])){
|
|
|
$condition['rowNum'] =5;
|
|
|
}
|
|
|
if ($condition['rowNum'] == 6) {
|
|
|
$imgSize = array(195, 260);
|
|
|
$minImgSize = array(50, 67);
|
|
|
}
|
|
|
else {
|
|
|
$condition['rowNum'] = 5;
|
|
|
$imgSize = array(235, 314);
|
|
|
$minImgSize = array(60, 80);
|
|
|
}
|
|
|
//自定义搜索价格
|
|
|
if (isset($condition['price']) && !empty($condition['price'])) {
|
|
|
$price = explode(',', $condition['price']);
|
|
|
if (!$price[0]) {
|
|
|
$price[0] = 0;
|
|
|
}
|
|
|
// 调用折扣区间
|
|
|
$discount = SearchData::getDiscount();
|
|
|
if (isset($discount['code']) && $discount['code'] === 200) {
|
|
|
$result['data']['filter']['discount'] = $discount['data']['discount'];
|
|
|
if (!$price[1]) {
|
|
|
$price[1] = 99999;
|
|
|
}
|
|
|
// 调用最新上架
|
|
|
$recent = SearchData::recentShelve();
|
|
|
if (isset($discount['code']) && $discount['code'] === 200) {
|
|
|
$result['data']['filter']['recent'] = $recent['data']['recent'];
|
|
|
$condition['price'] = implode(',', $price);
|
|
|
}
|
|
|
//返回搜索条件
|
|
|
$condition['needFilter'] = 1;
|
|
|
//过滤赠品
|
|
|
$condition['attribute_not'] = 2;
|
|
|
//默认排序
|
|
|
if (!isset($condition['order']) || empty($condition['order'])) {
|
|
|
$condition['order'] = 's_n_desc';
|
|
|
}
|
|
|
if (!isset($condition['p_d']) || empty($condition['p_d'])) {
|
|
|
$condition['p_d'] = '0,0.9';
|
|
|
}
|
|
|
$options = array(
|
|
|
'imgSize' => $imgSize,
|
|
|
'minImgSize' => $minImgSize,
|
|
|
'rowNum' =>$condition['rowNum'],
|
|
|
'viewNum' =>$condition['viewNum'],
|
|
|
);
|
|
|
//接收高级选项
|
|
|
foreach ($_GET as $key =>$val) {
|
|
|
if (strpos('parameter_',$key) !== false) {
|
|
|
$condition[$key] = (int) $val;
|
|
|
}
|
|
|
//用户浏览记录
|
|
|
$result['data']['filter']['review'] = SearchData::getRecentReview();
|
|
|
// 组织模板数据
|
|
|
$data = HelperSearch::getList($result, $options);
|
|
|
}
|
|
|
//每页记录数减1,下一页占位
|
|
|
$condition['viewNum'] = $condition['viewNum'] - 1;
|
|
|
$condition = array_merge($condition, $param);
|
|
|
$options = array_merge($options, $option);
|
|
|
$data['condition'] = $condition;
|
|
|
$data['options'] = $options;
|
|
|
return $data;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 根据条件获取搜索数据
|
|
|
* @param array $customCondition
|
|
|
* @param array $customOptions
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function getSearchData($customCondition = array(), $customOptions = array())
|
|
|
{
|
|
|
$data = array();
|
|
|
$searchCondition = self::searchCondition($customCondition, $customOptions);
|
|
|
// 调用接口查询商品数据
|
|
|
$urlList['productUrl'] = HelperSearch::getProductUrl($searchCondition['condition']);
|
|
|
// 调用分类信息
|
|
|
$urlList['sortUrl'] = HelperSearch::getSortUrl($searchCondition['condition']);
|
|
|
// $result['data']['filter']['group_sort'] = $category['data']['sort'];
|
|
|
|
|
|
// 调用折扣区间
|
|
|
$urlList['discountUrl'] = HelperSearch::getDiscountUrl($searchCondition['condition']);
|
|
|
// $result['data']['filter']['discount'] = $discount['data']['discount'];
|
|
|
// 调用最新上架
|
|
|
$urlList['recentUrl'] = HelperSearch::getRecentUrl($searchCondition['condition']);
|
|
|
// $result['data']['filter']['recent'] = $recent['data']['recent'];
|
|
|
|
|
|
//用户浏览记录
|
|
|
//$urlList['reviewUrl'] = HelperSearch::getReviewUrl($searchCondition['condition']);
|
|
|
|
|
|
$result = Yohobuy::getMulti($urlList, array(), true);
|
|
|
|
|
|
|
|
|
|
|
|
// 组织模板数据
|
|
|
$data = HelperSearch::getList($result, $searchCondition['options']);
|
|
|
return $data;
|
|
|
}
|
|
|
|
...
|
...
|
@@ -60,7 +163,8 @@ class SearchModel |
|
|
* @param $options
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function searchData($condition, $options){
|
|
|
public static function searchData($condition, $options)
|
|
|
{
|
|
|
$data = self::getSearchData($condition, $options);
|
|
|
//获取品牌店铺信息
|
|
|
if (isset($condition['query'])) {
|
...
|
...
|
|