Authored by yyq

htaccess

... ... @@ -171,24 +171,23 @@ const searchLessRecommend = (req, res, next) => {
* @param {[type]} res [description]
* @return {[type]} [description]
*/
const suggestIndex = (req, res, next) => {
let params = req.params.id || '';
const keyword = (req, res, next) => {
let params = req.query;
let query = stringCode.hexToUtf8(req.params.id || '');
let resData = {
title: '潮流商品搜索 | YOHO!BUY 有货',
keywords: 'Yoho! 有货,潮流,时尚,流行,购物,B2C,正品,购物网站,网上购物,货到付款,' +
'品牌服饰,男士护肤,黑框眼镜,匡威,板鞋,i.t,izzue,5cm,eastpak,vans,lylescott,g-shock,' +
'new balance,lacoste,melissa,casio,卡西欧手表,舒雅,jasonwood,odm,AAAA,香港购物,日本潮流',
description: '潮流商品搜索,上衣,衬衫,TEE,卫衣,冲锋衣,风衣,羽绒服,裤子,休闲鞋,板鞋,配饰,复古眼镜'
};
let resData = {};
// return search.getSearchSuggestData{query: stringCode.hexToUtf8(params)},
return search.getSearchSuggestData({query: '卫衣'},
return search.getSearchKeywordData(Object.assign(params, {query: query}),
req.yoho.channel).then(result => {
Object.assign(resData, result);
Object.assign(resData, result, {
title: `${query}价格_图片_品牌_怎么样-YOHO!BUY有货`,
keywords: `${query},${query}价格,${query}图片,${query}怎么样,${query}品牌,YOHO!BUY有货`,
description: `YOHO!BUY有货网yohobuy.com是国内专业的${query}网上潮流购物商城,为您找到${_.get(result,
'search.totalCount', 0)}${query}、产品的详细参数,实时报价,价格行情,图片、评价、品牌等信息。买${query},就上YOHO!BUY有货`
});
if (!_.get(resData, 'search.goods') || !_.get(resData, 'search.goods').length) {
_.set(resData, 'search.keyWord', req.query.query);
_.set(resData, 'search.keyWord', query);
return res.render('search/no-result', resData);
}
res.render('search/index', resData);
... ... @@ -203,6 +202,6 @@ module.exports = {
searchFilterBrands,
searchHistory, // 搜索历史记录
searchLessRecommend,
suggestIndex
keyword
};
... ...
... ... @@ -1740,7 +1740,7 @@ exports.handleBrandShopCoupons = (data, params) => {
* @param {string} [baseUrl] 需要跳转非当前页面传的相对路径(可不传,默认为空字符串)
* @returns {{}}
*/
exports.handleSuggestData = (origin) => {
exports.handleSuggestData = (origin, query) => {
let leftContent = {};
let list = [];
... ... @@ -1750,16 +1750,18 @@ exports.handleSuggestData = (origin) => {
}];
_.forEach(origin, value => {
let category = {
if (query === value.keyword) {
return;
}
list.push({
childList: [
{
name: `${value.keyword}`,
href: helpers.urlFormat(`/so/${stringCode.utf8ToHex(value.keyword)}.html`, null, 'www')
}
]
};
list.push(category);
});
});
leftContent.allSuggest = {all: all, list: list};
... ...
... ... @@ -322,7 +322,7 @@ exports.getSearchLessProduct = (channelNum, uid, udid, page) => {
};
const setSearchSuggestData = (result, params, channel) => {
const setSearchKeywordData = (result, params, channel) => {
let changeQuery = Object.assign({}, params);
let finalResult = {
headerData: Object.assign(result[0].headerData, {
... ... @@ -331,51 +331,32 @@ const setSearchSuggestData = (result, params, channel) => {
search: {}
};
_.unset(changeQuery, 'query');
// 获取左侧类目数据
if (result[1].code === 200) {
finalResult.search = {
leftContent: searchHandler.handleSuggestData(result[1].data),
leftContent: searchHandler.handleSuggestData(_.get(result, '[1].data', []), params.query),
isSearch: true
};
}
// 获取商品数据和顶部筛选条件
if (result[2].code === 200) {
// 搜索推荐词,获取对应的参数值
let termsSuggestion = _.get(result[2], 'data.suggestion.terms_suggestion', []);
// 推荐词 获取无商品,首次搜索,通过isChangedQuery做开关
if (result[2].data.isChangedQuery === 'Y') {
Object.assign(changeQuery, {query: termsSuggestion[0]});
}
Object.assign(finalResult.search,
searchHandler.handlePathNavData({total: result[2].data.total }, params, 'search', channel),
{
filters: {},
opts: searchHandler.handleOptsData(changeQuery, result[2].data.total, result[2].data.filter),
opts: searchHandler.handleOptsData(changeQuery, result[2].data.total),
totalCount: result[2].data.total,
footPager: searchHandler.handlePagerData(result[2].data.total, changeQuery),
goods: productProcess.processProductList(result[2].data.product_list,
Object.assign({showDiscount: false, from: {type: 'search', params: params}}, params)),
latestWalk: 6,
hasNextPage: searchHandler.handleNextPage(changeQuery, result[2].data.total),
shopEntry: result[3],
name: params.query,
suggest: (termsSuggestion.length !== 0) ? termsSuggestion.slice(0, 3) : false,
changedQuery: result[2].data.isChangedQuery === 'Y',
suggestFirst: finalResult.search.suggestFirst,
suggestSecond: finalResult.search.suggestSecond
name: params.query
});
if (finalResult.search.changedQuery) {
finalResult.search.suggestFirst = finalResult.search.suggest[0];
finalResult.search.suggestSecond = _.slice(termsSuggestion, 1, termsSuggestion.length).splice(0, 3);
}
finalResult.criteo = {skn: searchHandler.getCriteo(_.get(finalResult.search, 'goods'))};
}
return finalResult;
... ... @@ -386,7 +367,7 @@ const setSearchSuggestData = (result, params, channel) => {
* @param {[type]} origin [description]
* @return {[type]} [description]
*/
exports.getSearchSuggestData = (params, channel) => {
exports.getSearchKeywordData = (params, channel) => {
let searchParams = searchHandler.getSearchParams(params);
switch (channel) {
... ... @@ -406,6 +387,8 @@ exports.getSearchSuggestData = (params, channel) => {
break;
}
searchParams.need_filter = 'no';
// 调用接口
let apiMethod = [
headerModel.requestHeaderData(channel),
... ... @@ -415,6 +398,6 @@ exports.getSearchSuggestData = (params, channel) => {
return api.all(apiMethod).then(result => {
return setSearchSuggestData(result, params, channel);
return setSearchKeywordData(result, params, channel);
});
};
... ...
... ... @@ -101,7 +101,7 @@ router.get('/search/suggest', search.suggest); // 搜索提示
router.get('/api/suggest', search.suggest4Old);
router.get('/search/history', search.searchHistory); // 搜索历史提示
router.get('/search/less/recommend', search.searchLessRecommend);// 搜索少或无 有可能喜欢
router.get('/search/suggestItem/:id', gbk2utf, search.suggestIndex);
router.get('/search/keyword/:id', search.keyword);
// 商品分类列表页
router.get('/list/index', gbk2utf, list.index);
... ...
... ... @@ -70,6 +70,13 @@ module.exports = [
}
},
// 推荐词列表页
{
type: TYPE.rewrite,
origin: /^\/so\/(.*)\.html(.*)/,
target: (req, match, p1) => `/product/search/keyword/${p1}`
},
// erp2good
{
type: TYPE.rewrite,
... ...