Authored by liangxs

新品上架楼层

... ... @@ -33,6 +33,7 @@ app.locals.version = pkg.version;
// 指定libray目录
global.library = path.resolve('./library');
global.middleware = path.resolve('./doraemon/middleware');
app.set('view engine', '.hbs');
... ...
... ... @@ -6,6 +6,7 @@
'use strict';
const _ = require('lodash');
const channelModel = require('../models/index');
... ... @@ -22,12 +23,30 @@ exports.getbrandFloorDataAjax = (req, res) => {
};
exports.getNewArrival = (req, res) => {
channelModel.getNewArrival().then(data => {
let result = {
code: 200,
goods: data
};
let reqBody = req.body,
pageIndex = reqBody.pageIndex,
pageCount = reqBody.pageCount,
channel = reqBody.type,
goods = [],
result = {};
if (pageIndex < 0) {
pageIndex = 0;
}
if (pageCount < 0 || pageCount > 50) {
pageCount = 20;
}
channelModel.getNewArrival(channel).then(data => {
goods = _.slice(data, pageIndex, pageIndex + pageCount);
if (goods.length !== 0) {
result = {
code: 200,
goods: goods
};
}
res.send(result);
});
};
... ...
... ... @@ -11,6 +11,7 @@ const ServiceAPI = require(`${global.library}/api`).ServiceAPI;
const SearchAPI = require(`${global.library}/api`).SearchAPI;
const sign = require(`${global.library}/sign`);
const helpers = require(`${global.library}/helpers`);
const images = require(`${global.middleware}/images`);
const serviceApi = new ServiceAPI();
... ... @@ -42,6 +43,30 @@ const channelMap = {
}
};
const sortList = [
{sort: 147, viewNum: 5}, // 休闲运动鞋
{sort: 129, viewNum: 5}, // 休闲裤
{sort: 152, viewNum: 5}, // 双肩包
{misort: 11, viewNum: 5}, // T恤
{sort: 115, viewNum: 5}, // 衬衫
{sort: 130, viewNum: 5}, // 牛仔裤
{misort: 60, viewNum: 5}, // 帽子
{sort: 124, viewNum: 5}, // 夹克
{sort: 119, viewNum: 5}, // 卫衣
{sort: 162, viewNum: 5}, // 手表
{sort: 148, viewNum: 5}, // 靴子
{misort: 65, viewNum: 5}, // 首饰
{sort: 151, viewNum: 5}, // 时装鞋
{misort: 61, viewNum: 5}, // 太阳镜
{misort: 39, viewNum: 5}, // 袜子
{sort: 346, viewNum: 5}, // 运动裤
{sort: 131, viewNum: 5}, // 短裤
{misort: 66, viewNum: 5}, // 配饰
{misort: 309, viewNum: 5}, // 内裤
{misort: 30, viewNum: 5}, // 打底裤/紧身裤
{sort: 342, viewNum: 5} // 邮差包
];
// 构建url
const httpBuildQuery = data => {
return searchApi.get('/search.json', data);
... ... @@ -96,9 +121,20 @@ const formatProduct = (productData, showTags, showNew, showSale, width, height,
productData.market_price = false;
}
// 设置默认图片
_.forEach(productData.goods_list, item => {
if (item.is_default === 'Y') {
productData.default_images = item.images_url;
}
});
if (!productData.default_images) {
productData.default_images = productData.goods_list[0].images_url;
}
result.id = productData.product_skn;
result.product_id = productData.product_id;
result.thumb = 'http://img10.static.yhbimg.com/goodsimg/2016/05/23/06/0145382aaf7f6b2bcb9f73bcc26fc14228.jpg?imageView/2/w/280/h/373';
result.thumb = images.getImageUrl(productData.default_images, width, height);
result.name = productData.product_name;
result.price = !productData.market_price ? false : productData.market_price;
result.salePrice = productData.sales_price;
... ... @@ -419,42 +455,18 @@ const getNewGoodsFloorData = args => {
* @return array
*/
exports.getNewArrival = channel => {
const sortList = [
{sort: 147, viewNum: 5}, // 休闲运动鞋
{sort: 129, viewNum: 5}, // 休闲裤
{sort: 152, viewNum: 5}, // 双肩包
{misort: 11, viewNum: 5}, // T恤
{sort: 115, viewNum: 5}, // 衬衫
{sort: 130, viewNum: 5}, // 牛仔裤
{misort: 60, viewNum: 5}, // 帽子
{sort: 124, viewNum: 5}, // 夹克
{sort: 119, viewNum: 5}, // 卫衣
{sort: 162, viewNum: 5}, // 手表
{sort: 148, viewNum: 5}, // 靴子
{misort: 65, viewNum: 5}, // 首饰
{sort: 151, viewNum: 5}, // 时装鞋
{misort: 61, viewNum: 5}, // 太阳镜
{misort: 39, viewNum: 5}, // 袜子
{sort: 346, viewNum: 5}, // 运动裤
{sort: 131, viewNum: 5}, // 短裤
{misort: 66, viewNum: 5}, // 配饰
{misort: 309, viewNum: 5}, // 内裤
{misort: 30, viewNum: 5}, // 打底裤/紧身裤
{sort: 342, viewNum: 5} // 邮差包
];
// 一级缓存
let rel = [];
// 接口
let params = {
// 'shelve_time' : new Date().getTime()+','+d.getTime(),
order: 'shelve_time:desc',
status: 1,
sales: 'Y',
attribute_not: 2,
stocknumber: 3
};
let rel = [],
today = new Date(),
todayMil = today.getTime().toString().substr(0, 10),
startDayMil = (today.setMonth(today.getMonth() - 5)).toString().substr(0, 10),
params = {
order: 'shelve_time:desc',
status: 1,
sales: 'Y',
attribute_not: 2,
stocknumber: 3,
shelve_time: `${startDayMil},${todayMil}`
};
// 最新上架参数(男首频道:gender=1,3 女首频道gender=2,4)
if (channel === 'boys') {
... ... @@ -490,8 +502,8 @@ exports.getNewArrival = channel => {
const requestContent = type => {
let data = sign.apiSign({
/* eslint-disable */
client_type: 'web',
/* eslint-disable */
client_type: 'web',
/* eslint-enable */
content_code: channelMap[type || 'boys'].code,
gender: channelMap[type || 'boys'].gender,
... ...
/**
* 登录判断
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2016/4/25
*/
'use strict';
const _ = require('lodash');
const // domain = '.static.yhbimg.com',
defaultImage = '/2015/08/25/02/01dd632a6e07bfef457ce4beda21dd6413.png',
qiniuDomain = 'yhfair.qiniudn.com',
domainList = {
'01': ['img10.static.yhbimg.com', 'img11.static.yhbimg.com'],
'02': ['img12.static.yhbimg.com', 'img13.static.yhbimg.com'],
'yhb-head': 'head.static.yhbimg.com'
};
const regexp = /(?:\{)([a-zA-z][^\s\}]+)(?:\})/g;
const myReplace = (tem, data) => {
return tem.replace(regexp, function(fullMatch, capture) {
if (data[capture]) {
return data[capture];
} else {
return fullMatch;
}
});
};
const makeBaseUrl = (domain, key) =>{
encodeURIComponent(key).replace('%2F', '/');
return `http://${domain}/${key}`;
};
const makeTemplateRequest = url => {
let ops = ['{mode}', 'w/{width}', 'h/{height}'];
if (ops.length === 0) {
return url;
}
return url + '?imageView/' + ops.join('/');
};
const getImgTemplateUrl = (fileName, mode, domain) =>{
// 默认值
if (!mode) {
mode = 1;
}
if (!domain) {
domain = null;
}
if (domain === null) {
domain = qiniuDomain;
}
let baseUrl = makeBaseUrl(domain, fileName);
return makeTemplateRequest(baseUrl);
};
const getDomain = (bucket, fileName) => {
let domain = '';
if (bucket in domainList) {
domain = domainList.bucket;
} else {
let node = fileName.substr(15, 2);
if (node in domainList) {
let urlList = domainList[node];
let nodeNum = _.random(urlList.length - 1);
domain = urlList[nodeNum];
}
}
return domain;
};
const url = (fileName, bucket, mode) =>{
// 默认值
if (!mode) {
mode = 1;
}
if (!bucket) {
bucket = 'yhfair';
}
let domain = getDomain(bucket, fileName);
return getImgTemplateUrl(bucket + fileName, mode, domain);
};
const template = (fileName, bucket, mode) => {
// 默认值
if (!mode) {
mode = 1;
}
if (!bucket) {
bucket = 'yhfair';
}
return url(fileName, bucket, mode);
};
exports.getImageUrl = (fileName, width, height, mode, bucket) => {
// 默认值
if (!mode) {
mode = 2;
}
if (!bucket) {
bucket = 'goodsimg';
}
if (typeof(fileName) !== 'string') {
return template(defaultImage, bucket, mode);
}
if (fileName.indexOf('http://') !== 0) {
fileName = template(fileName, bucket, mode);
}
return myReplace(fileName, {width: width, height: height, mode: mode});
};
... ...