...
|
...
|
@@ -21,11 +21,11 @@ const channels = { |
|
|
const _index = (req, res, next) => {
|
|
|
let id = req.query.id,
|
|
|
gender = req.query.gender || req.cookies._Channel && channels[req.cookies._Channel] || 1,
|
|
|
isApp = req.query.app_version || req.query.appVersion || false, //标识是不是APP访问的
|
|
|
isApp = req.query.app_version || req.query.appVersion || false, // 标识是不是APP访问的
|
|
|
parameter = {},
|
|
|
title = '逛',
|
|
|
userAgent = req.get('User-Agent'),
|
|
|
isWeixin = userAgent.includes('MicroMessenger'); //标识是否是微信访问
|
|
|
isWeixin = userAgent.includes('MicroMessenger'); // 标识是否是微信访问
|
|
|
|
|
|
// 判断参数是否有效, 无效会跳转到错误页面
|
|
|
if (!stringProcess.isNumeric(id)) {
|
...
|
...
|
@@ -33,13 +33,6 @@ const _index = (req, res, next) => { |
|
|
return;
|
|
|
}
|
|
|
|
|
|
let data = {
|
|
|
guangDetail: true,// 模板中使用JS的标识
|
|
|
guang: {
|
|
|
id: id
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// WAP上设置头部导航
|
|
|
if (!isApp && !isWeixin) {
|
|
|
parameter = {
|
...
|
...
|
@@ -52,25 +45,30 @@ const _index = (req, res, next) => { |
|
|
|
|
|
// 获取详情内容信息, 异常则跳到错误页面
|
|
|
return infoModel.package(id, isApp).then(detail => {
|
|
|
let data = {};
|
|
|
let data = {
|
|
|
guang: {}
|
|
|
};
|
|
|
|
|
|
if (detail.code !== 400) {
|
|
|
if (!detail.getArticle) {
|
|
|
//TODO 跳转到逛首页
|
|
|
// TODO 跳转到逛首页
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
// 作者信息数据
|
|
|
if (detail.getAuthor.name) {
|
|
|
data.author = {
|
|
|
data.guang.author = {
|
|
|
avatar: detail.getAuthor.avatar.replace('http://', '//'),
|
|
|
name: detail.getAuthor.name,
|
|
|
intro: detail.getAuthor.author_desc
|
|
|
};
|
|
|
|
|
|
// guang双头部的问题 20160601
|
|
|
data.guang.author.url = helpers.https(`${detail.getAuthor.url}&openby:yohobuy={"action":"go.h5","params":{"param":{"id":"${detail.getAuthor.author_id}"},"share":"","id":${detail.getAuthor.author_id},"type":0,"islogin":"N","url":"${helpers.urlFormat('/author/index', {}, 'guang')}"}}`);
|
|
|
}
|
|
|
//guang双头部的问题 20160601
|
|
|
data.author.url = helpers.https(`${detail.getAuthor.url}&openby:yohobuy={"action":"go.h5","params":{"param":{"id":"${detail.getAuthor.author_id}"},"share":"","id":${detail.getAuthor.author_id},"type":0,"islogin":"N","url":"${helpers.urlFormat('/author/index', {}, 'guang')}"}}`)
|
|
|
}
|
|
|
data.detail = {
|
|
|
let guang = data.guang;
|
|
|
|
|
|
guang.detail = {
|
|
|
title: detail.getArticle.article_title,
|
|
|
publishTime: detail.getArticle.publishTime,
|
|
|
pageView: detail.getArticle.pageViews,
|
...
|
...
|
@@ -79,41 +77,42 @@ const _index = (req, res, next) => { |
|
|
let callArticleContent = (i, len, resolve) => {
|
|
|
if (i < len) {
|
|
|
let art = detail.getArticleContent[i];
|
|
|
let build = {},
|
|
|
good = {},
|
|
|
skns = {},
|
|
|
product = {};
|
|
|
let build = {};
|
|
|
|
|
|
// 文字
|
|
|
if (art.text && art.text.data && art.text.data.text) {
|
|
|
build.text = art.text.data.text;
|
|
|
data.detail.content.push(build);
|
|
|
guang.detail.content.push(build);
|
|
|
callArticleContent(++i, len, resolve);
|
|
|
|
|
|
} else if (art.singleImage) { // 单张图
|
|
|
build.bigImage = helpers.image(art.singleImage.data[0].src, 640, 640);
|
|
|
data.detail.content.push(build);
|
|
|
guang.detail.content.push(build);
|
|
|
callArticleContent(++i, len, resolve);
|
|
|
|
|
|
} else if (art.smallPic && art.smallPic.data) {
|
|
|
let imgs = art.smallPic.data;
|
|
|
|
|
|
build.smallImage = [{
|
|
|
src: helpers.image(imgs[0].src, 315, 420)
|
|
|
}, {
|
|
|
src: helpers.image(imgs[1].src, 315, 420)
|
|
|
}
|
|
|
]
|
|
|
data.detail.content.push(build);
|
|
|
];
|
|
|
guang.detail.content.push(build);
|
|
|
callArticleContent(++i, len, resolve);
|
|
|
|
|
|
} else if (art.goods && art.goods.data) { // 相关推荐
|
|
|
let reco = [],
|
|
|
skns = [],
|
|
|
arr = [];
|
|
|
|
|
|
// 遍历取得SKN
|
|
|
art.goods.data.forEach(goods => {
|
|
|
skns.push(goods.id);
|
|
|
arr[goods.id]=goods.src;
|
|
|
arr[goods.id] = goods.src;
|
|
|
});
|
|
|
|
|
|
// callArticleContent(++i, len, resolve);
|
|
|
// return;
|
|
|
// 通过SKN获取商品信息
|
...
|
...
|
@@ -121,22 +120,22 @@ const _index = (req, res, next) => { |
|
|
// console.log(product)
|
|
|
if (product.data.product_list) {
|
|
|
let d = [];
|
|
|
for (let i = 0; i < product.data.product_list.length; i++) {
|
|
|
let goods = product.data.product_list[i];
|
|
|
|
|
|
for (let o = 0; o < product.data.product_list.length; o++) {
|
|
|
let goods = product.data.product_list[o];
|
|
|
|
|
|
// 最多显示4个
|
|
|
if (i > 3) {
|
|
|
if (o > 3) {
|
|
|
break;
|
|
|
}
|
|
|
d.push(guangProcess.formatProduct(goods, false, true, true, 235, 314, isApp, true, gender));
|
|
|
}
|
|
|
for (id in arr) {
|
|
|
d.forEach(p => {
|
|
|
if (id == p.id) {
|
|
|
p.thumb = helpers.image(arr[id],235,314);
|
|
|
if (arr[p.id]) {
|
|
|
p.thumb = helpers.image(arr[p.id], 235, 314);
|
|
|
reco.push(p);
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
// 多个商品
|
...
|
...
|
@@ -145,14 +144,13 @@ const _index = (req, res, next) => { |
|
|
} else if (product.data.product_list.length === 1) { // 单个商品
|
|
|
build.relatedReco = reco[0];
|
|
|
}
|
|
|
data.detail.content.push(build);
|
|
|
guang.detail.content.push(build);
|
|
|
callArticleContent(++i, len, resolve);
|
|
|
});
|
|
|
} else if (art.goodsGroup && art.goodsGroup.data) {// 悬停浮动商品
|
|
|
callArticleContent(++i, len, resolve);
|
|
|
return;
|
|
|
} else if (art.goodsGroup && art.goodsGroup.data) { // 悬停浮动商品
|
|
|
let callArtGoodGroup = (ii, len2) => {
|
|
|
if (ii < len2) {
|
|
|
let goods = art.goodsGroup.data[ii];
|
|
|
let good = {
|
|
|
thumb: helpers.image(goods.cover.cover, 235, 314),
|
|
|
type: guangProcess.getProductIcon(goods.cover.maxSortId),
|
...
|
...
|
@@ -164,54 +162,56 @@ const _index = (req, res, next) => { |
|
|
goods.list.forEach((mini) => {
|
|
|
skns.push(mini.id);
|
|
|
arr[mini.id] = mini.src;
|
|
|
})
|
|
|
});
|
|
|
|
|
|
// 通过SKN获取商品信息
|
|
|
productDetailModel.productInfoBySkns(skns).then((product) => {
|
|
|
if (product.data.product_list) {
|
|
|
let g = [];
|
|
|
product.data.product_list.forEach((goods) => {
|
|
|
g.push(guangProcess.formatProduct(goods, false, true, true, 235, 314, isApp, gender));
|
|
|
|
|
|
product.data.product_list.forEach(_ => {
|
|
|
g.push(guangProcess.formatProduct(_, false, true, true, 235, 314, isApp, gender));
|
|
|
});
|
|
|
for (id in arr) {
|
|
|
g.forEach(p => {
|
|
|
if (id == p.id) {
|
|
|
p.thumb = helpers.image(arr[id],235,314);
|
|
|
if (arr[p.id]) {
|
|
|
p.thumb = helpers.image(arr[p.id], 235, 314);
|
|
|
good.goods.push(p);
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
});
|
|
|
if (!build.collocation) {
|
|
|
build.collocation = [];
|
|
|
}
|
|
|
build.collocation.push(good);
|
|
|
}
|
|
|
callArtGoodGroup(++ii, len2);
|
|
|
})
|
|
|
});
|
|
|
} else {
|
|
|
data.detail.content.push(build);
|
|
|
guang.detail.content.push(build);
|
|
|
callArticleContent(++i, len, resolve);
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
|
|
|
callArtGoodGroup(0, art.goodsGroup.data.length);
|
|
|
} else if (art.link) { // 更多商品链接
|
|
|
build.moreLink = art.link.data[0].url;
|
|
|
data.detail.content.push(build);
|
|
|
guang.detail.content.push(build);
|
|
|
callArticleContent(++i, len, resolve);
|
|
|
}
|
|
|
} else {
|
|
|
resolve();
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
|
|
|
if (detail.getArticleContent) {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
return new Promise((resolve) => {
|
|
|
callArticleContent(0, detail.getArticleContent.length, resolve);
|
|
|
}).then(() => {
|
|
|
// 相关品牌
|
|
|
if (detail.getBrand) {
|
|
|
data.relatedBrand = detail.getBrand;
|
|
|
data.relatedBrand.forEach(brand => {
|
|
|
guang.relatedBrand = detail.getBrand;
|
|
|
guang.relatedBrand.forEach(brand => {
|
|
|
brand.thumb = brand.thumb.replace('http://', '//');
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
|
|
|
// 相关标签
|
...
|
...
|
@@ -219,14 +219,14 @@ const _index = (req, res, next) => { |
|
|
detail.getArticle.tags.forEach(value => {
|
|
|
if (!isApp) {
|
|
|
value.url = helpers.urlFormat('/tags/index', {
|
|
|
query :value.name
|
|
|
query: value.name
|
|
|
}, 'guang');
|
|
|
}
|
|
|
if (!data.relatedTag) {
|
|
|
data.relatedTag = [];
|
|
|
if (!guang.relatedTag) {
|
|
|
guang.relatedTag = [];
|
|
|
}
|
|
|
data.relatedTag.push(value);
|
|
|
})
|
|
|
guang.relatedTag.push(value);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
// 相关文章
|
...
|
...
|
@@ -238,24 +238,24 @@ const _index = (req, res, next) => { |
|
|
}, 'guang');
|
|
|
}
|
|
|
value.thumb = helpers.image(value.thumb, 279, 175);
|
|
|
if (!data.relatedInfo) {
|
|
|
data.relatedInfo = [];
|
|
|
if (!guang.relatedInfo) {
|
|
|
guang.relatedInfo = [];
|
|
|
}
|
|
|
data.relatedInfo.push(value);
|
|
|
})
|
|
|
guang.relatedInfo.push(value);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
// 分享参数
|
|
|
if (detail.getArticle.cover_image) {
|
|
|
data.shareLink = helpers.urlFormat('/info/index', {
|
|
|
guang.shareLink = helpers.urlFormat('/info/index', {
|
|
|
id: id
|
|
|
}, 'guang');
|
|
|
data.shareTitle = detail.getArticle.article_title;
|
|
|
data.shareDesc = detail.getArticle.article_summary;
|
|
|
if (detail.getArticle.cover_image_type == 1) {
|
|
|
data.shareImg = helpers.image(detail.getArticle.cover_image, 640, 640);
|
|
|
guang.shareTitle = detail.getArticle.article_title;
|
|
|
guang.shareDesc = detail.getArticle.article_summary;
|
|
|
if (detail.getArticle.cover_image_type === 1) {
|
|
|
guang.shareImg = helpers.image(detail.getArticle.cover_image, 640, 640);
|
|
|
} else {
|
|
|
data.shareImg = helpers.image(detail.getArticle.cover_image, 640, 320);
|
|
|
guang.shareImg = helpers.image(detail.getArticle.cover_image, 640, 320);
|
|
|
}
|
|
|
data.title = detail.getArticle.article_title;
|
|
|
data.title_more = true;
|
...
|
...
|
@@ -270,18 +270,18 @@ const _index = (req, res, next) => { |
|
|
title: '逛',
|
|
|
gender: gender,
|
|
|
wechatShare: true,
|
|
|
guang: data
|
|
|
}, parameter));
|
|
|
}, data, parameter));
|
|
|
});
|
|
|
} else {
|
|
|
next();
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}).catch(next);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
index: _index
|
|
|
} |
|
|
\ No newline at end of file |
|
|
}; |
...
|
...
|
|