Authored by OF1706

searchLess recommend service

... ... @@ -62,3 +62,5 @@ exports.escapeLength = function(value) {
return strs.join('');
};
... ...
... ... @@ -1652,3 +1652,23 @@ exports.handleBrandShopCoupons = (data, params) => {
return false;
};
/**
* 分词数据处理
* @param list
* @param string | options
* @return array 处理之后的筛选数据
*/
exports.termsSuggestion = (list, options) => {
// let termsSuggestion = [];
//
// _.forEach(list, terms => {
// termsSuggestion.push({
// name: terms,
// link: helpers.urlFormat('/', {needSuggestion: 'Y', query: terms}, 'search'),
// select:(options.needSuggestion === 'Y' && terms === decodeURIComponent(options.query))
// });
// });
};
... ...
... ... @@ -8,7 +8,7 @@ const utils = '../../../utils';
const api = global.yoho.API;
const Promise = require('bluebird');
const co = Promise.coroutine;
const saleApi = require('./sale-api');
const helpers = global.yoho.helpers;
const searchApi = require('./search-api');
const headerModel = require('../../../doraemon/models/header');
const productProcess = require(`${utils}/product-process`);
... ... @@ -23,6 +23,16 @@ exports.getKeyActivity = (query) => {
};
/**
* 转换价格
*
* @param float|string $price 价格
* @return float|string 转换之后的价格
*/
const transPrice = (price) => {
return price ? (price * 1).toFixed(2) : '0.00';
};
/**
* 获取搜索数据
* @param {[type]} origin [description]
* @return {[type]} [description]
... ... @@ -98,27 +108,13 @@ exports.getSearchData = (params, channel) => {
Object.assign({showDiscount: false, from: {type: 'search', params: params}}, params)),
latestWalk: 6,
hasNextPage: searchHandler.handleNextPage(params, result[2].data.total),
shopEntry: result[3]
shopEntry: result[3],
name: params.query,
// suggest: result[2].data.suggestion.terms_suggestion,
suggest: (['vans,vans8,vans9,vans10,vans11'].join(",")).split(",").splice(0,3),
href:`${searchHandler.handleFilterUrl(params)}`
});
// if (params.page === 1 && (result[2].data.total <= 20 || params.needSuggestion === 'Y')) {
// finalResult.isNeedSuggestion = params.needSuggestion === 'Y'; // 是否是关键词搜索判断
// finalResult.termsSuggestion = productProcess.termsSuggestion(result[2].data.suggestion &&
// result[2].data.suggestion.terms_suggestion ||
// ['新款', '卫衣', 'vans', 'VANS 卫衣', '拼接设计新款夹克'], params);
// finalResult.isMaybeLike = params.needSuggestion === 'Y' &&
// result[2].data.total > 0 ? false : true; // 猜你喜欢显示不显示判断
// }
finalResult.criteo = {skn: searchHandler.getCriteo(_.get(finalResult.search, 'goods'))};
}
return finalResult;
... ... @@ -268,9 +264,7 @@ exports.getSearchLessProduct = (channel, uid, udid, page) => {
break;
}
if (!_.isNumber(page)) {
return result;
}
... ... @@ -280,108 +274,89 @@ exports.getSearchLessProduct = (channel, uid, udid, page) => {
page = 1;
}
together.data = {
goods: [
{
'id': '77',
'skn': '6666',
'market_price': '',
'price': '¥1.00',
'product_name': 'hongzhuang男T恤',
'url': '//item.yohobuy.com/p508144.html',
'pic_url': '//img10.static.yhbimg.com/goodsimg/2017/03/02/19/01784d258adeab1c87e4b49eee3f771691.jpg?imageMogr2/thumbnail/280x382/extent/280x382/background/d2hpdGU=/position/center/quality/90'
},
{
'id': '77',
'skn': '6666',
'market_price': '',
'price': '¥1.00',
'product_name': 'hongzhuang男T恤',
'url': '//item.yohobuy.com/p508144.html',
'pic_url': '//img10.static.yhbimg.com/goodsimg/2017/03/02/19/01784d258adeab1c87e4b49eee3f771691.jpg?imageMogr2/thumbnail/280x382/extent/280x382/background/d2hpdGU=/position/center/quality/90'
},
{
'id': '77',
'skn': '6666',
'market_price': '',
'price': '¥1.00',
'product_name': 'hongzhuang男T恤',
'url': '//item.yohobuy.com/p508144.html',
'pic_url': '//img10.static.yhbimg.com/goodsimg/2017/03/02/19/01784d258adeab1c87e4b49eee3f771691.jpg?imageMogr2/thumbnail/280x382/extent/280x382/background/d2hpdGU=/position/center/quality/90'
},
{
'id': '77',
'skn': '6666',
'market_price': '',
'price': '¥1.00',
'product_name': 'hongzhuang男T恤',
'url': '//item.yohobuy.com/p508144.html',
'pic_url': '//img10.static.yhbimg.com/goodsimg/2017/03/02/19/01784d258adeab1c87e4b49eee3f771691.jpg?imageMogr2/thumbnail/280x382/extent/280x382/background/d2hpdGU=/position/center/quality/90'
},
{
'id': '77',
'skn': '6666',
'market_price': '',
'price': '¥1.00',
'product_name': 'hongzhuang男T恤',
'url': '//item.yohobuy.com/p508144.html',
'pic_url': '//img10.static.yhbimg.com/goodsimg/2017/03/02/19/01784d258adeab1c87e4b49eee3f771691.jpg?imageMogr2/thumbnail/280x382/extent/280x382/background/d2hpdGU=/position/center/quality/90'
},
{
'id': '77',
'skn': '6666',
'market_price': '',
'price': '¥1.00',
'product_name': 'hongzhuang男T恤',
'url': '//item.yohobuy.com/p508144.html',
'pic_url': '//img10.static.yhbimg.com/goodsimg/2017/03/02/19/01784d258adeab1c87e4b49eee3f771691.jpg?imageMogr2/thumbnail/280x382/extent/280x382/background/d2hpdGU=/position/center/quality/90'
}
],
'message': 'Product List'
};
if (!_.get(together, 'data.goods')) {
// together.data.product_list = {
// goods_list: [
// {
// 'id': '77',
// 'skn': '6666',
// 'market_price': '',
// 'price': '¥1.00',
// 'product_name': 'hongzhuang男T恤',
// 'url': '//item.yohobuy.com/p508144.html',
// 'pic_url': '//img10.static.yhbimg.com/goodsimg/2017/03/02/19/01784d258adeab1c87e4b49eee3f771691.jpg?imageMogr2/thumbnail/280x382/extent/280x382/background/d2hpdGU=/position/center/quality/90'
// },
// {
// 'id': '77',
// 'skn': '6666',
// 'market_price': '',
// 'price': '¥1.00',
// 'product_name': 'hongzhuang男T恤',
// 'url': '//item.yohobuy.com/p508144.html',
// 'pic_url': '//img10.static.yhbimg.com/goodsimg/2017/03/02/19/01784d258adeab1c87e4b49eee3f771691.jpg?imageMogr2/thumbnail/280x382/extent/280x382/background/d2hpdGU=/position/center/quality/90'
// },
// {
// 'id': '77',
// 'skn': '6666',
// 'market_price': '',
// 'price': '¥1.00',
// 'product_name': 'hongzhuang男T恤',
// 'url': '//item.yohobuy.com/p508144.html',
// 'pic_url': '//img10.static.yhbimg.com/goodsimg/2017/03/02/19/01784d258adeab1c87e4b49eee3f771691.jpg?imageMogr2/thumbnail/280x382/extent/280x382/background/d2hpdGU=/position/center/quality/90'
// },
// {
// 'id': '77',
// 'skn': '6666',
// 'market_price': '',
// 'price': '¥1.00',
// 'product_name': 'hongzhuang男T恤',
// 'url': '//item.yohobuy.com/p508144.html',
// 'pic_url': '//img10.static.yhbimg.com/goodsimg/2017/03/02/19/01784d258adeab1c87e4b49eee3f771691.jpg?imageMogr2/thumbnail/280x382/extent/280x382/background/d2hpdGU=/position/center/quality/90'
// },
// {
// 'id': '77',
// 'skn': '6666',
// 'market_price': '',
// 'price': '¥1.00',
// 'product_name': 'hongzhuang男T恤',
// 'url': '//item.yohobuy.com/p508144.html',
// 'pic_url': '//img10.static.yhbimg.com/goodsimg/2017/03/02/19/01784d258adeab1c87e4b49eee3f771691.jpg?imageMogr2/thumbnail/280x382/extent/280x382/background/d2hpdGU=/position/center/quality/90'
// },
// {
// 'id': '77',
// 'skn': '6666',
// 'market_price': '',
// 'price': '¥1.00',
// 'product_name': 'hongzhuang男T恤',
// 'url': '//item.yohobuy.com/p508144.html',
// 'pic_url': '//img10.static.yhbimg.com/goodsimg/2017/03/02/19/01784d258adeab1c87e4b49eee3f771691.jpg?imageMogr2/thumbnail/280x382/extent/280x382/background/d2hpdGU=/position/center/quality/90'
// }
// ],
// 'message': 'Product List'
// };
if (!_.get(together, 'data.product_list')) {
return result;
}
result.data.hasPrev = true;
result.data.hasNext = true;
result.data.item = _.map(together.data.goods, it => {
result.data.item = _.map(together.data.product_list, it => {
let item = {
id: it.id,
id: it.product_id,
skn: it.product_skn,
href: it.url,
title: it.product_name,
img: it.default_pic ? helpers.image(it.default_pic, 100, 100) : '',
img: it.default_images ? helpers.image(it.default_pic, 100, 100) : '',
alt: it.product_name,
price: Number(it.price.sales_price)
price: '¥' + transPrice(it.sales_price),
marketPrice: '¥' + transPrice(it.market_price)
};
let firstGoods = it.goods_list && it.goods_list[0];
let productSkc = firstGoods && firstGoods.product_skc;
if (item.price !== Number(it.price.market_price)) {
it.marketPrice = Number(it.price.market_price);
}
item.href = helpers.getUrlBySkc(it.product_id, productSkc, it.cn_alphabet);
return item;
... ... @@ -391,19 +366,14 @@ exports.getSearchLessProduct = (channel, uid, udid, page) => {
// 当数据量不足6个时,判定为没有下一页
if (page === 1) {
result.data.hasPrev = false;
}
if (!result.data.item || result.data.item.length < 6) {
result.data.hasNext = false;
}
return result;
})();
... ...
... ... @@ -5,24 +5,4 @@
{{/search}}
{{> common/criteo}}
{{#if_cond search.goods.length '<' 20 }}
<div class="center-content clearfix">
<div class="bottom-tab-line">
<span class="bottom-title" data-type="recommend" data-role="recommend-tab">你可能喜欢</span>
</div>
<div class="goods-slide">
<div data-role="recommend-slide" class="slide-panel"></div>
</div>
<div>
<div class="lazy-load-object-2">
<textarea class="latest-walk-datalazyload" style="visibility: hidden;">
<script>getSearchRecommend();</script>
</textarea>
</div>
</div>
</div>
{{/if_cond}}
{{log this}}
</div>
... ...
... ... @@ -55,8 +55,16 @@
<div class="list-left pull-left">
{{> product/left-content}}
</div>
<div class="list-right pull-right">
{{#if_cond goods.length '>' 20 }}
<div class="search-suggest-less">
"<em>{{name}}</em>"&nbsp;搜索结果太少了,试试{{#suggest}}&nbsp;"<a href="{{href}}">{{.}}</a>"&nbsp;{{/suggest}}关键词搜索

</div>
{{/if_cond}}
{{> list/top-coupon}}
{{# sortIntro}}
... ... @@ -79,6 +87,23 @@
{{> product/standard-content}}
{{#if_cond goods.length '>' 20 }}
<div class="bottom-tab-line">
<span class="bottom-title" data-type="recommend" data-role="recommend-tab">你可能喜欢</span>
</div>
<div class="goods-slide">
<div data-role="recommend-slide" class="slide-panel"></div>
</div>
<div>
<div class="lazy-load-object-2">
<textarea class="latest-walk-datalazyload" style="visibility: hidden;">
<script>getSearchRecommend();</script>
</textarea>
</div>
</div>
{{/if_cond}}
{{> product/latest-walk}}
</div>
... ...
... ... @@ -28,13 +28,13 @@ module.exports = {
// service: 'http://service.yoho.cn/',
// gray
// singleApi: 'http://single.gray.yohops.com/',
// api: 'http://api.gray.yohops.com/',
// service: 'http://service.gray.yohops.com/',
singleApi: 'http://single.gray.yohops.com/',
api: 'http://api.gray.yohops.com/',
service: 'http://service.gray.yohops.com/',
// dev
api: 'http://dev-api.yohops.com:9999/',
service: 'http://dev-service.yohops.com:9999/',
// api: 'http://dev-api.yohops.com:9999/',
// service: 'http://dev-service.yohops.com:9999/',
imSocket: 'ws://socket.yohobuy.com:10240',
imCs: 'http://im.yohobuy.com/api',
... ...
<div class="search-suggest-less">
"<em>夹克</em>"&nbsp;搜索结果太少了,试试&nbsp;"<a href="{{href}}">上衣</a>"&#12288;"<a href="{{href}}">外套</a>"&nbsp;关键词搜索

</div>
<div class="filter-box">
{{# checkedConditions}}
{{#if conditions}}
... ...
... ... @@ -3,7 +3,7 @@
<ul class="goods clearfix img-list">
{{#each item}}
<li class="good img-item" data-id="id" data-skn="skn">
<a href="{{href}}" target="_blank">
<a href="{{href}}" target="_blank" class="good-img">
<img class="lazy" data-original="{{img}}"/>
</a>
<a class="name" href="{{href}}" target="_blank">{{title}}</a>
... ...
... ... @@ -19,7 +19,6 @@ function getSearchRecommend() {
url: 'http://search.yohobuy.com/product/search/less/recommend',
dataType: 'json',
data: {
// limit: num || 15
},
success: function(data) {
... ... @@ -57,13 +56,13 @@ function getSearchRecommend() {
}));
lazyLoad($recommendSlide.find('.lazy'));
console.log('aaaaa');
console.log("aaaaa");
$recommendSlide.find('.goods-slide-item').slider2({
shownum: 5,
isCircle: true
});
console.log('bbbb');
console.log("bbbb");
}
}
... ...
... ... @@ -14,12 +14,12 @@
.bottom-tab-line {
position: relative;
height: 20px;
width: 990px;
width: 970px;
line-height: 20px;
margin: 0 auto;
&:before {
content: " ";
width: 990px;
width: 970px;
height: 1px;
background-color: #b0b0b0;
position: absolute;
... ... @@ -40,8 +40,8 @@
}
}
.goods-slide {
width: 990px;
height: 368px;
width: 970px;
height: 322px;
overflow: hidden;
margin: 0 auto;
.goods-slide-item {
... ... @@ -51,15 +51,15 @@
font-size: 12px;
font-weight: 300;
.goods {
width: 990px;
height: 338px;
margin: 20px 0 10px;
width: 970px;
height: 290px;
/*margin: 20px 0 10px;*/
overflow: hidden;
}
.good {
float: left;
margin-right: 10px;
width: 190px;
margin-right: 20px;
width: 180px;
&:nth-child(5n) {
margin-right: 0;
}
... ... @@ -69,10 +69,16 @@
}
}
}
.good-img {
display: inline-block;
width: 180px;
height: 240px;
overflow: hidden;
}
img {
display: block;
width: 190px;
height: 251px;
width: 180px;
height: 240px;
}
.name {
display: block;
... ... @@ -82,7 +88,7 @@
text-align: center;
height: 12px;
line-height: 12px;
margin: 15px 0 10px;
/*margin: 15px 0 10px;*/
padding-left: 2px;
padding-right: 2px;
@mixin ellipsis;
... ... @@ -90,7 +96,7 @@
.price {
text-align: center;
margin-bottom: 8px;
/*margin-bottom: 8px;*/
}
.sale-price,.market-price {
... ...