Authored by 郭成尧

detail-backend-process

... ... @@ -4,6 +4,7 @@
* @date: 2016/09/07
*/
'use strict';
const co = require('bluebird').coroutine;
const helpers = global.yoho.helpers;
const mRoot = '../models';
const typeLib = require('../../../config/type-lib');
... ... @@ -344,10 +345,6 @@ const index = (req, res, next) => {
res.locals.appPath = `yohobuy://yohobuy.com/goapp?openby:yohobuy={"action":"go.h5","params":{"id":"${id}","share":"/guang/api/v1/share/guang?id=${id}","shareparam":{"id":"${id}"},"islogin":"N","type":1,"url":"http://guang.m.yohobuy.com/info/index","param":{"id":"${id}"}}}`;
// pagecache 前端做
// userAgent = req.get('User-Agent'),
// isWeixin = userAgent.includes('MicroMessenger'); // 标识是否是微信访问
// 判断参数是否有效, 无效会跳转到错误页面
if (!stringProcess.isNumeric(id)) {
res.json({
... ... @@ -366,17 +363,8 @@ const index = (req, res, next) => {
isShare = isWeixin || isqq || isWeibo ? true : false;
// WAP上设置头部导航 pagecache
// if (!isApp && !isWeixin) {
// parameter = {
// pageHeader: headerModel.setNav({
// navTitle: title
// })
// };
// }
// 获取详情内容信息, 异常则跳到错误页面
return req.ctx(DetailModel).packageData(id, isApp, isWeixin, channel, isShare).then(detail => {
co(function* () {
let detail = yield req.ctx(DetailModel).packageData(id, isApp, isWeixin, channel, isShare);
let data = {
guangDetail: true,
guang: {}
... ... @@ -425,65 +413,59 @@ const index = (req, res, next) => {
return next();
}
guangProcess.processArticleDetail(detail.getArticleContent,
let processContents = guangProcess.processArticleDetail(detail.getArticleContent,
isApp,
gender,
isWeixin,
isqq,
isWeibo);
// 生成内容部分
return _pageArticleContent(detail.getArticleContent,
isApp,
gender,
isWeixin,
isqq,
isWeibo).then((contents) => {
// console.log(contents);
guang.detail.content = contents;
let goodsList = yield req.ctx(DetailModel).productInfoBySkns(processContents.allgoods);
// 相关品牌
if (detail.getBrand && detail.getBrand.length) {
guang.relatedBrand = _relatedBrand(detail.getBrand, isApp);
}
guang.detail.content = guangProcess.pushGoodsInfo(processContents.finalDetail, goodsList);
// 相关标签
if (detail.getArticle.tags && detail.getArticle.tags.length) {
guang.relatedTag = _relatedTag(detail.getArticle.tags, isApp);
}
// 相关品牌
if (detail.getBrand && detail.getBrand.length) {
guang.relatedBrand = _relatedBrand(detail.getBrand, isApp);
}
// 相关文章
if (detail.getOtherArticle && detail.getOtherArticle.length) {
guang.relatedInfo = _relatedInfo(detail.getOtherArticle, isApp);
}
// 相关标签
if (detail.getArticle.tags && detail.getArticle.tags.length) {
guang.relatedTag = _relatedTag(detail.getArticle.tags, isApp);
}
// 分享参数
if (detail.getArticle.cover_image) {
let shareInfo = _shareInfo(id, detail.getArticle);
// 相关文章
if (detail.getOtherArticle && detail.getOtherArticle.length) {
guang.relatedInfo = _relatedInfo(detail.getOtherArticle, isApp);
}
Object.assign(guang, shareInfo);
data.title = detail.getArticle.article_title + ' | Yoho!Buy有货 | 潮流购物逛不停';
data.title_more = true;
data.description = detail.getArticle.article_summary;
data.description_more = true;
}
// 分享参数
if (detail.getArticle.cover_image) {
let shareInfo = _shareInfo(id, detail.getArticle);
// 标识有微信分享
data.hasWxShare = true;
aboutModel.about(req.yoho.isApp).then((resu) => {
data.guang.wxFooter = resu;
res.render('info/index', Object.assign({
page: 'info-index',
title: '逛',
gender: gender,
wechatShare: true,
isWeixin: isWeixin,
localCss: true,
isShare: isShare
}, data, parameter));
});
}).catch(next);
}).catch(next);
Object.assign(guang, shareInfo);
data.title = detail.getArticle.article_title + ' | Yoho!Buy有货 | 潮流购物逛不停';
data.title_more = true;
data.description = detail.getArticle.article_summary;
data.description_more = true;
}
// 标识有微信分享
data.hasWxShare = true;
let resu = aboutModel.about(req.yoho.isApp);
data.guang.wxFooter = resu;
res.render('info/index', Object.assign({
page: 'info-index',
title: '逛',
gender: gender,
wechatShare: true,
isWeixin: isWeixin,
localCss: true,
isShare: isShare
}, data, parameter));
})().catch(next);
};
// 301到新路由
... ...
... ... @@ -112,13 +112,13 @@
<img class="thumb lazy" data-original={{thumb}}>
<div class="content-container">
<p>
<span class="reco-name">{{name}}</span>
<span class="reco-name">{{product_name}}</span>
</p>
<p class="price">
<span class="sale-price {{^price}}no-price{{/price}}">&yen;{{salePrice}}</span>
{{#price}}
<span class="sale-price {{^price}}no-price{{/price}}">&yen;{{sales_price}}</span>
{{#market_price}}
<span class="market-price">&yen;{{.}}</span>
{{/price}}
{{/market_price}}
<a class="check-detail" href={{url}}>
查看详情
</a>
... ... @@ -129,7 +129,7 @@
{{^}}
<div class="good-list clearfix">
{{# relatedReco}}
{{> good}}
{{> common/goods}}
{{/ relatedReco}}
</div>
{{/if}}
... ...
... ... @@ -479,14 +479,25 @@ const processArticleDetail = (articleContent, isApp, gender, isWeixin, isqq, isW
};
};
/**
* 重新获取商品数据
*/
const pushGoodsInfo = (finalDetail, goodsList) => {
let goodsObj = _goodsArrayToObj(productPrcs.processProductList(goodsList));
// console.log(goodsList);
_.forEach(finalDetail, (value, key) => {
// if (value.relatedReco) {
// console.log(value.relatedReco);
// }
if (value.relatedReco && _.isArray(value.relatedReco)) {
_.forEach(value.relatedReco, (item, subKey) => {
finalDetail[key].relatedReco[subKey] = goodsObj[item.id];
});
}
if (value.relatedReco && _.isObject(value.relatedReco)) {
_.assign(finalDetail[key].relatedReco, goodsObj[_.get(value, 'relatedReco.id', 'false')], {
thumb: helpers.image(_.get(value, 'relatedReco.src', ''), 235, 314)
});
}
if (value.collocation) {
_.forEach(value.collocation, (item, subKey) => {
... ... @@ -497,7 +508,6 @@ const pushGoodsInfo = (finalDetail, goodsList) => {
}
});
// console.log(JSON.stringify(finalDetail, 2, 2));
return finalDetail;
};
... ...