...
|
...
|
@@ -2,15 +2,13 @@ |
|
|
* @Author: Targaryen
|
|
|
* @Date: 2016-05-25 18:16:59
|
|
|
* @Last Modified by: Targaryen
|
|
|
* @Last Modified time: 2016-06-08 19:35:20
|
|
|
* @Last Modified time: 2016-06-17 16:43:38
|
|
|
*/
|
|
|
|
|
|
'use strict';
|
|
|
const library = '../../../library';
|
|
|
const helpers = require(`${library}/helpers`);
|
|
|
const _ = require('lodash');
|
|
|
|
|
|
// const aMinute = 60000;
|
|
|
const anHour = 3600000;
|
|
|
const aDay = anHour * 24;
|
|
|
const timeFormat = {
|
...
|
...
|
@@ -50,34 +48,6 @@ const processTime = (time) => { |
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 折扣专场专题详情过期时间处理
|
|
|
* @param {[string]} time
|
|
|
* @return {[boject]}
|
|
|
*/
|
|
|
// const processTimes = (time) => {
|
|
|
// let data = {};
|
|
|
// let type = '';
|
|
|
//
|
|
|
// if (time > aDay) {
|
|
|
// type = 'dhms';
|
|
|
// } else {
|
|
|
// if (time > anHour) {
|
|
|
// type = 'hms';
|
|
|
// } else {
|
|
|
// if (time > aMinute) {
|
|
|
// type = 'ms';
|
|
|
// } else {
|
|
|
// type = 's';
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// data.time = helpers.dateDiffFormat(timeFormat[type], time, 'ms');
|
|
|
//
|
|
|
// return data.time;
|
|
|
// };
|
|
|
|
|
|
/**
|
|
|
* 折扣文本切割
|
|
|
* @param text 要切割的文本
|
|
|
* @returns {{discount: *, discountText: *}}
|
...
|
...
|
@@ -195,31 +165,56 @@ const handleCheckedData = (params, origin, param) => { |
|
|
* @param origin
|
|
|
* @returns {{}}
|
|
|
*/
|
|
|
// const handleBrandCheckedData = (params, origin) => {
|
|
|
// let dest = {};
|
|
|
//
|
|
|
// let brands = _.split(params.brand, ',');
|
|
|
//
|
|
|
// if (!_.isEmpty(origin)) {
|
|
|
// _.forEach(origin, (value) => {
|
|
|
// if (!_.isEmpty(_.find(brands, o => {
|
|
|
// return o === value.id;
|
|
|
// }))) {
|
|
|
// let checked = {};
|
|
|
//
|
|
|
// checked.name = value.name;
|
|
|
//
|
|
|
// let tempParam = {};
|
|
|
//
|
|
|
// tempParam.brand = '';
|
|
|
// checked.href = handleFilterUrl(params, tempParam);
|
|
|
//
|
|
|
// dest.push(checked);
|
|
|
// }
|
|
|
// });
|
|
|
// }
|
|
|
// return dest;
|
|
|
// };
|
|
|
const handleBrandCheckedData = (params, origin) => {
|
|
|
let dest = [];
|
|
|
|
|
|
// 分拆品牌参数
|
|
|
let brands = _.split(params.brand, ',');
|
|
|
let intBrands = [];
|
|
|
|
|
|
_.forEach(brands, value => {
|
|
|
intBrands.push(parseInt(value, 10));
|
|
|
});
|
|
|
|
|
|
// 遍历品牌数据,如果在参数中,那么加 checked,将此数据加入到 checked 数组中
|
|
|
if (!_.isEmpty(origin)) {
|
|
|
_.forEach(origin, (value) => {
|
|
|
if (typeof _.find(intBrands, o => {
|
|
|
return _.isEqual(o, value.id);
|
|
|
}) !== 'undefined') {
|
|
|
|
|
|
let checked = {}; // push 到已选择数组
|
|
|
|
|
|
checked.name = value.name;
|
|
|
|
|
|
// 为了不污染原始数据
|
|
|
let tempIntBrands = _.cloneDeep(intBrands);
|
|
|
|
|
|
// 去掉当前选项
|
|
|
_.remove(tempIntBrands, n => {
|
|
|
return n === value.id;
|
|
|
});
|
|
|
|
|
|
// 拼接参数
|
|
|
let brand = '';
|
|
|
|
|
|
_.forEach(tempIntBrands, subValue => {
|
|
|
brand += subValue + ',';
|
|
|
});
|
|
|
|
|
|
// 清除参数,保留没有去掉的参数
|
|
|
let tempParam = {
|
|
|
brand: brand
|
|
|
};
|
|
|
|
|
|
checked.href = handleFilterUrl(params, tempParam);
|
|
|
|
|
|
dest.push(checked);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
return dest;
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 处理断码区尺码筛选数据
|
...
|
...
|
@@ -407,8 +402,10 @@ exports.handleSaleFilterData = (origin, params) => { |
|
|
handleCheckedData(params, dest.gender, 'gender'));
|
|
|
|
|
|
// 处理品牌筛选数据
|
|
|
// dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions,
|
|
|
// handleCheckedData(params, dest.brand.brandsShow, 'brand'));
|
|
|
dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions,
|
|
|
handleCheckedData(params, dest.brand.brandsShow, 'brand'));
|
|
|
handleBrandCheckedData(params, dest.brand.brandsShow));
|
|
|
|
|
|
// 处理价格筛选数据
|
|
|
dest.checkedConditions.conditions = _.union(dest.checkedConditions.conditions,
|
...
|
...
|
@@ -418,199 +415,6 @@ exports.handleSaleFilterData = (origin, params) => { |
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 处理 opts 排序数据
|
|
|
* @param params
|
|
|
* @param total
|
|
|
* @param extra 什么都可以传进来,多个参数传Object
|
|
|
* @returns {{}}
|
|
|
*/
|
|
|
exports.handleSaleOptsData = (params, total, extra) => {
|
|
|
var dest = {};
|
|
|
|
|
|
dest.sortType = [];
|
|
|
|
|
|
// 用来标记是否是折扣专场,折扣专场只需要前三个排序参数
|
|
|
let count = (extra === 'discont') ? 3 : 4;
|
|
|
|
|
|
for (let i = 0; i < count; i++) {
|
|
|
let opt = {};
|
|
|
|
|
|
switch (i) {
|
|
|
case 0:
|
|
|
opt.href = handleFilterUrl(params, {order: 's_t_desc'});
|
|
|
if (extra === 'discont') { // 如果是折扣专场
|
|
|
opt.name = '全部';
|
|
|
if (_.isEmpty(params.order) || params.order === 's_t_desc') {
|
|
|
opt.active = true;
|
|
|
} else {
|
|
|
opt.active = false;
|
|
|
}
|
|
|
} else {
|
|
|
opt.name = '最新';
|
|
|
opt.hasSortOrient = true;
|
|
|
if (_.isEmpty(params.order) || params.order === 's_t_desc') {
|
|
|
opt.active = true;
|
|
|
} else {
|
|
|
opt.active = false;
|
|
|
}
|
|
|
opt.desc = true;
|
|
|
}
|
|
|
break;
|
|
|
case 1:
|
|
|
if (params.order !== 's_p_desc' && params.order !== 's_p_asc') {
|
|
|
opt.href = handleFilterUrl(params, {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.desc = false;
|
|
|
} else {
|
|
|
opt.href = handleFilterUrl(params, {order: 's_p_desc'});
|
|
|
opt.desc = true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
opt.name = '价格';
|
|
|
break;
|
|
|
case 2:
|
|
|
if (params.order !== 'p_d_desc' && params.order !== 'p_d_asc') {
|
|
|
opt.href = handleFilterUrl(params, {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.desc = false;
|
|
|
} else {
|
|
|
opt.href = handleFilterUrl(params, {order: 'p_d_desc'});
|
|
|
opt.desc = true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
opt.name = '折扣';
|
|
|
break;
|
|
|
case 3:
|
|
|
if (params.order !== 's_n_desc' && params.order !== 's_n_asc') {
|
|
|
opt.href = handleFilterUrl(params, {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.desc = false;
|
|
|
} else {
|
|
|
opt.href = handleFilterUrl(params, {order: 's_n_desc'});
|
|
|
opt.desc = true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
opt.name = '销量';
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
dest.sortType.push(opt);
|
|
|
}
|
|
|
|
|
|
// 上下翻页数据处理
|
|
|
dest.pageCounts = [{
|
|
|
href: handleFilterUrl(params, {limit: 200}),
|
|
|
count: 200
|
|
|
}, {
|
|
|
href: handleFilterUrl(params, {limit: 100}),
|
|
|
count: 100
|
|
|
}, {
|
|
|
href: handleFilterUrl(params, {limit: 60}),
|
|
|
count: 60
|
|
|
}];
|
|
|
|
|
|
dest.curPage = _.isEmpty(params.page) ? 1 : params.page; // 当前页码数
|
|
|
|
|
|
// 每页商品数量
|
|
|
dest.countPerPage = _.isEmpty(params.limit) ? 60 : params.limit;
|
|
|
|
|
|
// 全部页码数量
|
|
|
dest.pageCount = parseInt(total / (_.isEmpty(params.limit) ? 60 : params.limit), 10) + 1;
|
|
|
|
|
|
// 每页多少商品
|
|
|
let paramsLimit = parseInt((_.isEmpty(params.limit) ? 60 : params.limit), 10);
|
|
|
|
|
|
// 上一页下一页
|
|
|
let preHref = (!_.isEmpty(params.page) && parseInt(params.page, 10) > 1) ?
|
|
|
parseInt(params.page, 10) - 1 : 1;
|
|
|
let nextHref = (!_.isEmpty(params.page)) ? parseInt(params.page, 10) + 1 : 2;
|
|
|
|
|
|
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});
|
|
|
} else if (dest.pageCount > 1 && (parseInt(params.page, 10) === 1)) {
|
|
|
dest.nextHref = handleFilterUrl(params, {page: nextHref});
|
|
|
} else if (dest.pageCount > 1 && (parseInt(params.page, 10) === dest.pageCount)) {
|
|
|
dest.preHref = handleFilterUrl(params, {page: preHref});
|
|
|
}
|
|
|
|
|
|
// 商品开始结束数
|
|
|
dest.start = (!_.isEmpty(params.page) ? (params.page - 1) : 0) * paramsLimit + 1;
|
|
|
dest.end = (dest.pageCount === parseInt(params.page, 10)) ?
|
|
|
total : parseInt(dest.start, 10) + paramsLimit - 1;
|
|
|
|
|
|
return dest;
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 处理页面左侧分类筛选数据
|
|
|
* @param origin 分类原始数据,一般是接口返回数据中的 group_sort 字段
|
|
|
* @param params 当前 URL 中已有的参数
|
|
|
* @param extra 可以任意传值用来处理特殊情况
|
|
|
* @returns {{}}
|
|
|
*/
|
|
|
exports.handleSaleSortData = (origin, params, extra) => {
|
|
|
var leftContent = {};
|
|
|
|
|
|
leftContent.allSort = {};
|
|
|
leftContent.allSort.list = [];
|
|
|
|
|
|
leftContent.allSort.all = {
|
|
|
name: '全部品类',
|
|
|
href: handleFilterUrl(params),
|
|
|
num: extra
|
|
|
};
|
|
|
|
|
|
_.forEach(origin, function(value) {
|
|
|
|
|
|
let category = {};
|
|
|
|
|
|
category.name = value.category_name;
|
|
|
category.num = value.node_count;
|
|
|
category.childList = [];
|
|
|
category.href = handleFilterUrl(params, {sort: value.relation_parameter.sort});
|
|
|
category.active = false;
|
|
|
_.forEach(value.sub, function(subValue) {
|
|
|
category.childList.push({
|
|
|
name: subValue.category_name,
|
|
|
num: subValue.node_count,
|
|
|
href: handleFilterUrl(params, {sort: subValue.relation_parameter.sort}),
|
|
|
childActive: (params.sort === subValue.relation_parameter.sort) ? true : false
|
|
|
});
|
|
|
if (params.sort === subValue.relation_parameter.sort) {
|
|
|
category.active = true;
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
leftContent.allSort.list.push(category);
|
|
|
});
|
|
|
|
|
|
return leftContent;
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 处理折扣专区活动数据
|
|
|
* @param origin 原始数据
|
|
|
* @param channel 频道 boys girls kids lifestyle
|
...
|
...
|
@@ -634,7 +438,7 @@ exports.handleSaleActivityData = (origin, channel) => { |
|
|
|
|
|
if (key < 3) {
|
|
|
dest.big.push(activity);
|
|
|
} else if (key < 15) {
|
|
|
} else if (key < 27) {
|
|
|
dest.normal.push(activity);
|
|
|
}
|
|
|
});
|
...
|
...
|
@@ -781,86 +585,6 @@ exports.handleSaleCategoryData = (origin, saleType, channel, breakingSizeSort) = |
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 处理分页数据
|
|
|
* @param total 商品总数目
|
|
|
* @param params 当前 URL 中已有的参数
|
|
|
* @returns {string}
|
|
|
*/
|
|
|
exports.handleSalePagerData = (total, params) => {
|
|
|
|
|
|
|
|
|
// 当前页
|
|
|
let currentPage = parseInt((_.isEmpty(params.page) ? 1 : params.page), 10);
|
|
|
let perPageCount = parseInt((_.isEmpty(params.limit) ? 60 : params.limit), 10);
|
|
|
let totalPage = parseInt(total / perPageCount, 10) + 1;
|
|
|
|
|
|
let dest = '<a href ="' + handleFilterUrl(params, {page: (currentPage)}) +
|
|
|
'" class="cur">' + currentPage + '</a>';
|
|
|
|
|
|
// 先处理大多数情况
|
|
|
if ((currentPage > 2) && (currentPage < (parseInt(total, 10) / perPageCount) - 1)) {
|
|
|
|
|
|
for (let i = 1; i < 3; i++) {
|
|
|
dest = '<a href ="' + handleFilterUrl(params, {page: (currentPage - i)}) + '">' +
|
|
|
(currentPage - i) + '</a> ' + dest + ' <a href ="' +
|
|
|
handleFilterUrl(params, {page: (currentPage + i)}) +
|
|
|
'">' + (currentPage + i) + '</a>';
|
|
|
}
|
|
|
|
|
|
// 处理页码小于2的情况
|
|
|
} else if (currentPage <= 2) {
|
|
|
for (let i = currentPage - 1; i > 0; i--) {
|
|
|
dest = '<a href ="' + handleFilterUrl(params, {page: i}) +
|
|
|
'">' + i + '</a>' + dest;
|
|
|
}
|
|
|
|
|
|
for (let i = currentPage + 1; i < (totalPage < 6 ? totalPage : 6); i++) {
|
|
|
dest += '<a href ="' + handleFilterUrl(params, {page: i}) +
|
|
|
'">' + i + '</a>';
|
|
|
}
|
|
|
|
|
|
// 处理页码大于最大页-2的情况
|
|
|
} else if (currentPage > totalPage - 2) {
|
|
|
for (let i = currentPage + 1; i < totalPage + 1; i++) {
|
|
|
dest += '<a href ="' + handleFilterUrl(params, {page: i}) +
|
|
|
'">' + i + '</a>';
|
|
|
}
|
|
|
|
|
|
for (let i = currentPage - 1; i > (currentPage - 5 > 1 ? currentPage - 5 : 1); i--) {
|
|
|
dest = '<a href ="' + handleFilterUrl(params, {page: i}) +
|
|
|
'">' + i + '</a>' + dest;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 处理后省略号的情况
|
|
|
if ((totalPage > 5) && (currentPage < (totalPage - 2))) {
|
|
|
|
|
|
dest += ' ... <a href ="' + handleFilterUrl(params, {page: totalPage}) +
|
|
|
'">' + totalPage + '</a>';
|
|
|
|
|
|
}
|
|
|
|
|
|
// 处理前省略号的情况
|
|
|
if (currentPage > 3) {
|
|
|
dest = '<a href ="' + handleFilterUrl(params, {page: 1}) +
|
|
|
'">1</a> ... ' + dest;
|
|
|
}
|
|
|
|
|
|
// 处理上一页下一页
|
|
|
if (currentPage !== 1) {
|
|
|
dest = '<a href="' + handleFilterUrl(params, {page: currentPage - 1}) +
|
|
|
'"><span class="iconfont">上一页</span></a>' + dest;
|
|
|
}
|
|
|
|
|
|
if (currentPage !== totalPage) {
|
|
|
dest += '<a href="' + handleFilterUrl(params, {page: currentPage + 1}) +
|
|
|
'"><span class="iconfont">下一页</span></a>';
|
|
|
}
|
|
|
|
|
|
return dest;
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 处理断码区尺码数据,输出整合后的筛选条件
|
|
|
* @param origin
|
|
|
*/
|
...
|
...
|
|