Authored by yyq

h5商品详情调整

... ... @@ -7,6 +7,7 @@
'use strict';
const mRoot = '../models';
const headerModel = require('../../../doraemon/models/header'); // 头部model
const detail = require(`${mRoot}/detail`); // 商品详情 model
const intro = require(`${mRoot}/intro`); // 商品尺码信息 model
const preference = require(`${mRoot}/preference`); // 商品偏好 model
... ... @@ -18,9 +19,13 @@ const _ = require('lodash');
* @param {[type]} res [description]
* @return {[type]} [description]
*/
exports.index = (req, res) => {
var vipLevel = 0; // 用户等级 待处理
var uid = _.isEmpty(req.user.uid) ? null : req.user.uid;
exports.index = (req, res, next) => {
let vipLevel = 0; // 用户等级 待处理
let uid = _.isEmpty(req.user.uid) ? null : req.user.uid;
let headerData = headerModel.setNav({
navTitle: '商品详情'
});
detail({
id: req.params[0],
... ... @@ -30,12 +35,13 @@ exports.index = (req, res) => {
ua: req.get('user-agent') || ''
}).then((result) => {
res.render('detail/detail', {
pageHeader: headerData,
result: result,
module: 'product',
page: 'detail',
title: result.goodsName
});
title: result.goodsName,
pageFooter: true
});
}).catch(next);
};
/**
... ...
... ... @@ -8,13 +8,10 @@
const library = '../../../library';
const API = require(`${library}/api`).API;
const sign = require(`${library}/sign`);
const _ = require('lodash');
const helpers = require(`${library}/helpers`);
// const log = require(`${library}/logger`);
var api = new API();
const api = new API();
/**
* 处理品牌关联店铺信息
... ... @@ -22,12 +19,13 @@ var api = new API();
* @return {array}
*/
const getShopsInfo = (data) => {
var enterStore = {};
let enterStore = {};
_.forEach(data, function(value, key) {
enterStore[key] = {};
enterStore[key].img = value.brand_ico;
enterStore[key].storeName = value.brand_name;
enterStore[key] = {
img: value.brand_ico,
storeName: value.brand_name
};
if (value.shop_id !== null && typeof value.shop_id !== 'undefined') {
let params = {};
... ... @@ -100,7 +98,7 @@ const procShowStatus = (data, showStatus, isBeginSale) => {
* @return {string} 限购商品跳转url
*/
const getLimitCodeUrl = (productCode, skn, ua) => {
var url = 'yohoapp://yoho.app/openwith?limit_product_code=' + productCode +
let url = 'yohoapp://yoho.app/openwith?limit_product_code=' + productCode +
'&product_skn=' + skn;
let isIphone = String(ua).indexOf('iPhone') >= 0;
... ... @@ -121,7 +119,7 @@ const getLimitCodeUrl = (productCode, skn, ua) => {
* @return dest Object 格式化数据
*/
const detailDataPkg = (origin, uid, vipLevel, ua) => {
var dest = {}, // 结果输出
let dest = {}, // 结果输出
colorGroup = {},
thumbImageList = {},
sizeGroup = {},
... ... @@ -192,14 +190,15 @@ const detailDataPkg = (origin, uid, vipLevel, ua) => {
// VIP 商品价格
dest.vipLevel = {};
dest.vipLevel.list = {};
dest.vipLevel.list = [];
if (origin.productPriceBo.vipPrices !== null && typeof origin.productPriceBo.vipPrices !== 'undefined') {
_.forEach(origin.productPriceBo.vipPrices, function(value, key) {
dest.vipLevel.list[key] = {};
dest.vipLevel.list[key].level = value.vipLevel;
dest.vipLevel.list[key].text = value.vipPrice;
dest.vipLevel.list[key].currentLevel = (value.vipLevel === vipLevel) ? true : false;
_.forEach(origin.productPriceBo.vipPrices, function(value) {
dest.vipLevel.list.push({
level: value.vipLevel,
text: value.vipPrice,
currentLevel: (value.vipLevel === vipLevel)
});
});
}
... ... @@ -224,16 +223,17 @@ const detailDataPkg = (origin, uid, vipLevel, ua) => {
// 商品咨询
dest.feedbacks = {};
dest.feedbacks.consults = {};
dest.feedbacks.consults = [];
dest.feedbacks.consultsNum = 0;
if (origin.consultBoWrapper !== null && typeof origin.consultBoWrapper !== 'undefined') {
dest.feedbacks.consultsNum = origin.consultBoWrapper.consultTotal;
_.forEach(origin.consultBoWrapper.consultBoList, function(value, key) {
dest.feedbacks.consults[key] = {};
dest.feedbacks.consults[key].question = value.ask;
dest.feedbacks.consults[key].time = value.askTime;
dest.feedbacks.consults[key].answer = value.answer;
_.forEach(origin.consultBoWrapper.consultBoList, function(value) {
dest.feedbacks.consults.push({
question: value.ask,
time: value.askTime,
answer: value.answer
});
});
let params = {};
... ... @@ -256,16 +256,15 @@ const detailDataPkg = (origin, uid, vipLevel, ua) => {
dest.feedbacks.commentsNum = 0;
if (origin.commentBoWrapper !== null && typeof origin.commentBoWrapper !== 'undefined') {
dest.feedbacks.commentsNum = origin.commentBoWrapper.commentTotal;
dest.feedbacks.comments = {};
_.forEach(origin.commentBoWrapper.commentBoList, function(value, key) {
dest.feedbacks.comments[key] = {};
dest.feedbacks.comments[key].userName = value.nickName;
dest.feedbacks.comments[key].desc = value.colorName +
'/' + value.sizeName;
dest.feedbacks.comments[key].content = (value.content !== null &&
typeof value.content !== 'undefined') ? value.content : '';
dest.feedbacks.comments[key].time = value.createTime;
dest.feedbacks.comments = [];
_.forEach(origin.commentBoWrapper.commentBoList, function(value) {
dest.feedbacks.comments.push({
userName: value.nickName,
desc: value.colorName + '/' + value.sizeName,
content: value.content ? value.content : '',
time: value.createTime
});
});
let params = {};
... ... @@ -500,23 +499,23 @@ const detailDataPkg = (origin, uid, vipLevel, ua) => {
};
module.exports = (data) => {
var finalResult;
var params = {};
params.productId = _.toString(data.id);
params.method = 'h5.product.data';
let finalResult;
let params = {
productId: _.toString(data.id),
method: 'h5.product.data'
};
if (!_.isEmpty(data.uid)) {
params.uid = data.uid;
}
return api.get('', sign.apiSign(params)).then(result => {
return api.get('', params).then(result => {
finalResult = detailDataPkg(result, data.uid, data.vipLevel, data.ua);
return api.get('', sign.apiSign({
return api.get('', {
method: 'app.shop.queryShopsByBrandId',
brand_id: _.toString(result.brandId)
})).then(shops => {
}).then(shops => {
if (shops.code === 200) {
finalResult.enterStore = getShopsInfo(shops.data);
}
... ...
... ... @@ -9,7 +9,6 @@
const library = '../../../library';
const API = require(`${library}/api`).API;
const sign = require(`${library}/sign`);
const _ = require('lodash');
// const log = require(`${library}/logger`);
... ... @@ -273,11 +272,11 @@ const getSizeInfo = (sizeInfo) => {
module.exports = (data) => {
var finalResult;
return api.get('', sign.apiSign({
return api.get('', {
method: 'h5.product.intro',
productskn: data.productskn,
udid: 'f528764d624db129b32c21fbca0cb8d6'
})).then(result => {
}).then(result => {
finalResult = getSizeInfo(result);
return finalResult;
... ...
... ... @@ -13,8 +13,8 @@ module.exports = {
port: 6001,
siteUrl: '//m.yohobuy.com',
domains: {
api: 'http://api.yoho.yohoops.org/',
service: 'http://service.yoho.yohoops.org/'
api: 'http://testapi.yoho.cn:28078/',
service: 'http://testservice.yoho.cn:28077/'
},
useOneapm: false,
useCache: false,
... ...
... ... @@ -8,8 +8,6 @@ var $ = require('yoho-jquery'),
Hammer = require('yoho-hammer'),
lazyLoad = require('yoho-jquery-lazyload');
// commonJS = require('../common');
var $discountFolder = $('.goodsDiscount .discount-folder'),
$discountArrow = $('.goodsDiscount .first-item span');
... ... @@ -23,6 +21,7 @@ var appUrl = $('input[name="limitCodeUrl"]').val();
var dialog = require('../plugin/dialog');
require('../common');
// add extra marign-bottom for footer to show the yoho copyright
function showFooter() {
... ...