...
|
...
|
@@ -10,7 +10,10 @@ |
|
|
'use strict';
|
|
|
const _ = require('lodash');
|
|
|
const helpers = global.yoho.helpers;
|
|
|
const queryString = require('querystring');
|
|
|
|
|
|
const parameter = require(`${global.utils}/parameter`);
|
|
|
|
|
|
const handleStaticFilterUrl = parameter.fullParamToMinPath;
|
|
|
|
|
|
|
|
|
/**
|
...
|
...
|
@@ -206,7 +209,7 @@ const handleBrandCheckedData = (params, origin) => { |
|
|
* @param extra 什么都可以传进来,多个参数传Object
|
|
|
* @returns {{}}
|
|
|
*/
|
|
|
exports.handleSaleOptsData = (params, total, extra) => {
|
|
|
exports.handleSaleOptsData = (params, total, extra, baseUrl) => {
|
|
|
let dest = {
|
|
|
sortType: []
|
|
|
};
|
...
|
...
|
@@ -217,7 +220,7 @@ exports.handleSaleOptsData = (params, total, extra) => { |
|
|
if (extra === 'default') {
|
|
|
let defaultOpt = {};
|
|
|
|
|
|
defaultOpt.href = handleFilterUrl(params, {order: ''});
|
|
|
defaultOpt.href = handleStaticFilterUrl(baseUrl, params, {}, {order: true});
|
|
|
defaultOpt.name = '默认';
|
|
|
defaultOpt.hasSortOrient = true;
|
|
|
if (_.isEmpty(params.order)) {
|
...
|
...
|
@@ -229,12 +232,14 @@ exports.handleSaleOptsData = (params, total, extra) => { |
|
|
dest.sortType.push(defaultOpt);
|
|
|
}
|
|
|
|
|
|
const orderHref = handleStaticFilterUrl(baseUrl, params, {order: '{order}'});
|
|
|
|
|
|
for (let i = 0; i < count; i++) {
|
|
|
let opt = {};
|
|
|
|
|
|
switch (i) {
|
|
|
case 0:
|
|
|
opt.href = handleFilterUrl(params, {order: 's_t_desc'});
|
|
|
opt.href = orderHref.replace('{order}', 's_t_desc');
|
|
|
if (extra === 'discont') { // 如果是折扣专场
|
|
|
opt.name = '全部';
|
|
|
if (_.isEmpty(params.order) || params.order === 's_t_desc') {
|
...
|
...
|
@@ -254,16 +259,16 @@ exports.handleSaleOptsData = (params, total, extra) => { |
|
|
break;
|
|
|
case 1:
|
|
|
if (params.order !== 's_p_desc' && params.order !== 's_p_asc') {
|
|
|
opt.href = handleFilterUrl(params, {order: 's_p_desc'});
|
|
|
opt.href = orderHref.replace('{order}', 's_p_desc');
|
|
|
opt.hasSortOrient = true;
|
|
|
} else {
|
|
|
opt.hasSortOrient = true;
|
|
|
opt.active = true;
|
|
|
if (params.order === 's_p_desc') {
|
|
|
opt.href = handleFilterUrl(params, {order: 's_p_asc'});
|
|
|
opt.href = orderHref.replace('{order}', 's_p_asc');
|
|
|
opt.desc = false;
|
|
|
} else {
|
|
|
opt.href = handleFilterUrl(params, {order: 's_p_desc'});
|
|
|
opt.href = orderHref.replace('{order}', 's_p_desc');
|
|
|
opt.desc = true;
|
|
|
}
|
|
|
}
|
...
|
...
|
@@ -272,16 +277,16 @@ exports.handleSaleOptsData = (params, total, extra) => { |
|
|
break;
|
|
|
case 2:
|
|
|
if (params.order !== 'p_d_desc' && params.order !== 'p_d_asc') {
|
|
|
opt.href = handleFilterUrl(params, {order: 'p_d_desc'});
|
|
|
opt.href = orderHref.replace('{order}', 'p_d_desc');
|
|
|
opt.hasSortOrient = true;
|
|
|
} else {
|
|
|
opt.hasSortOrient = true;
|
|
|
opt.active = true;
|
|
|
if (params.order === 'p_d_desc') {
|
|
|
opt.href = handleFilterUrl(params, {order: 'p_d_asc'});
|
|
|
opt.href = orderHref.replace('{order}', 'p_d_asc');
|
|
|
opt.desc = false;
|
|
|
} else {
|
|
|
opt.href = handleFilterUrl(params, {order: 'p_d_desc'});
|
|
|
opt.href = orderHref.replace('{order}', 'p_d_desc');
|
|
|
opt.desc = true;
|
|
|
}
|
|
|
}
|
...
|
...
|
@@ -290,16 +295,16 @@ exports.handleSaleOptsData = (params, total, extra) => { |
|
|
break;
|
|
|
case 3:
|
|
|
if (params.order !== 's_n_desc' && params.order !== 's_n_asc') {
|
|
|
opt.href = handleFilterUrl(params, {order: 's_n_desc'});
|
|
|
opt.href = orderHref.replace('{order}', 's_n_desc');
|
|
|
opt.hasSortOrient = true;
|
|
|
} else {
|
|
|
opt.hasSortOrient = true;
|
|
|
opt.active = true;
|
|
|
if (params.order === 's_n_desc') {
|
|
|
opt.href = handleFilterUrl(params, {order: 's_n_asc'});
|
|
|
opt.href = orderHref.replace('{order}', 's_n_asc');
|
|
|
opt.desc = false;
|
|
|
} else {
|
|
|
opt.href = handleFilterUrl(params, {order: 's_n_desc'});
|
|
|
opt.href = orderHref.replace('{order}', 's_n_desc');
|
|
|
opt.desc = true;
|
|
|
}
|
|
|
}
|
...
|
...
|
@@ -313,15 +318,17 @@ exports.handleSaleOptsData = (params, total, extra) => { |
|
|
dest.sortType.push(opt);
|
|
|
}
|
|
|
|
|
|
const limitHref = handleStaticFilterUrl(baseUrl, params, {limit: '{limit}'});
|
|
|
|
|
|
// 上下翻页数据处理
|
|
|
dest.pageCounts = [{
|
|
|
href: handleFilterUrl(params, {limit: 200}),
|
|
|
href: limitHref.replace('{limit}', 200),
|
|
|
count: 200
|
|
|
}, {
|
|
|
href: handleFilterUrl(params, {limit: 100}),
|
|
|
href: limitHref.replace('{limit}', 100),
|
|
|
count: 100
|
|
|
}, {
|
|
|
href: handleFilterUrl(params, {limit: 60}),
|
|
|
href: limitHref.replace('{limit}', 60),
|
|
|
count: 60
|
|
|
}];
|
|
|
|
...
|
...
|
@@ -341,14 +348,16 @@ exports.handleSaleOptsData = (params, total, extra) => { |
|
|
parseInt(params.page, 10) - 1 : 1;
|
|
|
let nextHref = (!_.isEmpty(params.page)) ? parseInt(params.page, 10) + 1 : 2;
|
|
|
|
|
|
const pageHref = handleStaticFilterUrl(baseUrl, params, {page: '{page}'});
|
|
|
|
|
|
if (dest.pageCount > 1 && (parseInt(params.page, 10) !== 1) &&
|
|
|
(parseInt(params.page, 10) !== dest.pageCount)) {
|
|
|
dest.preHref = handleFilterUrl(params, {page: preHref});
|
|
|
dest.nextHref = handleFilterUrl(params, {page: nextHref});
|
|
|
dest.preHref = pageHref.replace('{page}', preHref);
|
|
|
dest.nextHref = pageHref.replace('{page}', nextHref);
|
|
|
} else if (dest.pageCount > 1 && (parseInt(params.page, 10) === 1)) {
|
|
|
dest.nextHref = handleFilterUrl(params, {page: nextHref});
|
|
|
dest.nextHref = pageHref.replace('{page}', nextHref);
|
|
|
} else if (dest.pageCount > 1 && (parseInt(params.page, 10) === dest.pageCount)) {
|
|
|
dest.preHref = handleFilterUrl(params, {page: preHref});
|
|
|
dest.preHref = pageHref.replace('{page}', preHref);
|
|
|
}
|
|
|
|
|
|
// 全部商品数
|
...
|
...
|
@@ -373,7 +382,7 @@ exports.handleSaleOptsData = (params, total, extra) => { |
|
|
* @param extra 可以任意传值用来处理特殊情况
|
|
|
* @returns {{}}
|
|
|
*/
|
|
|
exports.handleSaleSortData = (origin, params, extra) => {
|
|
|
exports.handleSaleSortData = (origin, params, extra, baseUrl) => {
|
|
|
let leftContent = {};
|
|
|
|
|
|
leftContent.allSort = {};
|
...
|
...
|
@@ -390,23 +399,24 @@ exports.handleSaleSortData = (origin, params, extra) => { |
|
|
|
|
|
leftContent.allSort.all = {
|
|
|
name: '全部品类',
|
|
|
href: handleFilterUrl(tempParams, {sort: ''}),
|
|
|
href: handleStaticFilterUrl(baseUrl, tempParams, {}, {sort: true}),
|
|
|
active: _.isEmpty(params.sort)
|
|
|
};
|
|
|
} else {
|
|
|
leftContent.allSort.all = {
|
|
|
name: '全部品类',
|
|
|
href: handleFilterUrl(params, {sort: ''})
|
|
|
href: handleStaticFilterUrl(baseUrl, params, {}, {sort: true})
|
|
|
};
|
|
|
}
|
|
|
|
|
|
_.forEach(origin, value => {
|
|
|
const sortHref = handleStaticFilterUrl(baseUrl, params, {sort: '{sort}'});
|
|
|
|
|
|
_.forEach(origin, value => {
|
|
|
let category = {
|
|
|
name: value.category_name,
|
|
|
num: value.node_count,
|
|
|
childList: [],
|
|
|
href: handleFilterUrl(params, {sort: value.relation_parameter.sort}),
|
|
|
href: sortHref.replace('{sort}', value.relation_parameter.sort),
|
|
|
active: params.sort === value.relation_parameter.sort
|
|
|
};
|
|
|
|
...
|
...
|
@@ -414,13 +424,13 @@ exports.handleSaleSortData = (origin, params, extra) => { |
|
|
category.childList.push({
|
|
|
name: subValue.category_name,
|
|
|
num: subValue.node_count,
|
|
|
href: handleFilterUrl(params, {sort: subValue.relation_parameter.sort}),
|
|
|
href: sortHref.replace('{sort}', subValue.relation_parameter.sort),
|
|
|
childActive: params.sort === subValue.relation_parameter.sort
|
|
|
});
|
|
|
|
|
|
if (params.sort === subValue.relation_parameter.sort) {
|
|
|
category.active = true;
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
leftContent.allSort.list.push(category);
|
...
|
...
|
@@ -435,7 +445,7 @@ exports.handleSaleSortData = (origin, params, extra) => { |
|
|
* @param params 当前 URL 中已有的参数,处理选中状态使用
|
|
|
* @returns {{}}
|
|
|
*/
|
|
|
exports.handleSaleFilterData = (origin, params) => {
|
|
|
exports.handleSaleFilterData = (origin, params, baseUrl) => {
|
|
|
let dest = {
|
|
|
brand: {
|
|
|
default: [],
|
...
|
...
|
@@ -482,7 +492,7 @@ exports.handleSaleFilterData = (origin, params) => { |
|
|
checked: (typeof _.find(intBrands, o => {
|
|
|
return _.isEqual(o, value.id);
|
|
|
}) !== 'undefined'),
|
|
|
href: handleFilterUrl(params, {brand: value.id}),
|
|
|
href: handleStaticFilterUrl(baseUrl, params, {brand: value.id}),
|
|
|
name: value.brand_name,
|
|
|
key: value.brand_domain,
|
|
|
id: value.id
|
...
|
...
|
@@ -525,7 +535,7 @@ exports.handleSaleFilterData = (origin, params) => { |
|
|
}
|
|
|
let price = {
|
|
|
checked: params.price === key,
|
|
|
href: handleFilterUrl(params, {price: key}),
|
|
|
href: handleStaticFilterUrl(baseUrl, params, {price: key}),
|
|
|
name: value
|
|
|
};
|
|
|
|
...
|
...
|
@@ -544,7 +554,7 @@ exports.handleSaleFilterData = (origin, params) => { |
|
|
};
|
|
|
dest.checkedConditions.conditions.push({
|
|
|
name: '¥ ' + customPrice[0] + '-' + customPrice[1],
|
|
|
href: handleFilterUrl(params, {price: ''})
|
|
|
href: handleStaticFilterUrl(baseUrl, params, {price: ''})
|
|
|
});
|
|
|
}
|
|
|
}
|
...
|
...
|
@@ -552,11 +562,11 @@ exports.handleSaleFilterData = (origin, params) => { |
|
|
// 处理性别数据
|
|
|
dest.gender = [{
|
|
|
name: 'BOYS',
|
|
|
href: handleFilterUrl(params, {gender: '1,3'}),
|
|
|
href: handleStaticFilterUrl(baseUrl, params, {gender: '1,3'}),
|
|
|
checked: params.gender === '1,3'
|
|
|
}, {
|
|
|
name: 'GIRLS',
|
|
|
href: handleFilterUrl(params, {gender: '2,3'}),
|
|
|
href: handleStaticFilterUrl(baseUrl, params, {gender: '2,3'}),
|
|
|
checked: params.gender === '2,3'
|
|
|
}];
|
|
|
|
...
|
...
|
@@ -582,7 +592,7 @@ exports.handleSaleFilterData = (origin, params) => { |
|
|
_.forEach(origin.size, value => {
|
|
|
dest.size.push({
|
|
|
checked: parseInt(params.size, 10) === parseInt(value.size_id, 10),
|
|
|
href: handleFilterUrl(params, {
|
|
|
href: handleStaticFilterUrl(baseUrl, params, {
|
|
|
size: value.size_id
|
|
|
}),
|
|
|
name: value.size_name
|
...
|
...
|
@@ -591,7 +601,7 @@ exports.handleSaleFilterData = (origin, params) => { |
|
|
} else {
|
|
|
dest.size.push({
|
|
|
checked: parseInt(params.size, 10) === parseInt(origin.size.size_id, 10),
|
|
|
href: handleFilterUrl(params, {
|
|
|
href: handleStaticFilterUrl(baseUrl, params, {
|
|
|
size: origin.size.size_id
|
|
|
}),
|
|
|
name: origin.size.size_name
|
...
|
...
|
@@ -609,7 +619,7 @@ exports.handleSaleFilterData = (origin, params) => { |
|
|
|
|
|
_.forEach(dest.ageLevel, item => {
|
|
|
|
|
|
item.href = handleFilterUrl(params, {age_level: item.id});
|
|
|
item.href = handleStaticFilterUrl(baseUrl, params, {age_level: item.id});
|
|
|
|
|
|
item.checked = params.age_level === item.id;
|
|
|
|
...
|
...
|
@@ -626,7 +636,7 @@ exports.handleSaleFilterData = (origin, params) => { |
|
|
if (params.id) {
|
|
|
remainParams.id = params.id;
|
|
|
}
|
|
|
dest.checkedConditions.clearUrl = '?' + queryString.stringify(remainParams);
|
|
|
dest.checkedConditions.clearUrl = handleStaticFilterUrl(baseUrl, remainParams);
|
|
|
|
|
|
// 处理频道筛选数据
|
|
|
dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions,
|
...
|
...
|
|