Authored by 周少峰

Merge branch 'master' into feature/zookeeper

... ... @@ -13,10 +13,10 @@ const index = (req, res, next) => {
let limit = req.query.limit;
let browserSkn = decodeURIComponent(req.cookies._browseskn);
let browserSkn = req.cookies._browseskn;
// 拆解skn
let skn = browserSkn ? browserSkn.replace(/\-(\d)+(\,){0,1}/g, ',') : '';
let skn = browserSkn ? decodeURIComponent(browserSkn).replace(/\-(\d)+(\,){0,1}/g, ',') : '';
// 去除skn字符串的最后一个多余的,
if (skn && skn.lastIndexOf(',') === skn.length - 1) {
... ...
... ... @@ -1138,7 +1138,7 @@ const _detailDataPkg = (origin, uid, vipLevel, cookies) => {
// 上市期
if (propOrigin('expect_arrival_time')) {
result.arrivalDate = `${propOrigin('expect_arrival_time')}`;
result.arrivalDate = `${propOrigin('expect_arrival_time')}`;
result.presalePrice = propOrigin('format_sales_price');
delete result.salePrice;
result.hasOtherPrice = false;
... ...
... ... @@ -165,7 +165,7 @@ const getListNewData = (params, channel) => {
let apiMethod = [
headerModel.requestHeaderData(channel),
searchApi.getSortList(Object.assign({}, {msort: '', misort: ''})),
searchApi.getProductList(Object.assign({new: 'Y'}, searchParams)),
searchApi.getProductList(Object.assign(searchParams)),
searchApi.getWeekNew(params)
];
... ... @@ -632,7 +632,7 @@ const getShopData = (shopId, channel, params, shopInfo) => {
_.forEach(prodList, value => {
list[value.product_skn] = {
img: helpers.getForceSourceUrl(value.default_images) +
'?imageView/1/w/{width}/h/{height}',
'?imageView2/1/w/{width}/h/{height}',
title: value.product_name,
price: ${value.sales_price}`
};
... ...
... ... @@ -542,10 +542,10 @@ exports.getSaleSpecialData = (id, params, channel) => {
node: data.left_ad_code // 水牌node
});
// 传品牌ID参数
if (special.brand_id) {
condition.brand = data.brand_id;
}
// // 传品牌ID参数
// if (data.brand_id) {
// condition.brand = data.brand_id;
// }
// 传促销id,促销id为空时传专区id
if (data.ispromotion) {
... ... @@ -563,7 +563,10 @@ exports.getSaleSpecialData = (id, params, channel) => {
if (!_.isEmpty(result[1])) {
resData.leftContent = searchHandler.handleSortData(_.get(result[1],
'data.sort', []), defaultParam);
'data.sort', []), Object.assign({
msort: params.msort || '',
misort: params.misort || ''
}, defaultParam));
}
if (!_.isEmpty(result[2])) {
... ...
... ... @@ -6,6 +6,7 @@
'use strict';
const utils = '../../../utils';
const api = global.yoho.API;
const saleApi = require('./sale-api');
const searchApi = require('./search-api');
const headerModel = require('../../../doraemon/models/header');
const productProcess = require(`${utils}/product-process`);
... ... @@ -102,6 +103,18 @@ exports.getSuggest = (params) => {
});
};
exports.getListBrandsFilter = (params, nparams) => {
return searchApi.getBrands4Filter(Object.assign({}, params, nparams)).then(result => {
let dest = [];
if (result.code === 200) {
dest = searchHandler.handleFilterBrands(result.data, params);
}
return dest;
});
};
exports.getBrands4Filter = (params) => {
let nparams = {};
... ... @@ -120,14 +133,25 @@ exports.getBrands4Filter = (params) => {
delete params.callback;
}
return searchApi.getBrands4Filter(Object.assign({}, params, nparams)).then(result => {
if (params.specialsale_id) {
return saleApi.getSaleSpecialAsync(params.specialsale_id).then(special => {
if (special && special.data) {
let data = special.data;
let dest = [];
// 传品牌ID参数
if (data.brand_id) {
nparams.brand = data.brand_id;
}
if (result.code === 200) {
dest = searchHandler.handleFilterBrands(result.data, params);
}
// 传促销id,促销id为空时传专区id
if (data.ispromotion) {
nparams.promotion = data.ispromotion;
}
}
return dest;
});
return this.getListBrandsFilter(params, nparams);
});
}
return this.getListBrandsFilter(params, nparams);
};
... ...
... ... @@ -30,52 +30,62 @@ const channelMap = {
const sortMap = {
boys: [
{misort: 20, viewNum: 5}, // 棉衣
{misort: 18, viewNum: 5}, // 羽绒服
{misort: 44, viewNum: 5}, // 休闲运动鞋
{misort: 12, viewNum: 5}, // 衬衫
{misort: 22, viewNum: 5}, // 大衣/风衣
{misort: 21, viewNum: 5}, // 夹克
{misort: 16, viewNum: 5}, // 卫衣
{misort: 257, viewNum: 5}, // 毛衣/针织
{misort: 26, viewNum: 5}, // 休闲裤
{misort: 27, viewNum: 5}, // 牛仔裤
{misort: 226, viewNum: 5}, // 防风外套
{misort: 45, viewNum: 5}, // 靴子
{misort: 49, viewNum: 5}, // 双肩包
{misort: 21, viewNum: 5}, // 夹克
{misort: 11, viewNum: 5}, // T恤
{misort: 28, viewNum: 5}, // 短裤
{misort: 61, viewNum: 5}, // 太阳镜/眼睛
{misort: 60, viewNum: 5}, // 帽子
{misort: 59, viewNum: 5}, // 手表
{misort: 66, viewNum: 5}, // 配饰
{misort: 65, viewNum: 5}, // 首饰
{misort: 59, viewNum: 5}, // 手表
{misort: 48, viewNum: 5}, // 时装鞋
{misort: 45, viewNum: 5}, // 靴子
{misort: 19, viewNum: 5}, // 西装
{misort: 309, viewNum: 5}, // 内裤
{misort: 259, viewNum: 5}, // 美妆
{misort: 237, viewNum: 5} // 钱包/手包/卡包/钥匙包
{misort: 39, viewNum: 5}, // 袜子
{misort: 61, viewNum: 5}, // 太阳镜/眼睛
{misort: 259, viewNum: 5} // 美妆
// {misort: 11, viewNum: 5}, // T恤
// {misort: 28, viewNum: 5}, // 短裤
// {misort: 48, viewNum: 5}, // 时装鞋
// {misort: 45, viewNum: 5}, // 靴子
// {misort: 19, viewNum: 5}, // 西装
// {misort: 237, viewNum: 5} // 钱包/手包/卡包/钥匙包
// {misort: 12, viewNum: 5}, // 衬衫
// {misort: 13, viewNum: 5}, // polo
// {misort: 46, viewNum: 5}, // 凉鞋/拖鞋
// {misort: 14, viewNum: 5}, // 背心
],
girls: [
{misort: 16, viewNum: 4}, // 卫衣
{misort: 21, viewNum: 4}, // 夹克
{misort: 22, viewNum: 4}, // 大衣/风衣
{misort: 16, viewNum: 4}, // 卫衣
{misort: 44, viewNum: 4}, // 休闲/运动鞋
{misort: 11, viewNum: 4}, // T恤
{misort: 12, viewNum: 4}, // 衬衫
{misort: 20, viewNum: 4}, // 棉服
{misort: 18, viewNum: 4}, // 羽绒服
{misort: 257, viewNum: 4}, // 毛衣/针织
{misort: 22, viewNum: 4}, // 大衣/风衣
{misort: 45, viewNum: 4}, // 靴子
{misort: 26, viewNum: 4}, // 休闲裤
{misort: 27, viewNum: 4}, // 牛仔裤
{misort: 31, viewNum: 4}, // 连衣裙
{misort: 11, viewNum: 4}, // T恤
{misort: 12, viewNum: 4}, // 衬衫
{misort: 32, viewNum: 4}, // 半身裙
{misort: 48, viewNum: 4}, // 时装鞋
{misort: 45, viewNum: 4}, // 靴子
{misort: 49, viewNum: 4}, // 双肩包
{misort: 50, viewNum: 4}, // 单肩/手拎包
{misort: 49, viewNum: 4}, // 双肩包
{misort: 60, viewNum: 4}, // 帽子
{misort: 65, viewNum: 4}, // 首饰
{misort: 59, viewNum: 4}, // 手表
{misort: 61, viewNum: 4}, // 太阳镜/眼镜
{misort: 66, viewNum: 4} // 配饰
{misort: 59, viewNum: 4} // 手表
// {misort: 61, viewNum: 4}, // 太阳镜/眼镜
// {misort: 66, viewNum: 4} // 配饰
// {misort: 28, viewNum: 4}, // 短裤
// {misort: 14, viewNum: 4}, // 背心
... ... @@ -91,18 +101,23 @@ const sortMap = {
{misort: 406, viewNum: 4}, // 大衣/风衣
{misort: 369, viewNum: 4}, // 休闲裤
{misort: 388, viewNum: 4}, // 牛仔裤
{misort: 390, viewNum: 4}, // 牛仔裤
{misort: 384, viewNum: 4}, // 打底裤/紧身裤
{misort: 368, viewNum: 4}, // 休闲/运动鞋
{misort: 392, viewNum: 4}, // 双肩包
{misort: 423, viewNum: 4}, // 棉衣
{misort: 430, viewNum: 4} // 羽绒服
{misort: 430, viewNum: 4}, // 羽绒服
{misort: 453, viewNum: 4}, // 防风外套
{misort: 402, viewNum: 4}, // 马甲
{misort: 417, viewNum: 4}, // 套装
{misort: 367, viewNum: 4}, // 衬衫
{misort: 371, viewNum: 4}, // 连衣裙
{misort: 370, viewNum: 4}, // 半身裙
{misort: 408, viewNum: 4} // 袜子
// {misort: 366, viewNum: 4}, // T恤
// {misort: 367, viewNum: 4}, // 衬衫
// {misort: 451, viewNum: 4}, // POLO
// {misort: 371, viewNum: 4}, // 连衣裙
// {misort: 370, viewNum: 4}, // 半身裙
// {misort: 372, viewNum: 4}, // 短裤
// {misort: 382, viewNum: 4}, // 凉鞋/拖鞋
// {misort: 429, viewNum: 4}, // 太阳镜/眼镜
... ... @@ -112,21 +127,19 @@ const sortMap = {
// {misort: 414, viewNum: 4}, // 帽子
// {misort: 380, viewNum: 4}, // 泳衣
// {misort: 419, viewNum: 4}, // 配饰
// {misort: 417, viewNum: 4} // 套装
],
lifestyle: [
{misort: 103, viewNum: 5}, // 数码3c
{sort: 171, viewNum: 5}, // 耳机
{misort: 59, viewNum: 5}, // 手表
{sort: 267, viewNum: 5}, // 杯子
{sort: 171, viewNum: 5}, // 耳机
{misort: 103, viewNum: 5}, // 数码3C
{misort: 266, viewNum: 5}, // 居家
{misort: 61, viewNum: 5}, // 太阳镜/眼睛
{misort: 266, viewNum: 5}, // 雨伞
{sort: 267, viewNum: 5}, // 杯子/水壶
{misort: 259, viewNum: 5}, // 美妆
{misort: 280, viewNum: 5}, // 玩具娱乐
{misort: 101, viewNum: 5} // 文具
// {sort: 313, viewNum: 5}, // 手机/ipad壳套
// {misort: 103, viewNum: 5}, // 数码配件
// {sort: 185, viewNum: 5}, // 相机
// {sort: 271, viewNum: 5} // 靠枕/靠垫/抱枕
]
... ...
... ... @@ -121,6 +121,7 @@
<span id="brand-multi" class="multi-select">多选 +</span>
{{/if}}
</div>
<div data-role="all-brand"></div>
</div>
</div>
{{/ brand}}
... ...
... ... @@ -48,7 +48,7 @@
<div class="good-detail-text {{#for_stu}} stu-good-detail {{/for_stu}}">
<a href="{{url}}" target="_blank">{{{product_name}}}</a>
<p class="brand">
<a href="{{brand_url}}">{{brand_name}}</a>
<a href="{{brandUrl}}">{{brand_name}}</a>
</p>
<p class="price {{#if vip}}vip-center{{/if}}">
{{# market_price}}
... ...
... ... @@ -119,7 +119,7 @@
<ul class="left-list">
{{#each list}}
<li>
<a target="_blank" href="{{url}}"><img src="{{img}}" alt="{{title}}" /></a>
<a target="_blank" href="{{url}}"><img src="{{img}}" alt="{{title}}" width="100%" /></a>
</li>
{{/each}}
</ul>
... ...
{
"name": "yohobuy-node",
"version": "5.0.11",
"version": "5.0.12",
"private": true,
"description": "A New Yohobuy Project With Express",
"repository": {
... ...
... ... @@ -159,15 +159,18 @@ function checkMoreBrands(callback) {
var brandsHtml;
var params = (location.search || '').substr(1);
if (!moreBrandLoaded) {
if(moreBrandLoaded === 'loading') {
return;
} else if (!moreBrandLoaded) {
moreBrandLoaded = 'loading';
$.getJSON(url, params, function(jsonData) {
if (jsonData.code === 200) {
if (jsonData.data) {
brandsHtml = Handlebars.compile($('#yo-brands-tpl').html() || '');
$filterBrands.find('.attr-content').append(brandsHtml(jsonData.data));
$filterBrands.find('.attr-content [data-role=all-brand]').html(brandsHtml(jsonData.data));
}
moreBrandLoaded = true;
... ...