Toggle navigation
Toggle navigation
This project
Loading...
Sign in
wangshusheng
/
YOHOBUYPC
·
Commits
Go to a project
GitLab
Go to dashboard
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
周少峰
9 years ago
Commit
5f4bcab14d52dba6a6b959c88a6acef16b66758e
1 parent
626a005d
代码评审后,修改
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
187 additions
and
212 deletions
library/LibModels/Web/Product/SearchData.php
library/WebPlugin/HelperSearch.php
yohobuy/www.yohobuy.com/application/models/Product/Search.php
library/LibModels/Web/Product/SearchData.php
View file @
5f4bcab
...
...
@@ -218,4 +218,109 @@ class SearchData extends \LibModels\Wap\Product\SearchData
}
return
Yohobuy
::
get
(
self
::
getUrl
(
'suggest'
),
$param
,
$cache
);
}
/**
* 并行调接口url获取(搜索产品数据)
* @param
*/
public
static
function
getProductUrl
(
$condition
)
{
// 排序数据映射表
$orderMaps
=
array
(
's_t_desc'
=>
'shelve_time:desc'
,
's_t_asc'
=>
'shelve_time:asc'
,
's_p_asc'
=>
'sales_price:asc'
,
's_p_desc'
=>
'sales_price:desc'
,
'p_d_desc'
=>
'discount:desc'
,
'p_d_asc'
=>
'discount:asc'
,
'skn_desc'
=>
'product_skn:desc'
,
'skn_asc'
=>
'product_skn:asc'
,
'activities_desc'
=>
'activities.order_by:desc'
,
'activities_asc'
=>
'activities.order_by:asc'
,
's_n_asc'
=>
'sales_num:asc'
,
's_n_desc'
=>
'sales_num:desc'
,
'activities_id_desc'
=>
'activities.activity_id:desc'
,
'activities_id_asc'
=>
'activities.activity_id:asc'
,
);
$param
=
array
();
$param
[
'status'
]
=
1
;
// 是否上架,1表示在架,2表示不在
$param
[
'sales'
]
=
'Y'
;
// 只搜索销售的产品
$param
[
'stocknumber'
]
=
1
;
// 过滤掉已售罄的商品
if
(
!
isset
(
$condition
[
'order'
]))
{
$param
[
'order'
]
=
$orderMaps
[
's_t_desc'
];
}
else
{
$param
[
'order'
]
=
$orderMaps
[
$condition
[
'order'
]];
}
if
(
!
isset
(
$condition
[
'page'
]))
{
$param
[
'page'
]
=
1
;
}
if
(
isset
(
$condition
[
'viewNum'
]))
{
$param
[
'viewNum'
]
=
$condition
[
'viewNum'
];
}
else
if
(
!
isset
(
$condition
[
'limit'
]))
{
$param
[
'viewNum'
]
=
60
;
}
else
{
$param
[
'viewNum'
]
=
$condition
[
'limit'
];
unset
(
$condition
[
'limit'
]);
}
if
(
!
empty
(
$condition
))
{
$param
+=
$condition
;
}
return
Yohobuy
::
httpBuildQuery
(
SearchData
::
getUrl
(),
$param
);
}
/**
* 并行调接口url获取(产品分类)
* @param
*/
public
static
function
getClassesUrl
(
$condition
)
{
$condition
[
'sales'
]
=
'Y'
;
//在销售商品分类
$condition
[
'status'
]
=
1
;
//上架商品分类
$condition
[
'stocknumber'
]
=
1
;
//过滤掉已售罄
return
Yohobuy
::
httpBuildQuery
(
SearchData
::
getUrl
(
'sort'
),
$condition
);
}
/**
* 并行调接口url获取(获取折扣区间)
* @param
*/
public
static
function
getDiscountUrl
(
$param
=
array
())
{
return
Yohobuy
::
httpBuildQuery
(
SearchData
::
getUrl
(
'discount'
),
$param
);
}
/**
* 并行调接口url获取(获取最新上架)
*/
public
static
function
getRecentShelveUrl
(
$param
=
array
())
{
return
Yohobuy
::
httpBuildQuery
(
SearchData
::
getUrl
(
'recent'
),
$param
);
}
/**
* 并行调接口url获取(获取品牌数据)
*/
public
static
function
getBrandUrl
(
$customOptions
=
array
())
{
// 构建必传参数
$param
=
Yohobuy
::
param
();
$param
[
'brand_id'
]
=
$customOptions
[
'brandId'
];
$param
[
'uid'
]
=
$customOptions
[
'uid'
];
$param
[
'method'
]
=
'app.brand.getBrandIntro'
;
$param
[
'client_secret'
]
=
Sign
::
getSign
(
$param
);
return
Yohobuy
::
httpBuildQuery
(
Yohobuy
::
API_URL
,
$param
);
}
/**
* 获取品牌店铺接口地址
* @param $param
* @return string
*/
public
static
function
getShopUrl
(
$param
)
{
return
Yohobuy
::
httpBuildQuery
(
SearchData
::
getUrl
(
'shop'
),
$param
);
}
}
\ No newline at end of file
...
...
library/WebPlugin/HelperSearch.php
View file @
5f4bcab
...
...
@@ -390,91 +390,80 @@ class HelperSearch
$params
=
self
::
$params
;
//url中的品牌ids
$brandIds
=
isset
(
$params
[
'brand'
])
&&
!
empty
(
$params
[
'brand'
])
?
explode
(
','
,
$params
[
'brand'
])
:
array
();
if
(
isset
(
$filter
[
'brand'
])
&&
!
empty
(
$filter
[
'brand'
]))
{
$brand
=
$filter
[
'brand'
];
//已选中品牌数量
$existBrandNum
=
0
;
//已选中品牌标签名
$existName
=
''
;
foreach
(
$brand
as
$key
=>
$v
)
{
$selectBrandIds
=
$brandIds
;
//品牌已被选中
if
(
in_array
(
$v
[
'id'
],
$brandIds
))
{
$filterKey
=
array_search
(
$v
[
'id'
],
$selectBrandIds
);
unset
(
$selectBrandIds
[
$filterKey
]);
$url
=
self
::
buildUrl
(
array_merge
(
$params
,
array
(
'brand'
=>
implode
(
','
,
$selectBrandIds
)
)));
if
(
$existBrandNum
===
0
)
{
$existName
.=
$v
[
'brand_name'
]
.
'、'
;
}
if
(
$existBrandNum
===
1
){
$existName
.=
substr
(
$v
[
'brand_name'
],
0
,
3
)
.
'...'
;
}
$existBrandNum
++
;
}
//该品牌未被选中
else
{
$selectBrandIds
[]
=
$v
[
'id'
];
$url
=
self
::
buildUrl
(
array_merge
(
$params
,
array
(
'brand'
=>
implode
(
','
,
$selectBrandIds
)
)));
}
$this_brand
=
array
(
'id'
=>
$v
[
'id'
],
'href'
=>
$url
,
'name'
=>
$v
[
'brand_name'
],
'key'
=>
strtolower
(
$v
[
'brand_name'
]),
'checked'
=>
in_array
(
$v
[
'id'
],
$brandIds
)
?
true
:
false
);
if
(
is_numeric
(
$v
[
'brand_alif'
]))
{
$this_brand
[
'index'
]
=
'0-9'
;
}
else
{
$this_brand
[
'index'
]
=
strtolower
(
$v
[
'brand_alif'
]);
//如果没有品牌返回空
if
(
!
isset
(
$filter
[
'brand'
])
||
empty
(
$filter
[
'brand'
]))
{
return
array
();
}
$brand
=
$filter
[
'brand'
];
//已选中品牌数量
$existBrandNum
=
0
;
//已选中品牌标签名
$existName
=
''
;
foreach
(
$brand
as
$key
=>
$v
)
{
$selectBrandIds
=
$brandIds
;
//品牌已被选中
if
(
in_array
(
$v
[
'id'
],
$brandIds
))
{
$filterKey
=
array_search
(
$v
[
'id'
],
$selectBrandIds
);
unset
(
$selectBrandIds
[
$filterKey
]);
$url
=
self
::
buildUrl
(
array_merge
(
$params
,
array
(
'brand'
=>
implode
(
','
,
$selectBrandIds
)
)));
if
(
$existBrandNum
===
0
)
{
$existName
.=
$v
[
'brand_name'
]
.
'、'
;
}
//默认品牌 TODO
if
(
count
(
$result
[
'default'
])
<
10
)
{
$result
[
'default'
][]
=
$this_brand
;
if
(
$existBrandNum
===
1
){
$existName
.=
substr
(
$v
[
'brand_name'
],
0
,
3
)
.
'...'
;
}
//品牌列表
$brandList
[
$v
[
'brand_alif'
]][]
=
$this_brand
;
$brandAll
[
$v
[
'id'
]]
=
$v
[
'brand_name'
];
$existBrandNum
++
;
}
// print_r($brandList); exit;
//清空品牌参数
unset
(
$params
[
'brand'
]);
//设置选中
if
(
isset
(
self
::
$params
[
'brand'
])
&&
!
empty
(
self
::
$params
[
'brand'
]))
{
self
::
$selected
[
'brand'
]
=
array
(
'name'
=>
str_replace
(
'、'
,
''
,
$existName
),
'href'
=>
self
::
buildUrl
(
$params
)
);
//该品牌未被选中
else
{
$selectBrandIds
[]
=
$v
[
'id'
];
$url
=
self
::
buildUrl
(
array_merge
(
$params
,
array
(
'brand'
=>
implode
(
','
,
$selectBrandIds
)
)));
}
ksort
(
$brandList
);
//品牌列表排序, 添加品牌索引 TODO
$index_key
=
array
();
// print_r($brandList); exit;
foreach
(
$brandList
as
$key
=>
$val
)
{
if
(
$key
&&
!
in_array
(
$key
,
$index_key
)
&&
!
is_numeric
(
$key
))
{
$index
[
'index'
]
=
strtolower
((
$key
));
$index
[
'name'
]
=
$key
;
$index_key
[]
=
$index
;
}
if
(
$key
&&
!
in_array
(
$key
,
$index_key
)
&&
is_numeric
(
$key
)
&&
count
(
$result
[
'brandIndex'
])
===
1
)
{
$index
[
'index'
]
=
'0-9'
;
$index
[
'name'
]
=
'0~9'
;
$result
[
'brandIndex'
][]
=
$index
;
}
if
(
is_array
(
$val
))
{
foreach
(
$val
as
$v
)
{
$result
[
'brandsShow'
][]
=
$v
;
}
}
$this_brand
=
array
(
'id'
=>
$v
[
'id'
],
'href'
=>
$url
,
'name'
=>
$v
[
'brand_name'
],
'key'
=>
strtolower
(
$v
[
'brand_name'
]),
'checked'
=>
in_array
(
$v
[
'id'
],
$brandIds
)
?
true
:
false
);
//默认品牌
if
(
$key
<
10
)
{
//默认品牌
$result
[
'default'
][]
=
$this_brand
;
}
if
(
is_numeric
(
$v
[
'brand_alif'
]))
{
$this_brand
[
'index'
]
=
'0-9'
;
}
$result
[
'brandIndex'
]
=
array_merge
(
$result
[
'brandIndex'
],
$index_key
);
unset
(
$brandList
);
else
{
$this_brand
[
'index'
]
=
strtolower
(
$v
[
'brand_alif'
]);
}
//品牌列表
$brandList
[
$this_brand
[
'index'
]][]
=
$this_brand
;
$brandAll
[
$v
[
'id'
]]
=
$v
[
'brand_name'
];
}
//清空品牌参数
unset
(
$params
[
'brand'
]);
//设置选中
if
(
isset
(
self
::
$params
[
'brand'
])
&&
!
empty
(
self
::
$params
[
'brand'
]))
{
self
::
$selected
[
'brand'
]
=
array
(
'name'
=>
rtrim
(
$existName
,
'、'
),
'href'
=>
self
::
buildUrl
(
$params
)
);
}
ksort
(
$brandList
);
//品牌列表排序
foreach
(
$brandList
as
$key
=>
$val
)
{
$index
[
'name'
]
=
$key
!=
'0-9'
?
strtoupper
(
$key
)
:
'0~9'
;
$index
[
'index'
]
=
$key
;
$result
[
'brandsShow'
]
=
array_merge_recursive
(
$result
[
'brandsShow'
],
$val
);
$result
[
'brandIndex'
][]
=
$index
;
}
unset
(
$brandList
);
//搜索页已选中,返回空
if
(
self
::
checkSearch
(
'brand'
))
{
return
array
();
...
...
@@ -577,24 +566,14 @@ class HelperSearch
}
$result
= array();
//设置已选中价格
if (!empty(
$priceId
) && isset(
$filter['price'][$priceId]
)) {
if (!empty(
$priceId
)) {
$price
= explode(',' ,
$priceId
);
$customName
= self::
$params['price']
== '2000,99999' ? '¥2000以上' : '¥' . (int)
$price[0]
. '-' . (int)
$price[1]
;
$name
= isset(
$filter['price'][$priceId]
) ?
$filter['price'][$priceId]
:
$customName
;
self::
$selected['price']
= array(
'name' =>
$
filter['price'][$priceId]
,
'name' =>
$
name
,
'href' => self::buildUrl(
$params
)
);
}else{
$price
= explode(',',
$priceId
);
//TODO
if (!
$price[0]
) {
$price[0]
= 0;
}
if (!
$price[1]
) {
$price[1]
= 99999;
}
self::
$selected['price']
= array(
'name' => self::
$params['price']
== '2000,99999' ? '¥2000以上' : '¥' . (int)
$price[0]
. '-' . (int)
$price[1]
,
'href' => self::buildurl(
$params
)
);
}
if (self::checkSearch('price')) {
return array();
...
...
@@ -794,9 +773,9 @@ class HelperSearch
}
/**
* 是否新品
TODO
* 是否新品
*/
public static function is
n
ew()
public static function is
N
ew()
{
$params
= self::
$params
;
$selected
= '';
...
...
@@ -978,7 +957,6 @@ class HelperSearch
$result['conditions']
=
$data
;
$result['clearUrl']
= self::current();
}
// print_r(
$result
); exit;
return
$result
;
}
...
...
@@ -1192,114 +1170,6 @@ class HelperSearch
}
/**
* 并行调接口url获取(搜索产品数据)
* @param
*/
public static function getProductUrl(
$condition
)
{
// 排序数据映射表
$orderMaps
= array(
's_t_desc' => 'shelve_time:desc',
's_t_asc' => 'shelve_time:asc',
's_p_asc' => 'sales_price:asc',
's_p_desc' => 'sales_price:desc',
'p_d_desc' => 'discount:desc',
'p_d_asc' => 'discount:asc',
'skn_desc' => 'product_skn:desc',
'skn_asc' => 'product_skn:asc',
'activities_desc' => 'activities.order_by:desc',
'activities_asc' => 'activities.order_by:asc',
's_n_asc' => 'sales_num:asc',
's_n_desc' => 'sales_num:desc',
'activities_id_desc' => 'activities.activity_id:desc',
'activities_id_asc' => 'activities.activity_id:asc',
);
$param
= array();
$param['status']
= 1; // 是否上架,1表示在架,2表示不在
$param['sales']
= 'Y'; // 只搜索销售的产品
$param['stocknumber']
= 1; // 过滤掉已售罄的商品
if (!isset(
$condition['order']
)) {
$param['order']
=
$orderMaps['s_t_desc']
;
} else {
$param['order']
=
$orderMaps[$condition['order']]
;
}
if (!isset(
$condition['page']
)) {
$param['page']
= 1;
}
if(isset(
$condition['viewNum']
)) {
$param['viewNum']
=
$condition['viewNum']
;
} else if (!isset(
$condition['limit']
)) {
$param['viewNum']
= 60;
} else {
$param['viewNum']
=
$condition['limit']
;
unset(
$condition['limit']
);
}
if (!empty(
$condition
)) {
$param
+=
$condition
;
}
return Yohobuy::httpBuildQuery(SearchData::getUrl(),
$param
);
}
/**
* 并行调接口url获取(产品分类)
* @param
*/
public static function getClassesUrl(
$condition
)
{
$condition['sales']
= 'Y'; //在销售商品分类
$condition['status']
= 1; //上架商品分类
$condition['stocknumber']
= 1; //过滤掉已售罄
return Yohobuy::httpBuildQuery(SearchData::getUrl('sort'),
$condition
);
}
/**
* 并行调接口url获取(获取折扣区间)
* @param
*/
public static function getDiscountUrl(
$param
= array())
{
return Yohobuy::httpBuildQuery(SearchData::getUrl('discount'),
$param
);
}
/**
* 并行调接口url获取(获取最新上架)
*/
public static function getRecentShelveUrl(
$param
= array())
{
return Yohobuy::httpBuildQuery(SearchData::getUrl('recent'),
$param
);
}
/**
* 并行调接口url获取(获取品牌数据)
*/
public static function getBrandUrl(
$customOptions
= array())
{
// 构建必传参数
$param
= Yohobuy::param();
$param['brand_id']
=
$customOptions['brandId']
;
$param['uid']
=
$customOptions['uid']
;
$param['method']
= 'app.brand.getBrandIntro';
$param['client_secret']
= Sign::getSign(
$param
);
return Yohobuy::httpBuildQuery(Yohobuy::API_URL,
$param
);
}
/**
* 获取品牌店铺接口地址 TODO
* @param
$param
* @return string
*/
public static function getShopUrl(
$param
)
{
return Yohobuy::httpBuildQuery(SearchData::getUrl('shop'),
$param
);
}
/**
* 获取品牌首页banner条
*
* @return array 品牌banner条数据
...
...
@@ -1362,7 +1232,7 @@ class HelperSearch
//排序方式
$result['sortType']
= array( self::orderDefault(),self::orderTime(),self::orderPrice(),self::orderDiscount());
//特殊:新品、特价、限量
$result['checks']
= array(self::is
n
ew(),self::specialoffer(),self::limited());
$result['checks']
= array(self::is
N
ew(),self::specialoffer(),self::limited());
//每行显示5个产品
$result['fivePerLine']
= true;
//每行显示6个产品
...
...
yohobuy/www.yohobuy.com/application/models/Product/Search.php
View file @
5f4bcab
...
...
@@ -145,11 +145,11 @@ class SearchModel
$urlList
=
array
();
$searchCondition
=
self
::
searchCondition
(
$customCondition
,
$customOptions
);
// 组合搜索商品url
$urlList
[
'product'
]
=
HelperSearch
::
getProductUrl
(
$searchCondition
[
'condition'
]);
$urlList
[
'product'
]
=
SearchData
::
getProductUrl
(
$searchCondition
[
'condition'
]);
// 组合搜索分类url
$urlList
[
'sort'
]
=
HelperSearch
::
getClassesUrl
(
$searchCondition
[
'sortCondition'
]);
$urlList
[
'sort'
]
=
SearchData
::
getClassesUrl
(
$searchCondition
[
'sortCondition'
]);
// 组合搜索折扣区间url
$urlList
[
'discount'
]
=
HelperSearch
::
getDiscountUrl
(
$searchCondition
[
'condition'
]);
$urlList
[
'discount'
]
=
SearchData
::
getDiscountUrl
(
$searchCondition
[
'condition'
]);
$result
=
Yohobuy
::
getMulti
(
$urlList
,
array
(),
true
);
// 组织模板数据
...
...
@@ -179,13 +179,13 @@ class SearchModel
}
}
// 组合搜索商品url
$urlList
[
'product'
]
=
HelperSearch
::
getProductUrl
(
$searchCondition
[
'condition'
]);
$urlList
[
'product'
]
=
SearchData
::
getProductUrl
(
$searchCondition
[
'condition'
]);
// 组合搜索分类url
$urlList
[
'sort'
]
=
HelperSearch
::
getClassesUrl
(
$searchCondition
[
'sortCondition'
]);
$urlList
[
'sort'
]
=
SearchData
::
getClassesUrl
(
$searchCondition
[
'sortCondition'
]);
// 组合搜索店铺url
if
(
isset
(
$searchCondition
[
'condition'
][
'query'
]))
{
$param
[
'keyword'
]
=
$searchCondition
[
'condition'
][
'query'
];
$urlList
[
'shop'
]
=
HelperSearch
::
getShopUrl
(
$param
);
$urlList
[
'shop'
]
=
SearchData
::
getShopUrl
(
$param
);
}
$data
=
Yohobuy
::
getMulti
(
$urlList
,
array
(),
true
);
//获取品牌商品分类
...
...
Please
register
or
login
to post a comment