Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
YOHOBUYPC
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
2
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
whb
9 years ago
Commit
0801ddd9d618d44bf525d969b1df106a2dce4ca8
1 parent
35ccdc34
search model
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
198 additions
and
199 deletions
yohobuy/www.yohobuy.com/application/models/Product/Search.php
yohobuy/www.yohobuy.com/application/models/Product/Search.php
View file @
0801ddd
<?php
namespace
Product
;
use
Api\Yohobuy
;
use
Plugin\Helpers
;
use
Plugin\HelperSearch
;
use
\LibModels\Web\Product\SearchData
;
/**
* sale首页模板数据模型
*
* @name SaleModel
* @package models
* @copyright yoho.inc
* @version 1.0 (2015-12-17 13:54:56)
* @author sefon
*/
class
SearchModel
{
/**
* 搜索相关页面公共条件处理
* @param $param
* @param $option
* @return mixed
*/
public
static
function
searchCondition
(
$param
,
$option
)
{
/* 过滤请求参数 */
$condition
=
filter_input_array
(
INPUT_GET
,
array
(
'query'
=>
FILTER_SANITIZE_STRING
,
'brand'
=>
FILTER_SANITIZE_STRING
,
'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
[
'brand'
])
&&
!
empty
(
$condition
[
'brand'
]))
{
$condition
[
'brand'
]
=
rawurldecode
(
$condition
[
'brand'
]);
}
//性别
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
;
}
if
(
!
$price
[
1
])
{
$price
[
1
]
=
99999
;
}
$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
;
}
}
//每页记录数减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
getListData
(
$customCondition
=
array
(),
$customOptions
=
array
())
{
$urlList
=
array
();
$searchCondition
=
self
::
searchCondition
(
$customCondition
,
$customOptions
);
// 组合搜索商品url
$urlList
[
'product'
]
=
HelperSearch
::
getProductUrl
(
$searchCondition
[
'condition'
]);
// 组合搜索分类url
$urlList
[
'sort'
]
=
HelperSearch
::
getClassesUrl
(
$searchCondition
[
'condition'
]);
// 组合搜索折扣区间url
$urlList
[
'discount'
]
=
HelperSearch
::
getDiscountUrl
(
$searchCondition
[
'condition'
]);
// 组合搜索最新上架url
$urlList
[
'recent'
]
=
HelperSearch
::
getRecentShelveUrl
(
$searchCondition
[
'condition'
]);
//用户浏览记录
//$urlList['reviewUrl'] = HelperSearch::getReviewUrl($searchCondition['condition']);
$result
=
Yohobuy
::
getMulti
(
$urlList
,
array
(),
true
);
// 组织模板数据
$data
=
HelperSearch
::
getList
(
$result
,
$searchCondition
[
'options'
]);
return
$data
;
}
/**
* 搜索页面获取搜索数据
* @param $customCondition
* @param $customOptions
* @return array
*/
public
static
function
searchData
(
$customCondition
,
$customOptions
)
{
$urlList
=
array
();
$searchCondition
=
self
::
searchCondition
(
$customCondition
,
$customOptions
);
// 组合搜索商品url
$urlList
[
'product'
]
=
HelperSearch
::
getProductUrl
(
$searchCondition
[
'condition'
]);
// 组合搜索分类url
$urlList
[
'sort'
]
=
HelperSearch
::
getClassesUrl
(
$searchCondition
[
'condition'
]);
// 组合搜索店铺url
$param
[
'keyword'
]
=
$searchCondition
[
'condition'
][
'query'
];
$urlList
[
'shop'
]
=
HelperSearch
::
getShopUrl
(
$param
);
//用户浏览记录
//$urlList['reviewUrl'] = HelperSearch::getReviewUrl($searchCondition['condition']);
$result
=
Yohobuy
::
getMulti
(
$urlList
,
array
(),
true
);
// 组织模板数据
$data
=
HelperSearch
::
getList
(
$result
,
$searchCondition
[
'options'
]);
return
$data
;
}
/**
* 根据product_sn查询产品图片信息
* @param $product_sn
* @param $options
* @author sefon 2015-12-28 18:09:28
* @return array
*/
public
static
function
getProductPic
(
$product_sn
,
$options
)
{
$condition
[
'query'
]
=
$product_sn
;
//返回搜索条件
$condition
[
'needFilter'
]
=
0
;
//获取产品数据
$data
=
SearchData
::
searchElasticByCondition
(
$condition
);
if
(
isset
(
$data
[
'code'
])
&&
$data
[
'code'
]
===
200
&&
isset
(
$data
[
'data'
][
'product_list'
])
&&
!
empty
(
$data
[
'data'
][
'product_list'
]))
{
//组织数据结构
$data
=
HelperSearch
::
getProductPic
(
$data
[
'data'
][
'product_list'
],
$options
);
}
echo
json_encode
(
$data
);
}
<?php
namespace
Product
;
use
Api\Yohobuy
;
use
Plugin\Helpers
;
use
Plugin\HelperSearch
;
use
\LibModels\Web\Product\SearchData
;
/**
* sale首页模板数据模型
*
* @name SaleModel
* @package models
* @copyright yoho.inc
* @version 1.0 (2015-12-17 13:54:56)
* @author sefon
*/
class
SearchModel
{
/**
* 搜索相关页面公共条件处理
* @param $param
* @param $option
* @return mixed
*/
public
static
function
searchCondition
(
$param
,
$option
)
{
/* 过滤请求参数 */
$condition
=
filter_input_array
(
INPUT_GET
,
array
(
'query'
=>
FILTER_SANITIZE_STRING
,
'brand'
=>
FILTER_SANITIZE_STRING
,
'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
[
'brand'
])
&&
!
empty
(
$condition
[
'brand'
]))
{
$condition
[
'brand'
]
=
rawurldecode
(
$condition
[
'brand'
]);
}
//性别
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
;
}
if
(
!
$price
[
1
])
{
$price
[
1
]
=
99999
;
}
$condition
[
'price'
]
=
implode
(
','
,
$price
);
}
//返回搜索条件
$condition
[
'needFilter'
]
=
1
;
//过滤赠品
$condition
[
'attribute_not'
]
=
2
;
//默认排序
if
(
!
isset
(
$condition
[
'order'
])
||
empty
(
$condition
[
'order'
]))
{
$condition
[
'order'
]
=
's_n_desc'
;
}
$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
;
}
}
//每页记录数减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
getListData
(
$customCondition
=
array
(),
$customOptions
=
array
())
{
$urlList
=
array
();
$searchCondition
=
self
::
searchCondition
(
$customCondition
,
$customOptions
);
// 组合搜索商品url
$urlList
[
'product'
]
=
HelperSearch
::
getProductUrl
(
$searchCondition
[
'condition'
]);
// 组合搜索分类url
$urlList
[
'sort'
]
=
HelperSearch
::
getClassesUrl
(
$searchCondition
[
'condition'
]);
// 组合搜索折扣区间url
$urlList
[
'discount'
]
=
HelperSearch
::
getDiscountUrl
(
$searchCondition
[
'condition'
]);
// 组合搜索最新上架url
$urlList
[
'recent'
]
=
HelperSearch
::
getRecentShelveUrl
(
$searchCondition
[
'condition'
]);
//用户浏览记录
//$urlList['reviewUrl'] = HelperSearch::getReviewUrl($searchCondition['condition']);
$result
=
Yohobuy
::
getMulti
(
$urlList
,
array
(),
true
);
// 组织模板数据
$data
=
HelperSearch
::
getList
(
$result
,
$searchCondition
[
'options'
]);
return
$data
;
}
/**
* 搜索页面获取搜索数据
* @param $customCondition
* @param $customOptions
* @return array
*/
public
static
function
searchData
(
$customCondition
,
$customOptions
)
{
$urlList
=
array
();
$searchCondition
=
self
::
searchCondition
(
$customCondition
,
$customOptions
);
// 组合搜索商品url
$urlList
[
'product'
]
=
HelperSearch
::
getProductUrl
(
$searchCondition
[
'condition'
]);
// 组合搜索分类url
$urlList
[
'sort'
]
=
HelperSearch
::
getClassesUrl
(
$searchCondition
[
'condition'
]);
// 组合搜索店铺url
if
(
isset
(
$param
[
'keyword'
]))
{
$param
[
'keyword'
]
=
$searchCondition
[
'condition'
][
'query'
];
$urlList
[
'shop'
]
=
HelperSearch
::
getShopUrl
(
$param
);
}
//用户浏览记录
//$urlList['reviewUrl'] = HelperSearch::getReviewUrl($searchCondition['condition']);
$result
=
Yohobuy
::
getMulti
(
$urlList
,
array
(),
true
);
// 组织模板数据
$data
=
HelperSearch
::
getList
(
$result
,
$searchCondition
[
'options'
]);
return
$data
;
}
/**
* 根据product_sn查询产品图片信息
* @param $product_sn
* @param $options
* @author sefon 2015-12-28 18:09:28
* @return array
*/
public
static
function
getProductPic
(
$product_sn
,
$options
)
{
$condition
[
'query'
]
=
$product_sn
;
//返回搜索条件
$condition
[
'needFilter'
]
=
0
;
//获取产品数据
$data
=
SearchData
::
searchElasticByCondition
(
$condition
);
if
(
isset
(
$data
[
'code'
])
&&
$data
[
'code'
]
===
200
&&
isset
(
$data
[
'data'
][
'product_list'
])
&&
!
empty
(
$data
[
'data'
][
'product_list'
]))
{
//组织数据结构
$data
=
HelperSearch
::
getProductPic
(
$data
[
'data'
][
'product_list'
],
$options
);
}
echo
json_encode
(
$data
);
}
}
\ No newline at end of file
...
...
Please
register
or
login
to post a comment