Authored by jinhu.tung

integrate getCartData API

... ... @@ -11,45 +11,68 @@ const _ = require('lodash');
exports.index = (req, res) => {
const shoppingKey = req.cookies._SPK || null;
const uid = req.cookies._uid || null;
const uid = req.cookies.uid || null;
cartModel.getCartData(shoppingKey, uid).then((result) => {
console.log('get cart data:', result);
}).catch((err) => {
res.send(err);
});
// 预售商品
let advancedGoods = [],
advancedCartData;
cartModel.getCartInfo().then((result) => {
// 普通商品
let ordinaryGoods = [],
ordinaryCartData;
const mock = {
loggedIn: true,
prosNum: result[0].preSalePros.length && result[1].commonPros.length && result[2].invalidPros.length
};
// skn=0或者已下架的商品,定义为失效商品
let invalidGoods = [];
if (result[0].preSalePros) {
_.merge(mock, {
preSalePros: _.groupBy(result[0].preSalePros, 'brandName')
});
}
// 库存不足商品
let soldOutGoods = [];
if (result[1].commonPros) {
_.merge(mock, {
commonPros: _.groupBy(result[1].commonPros, 'brandName')
});
}
// 返回值
let resData = {};
if (result[2].invalidPros) {
console.log(result[2].invalidPros);
_.merge(mock, {
invalidPros: result[2].invalidPros
cartModel.getCartData(shoppingKey, uid).then((result) => {
console.log('get cart data:', result);
if (result.code === 200) {
if (result.data && result.data.advance_cart_data) {
// 预售商品
advancedCartData = result.data.advance_cart_data;
advancedGoods = _.concat(advancedGoods, advancedCartData.goods_list);
invalidGoods = _.concat(invalidGoods, advancedCartData.off_shelves_goods_list);
soldOutGoods = _.concat(soldOutGoods, advancedCartData.sold_out_goods_list);
}
if (result.data && result.data.ordinary_cart_data) {
// 普通商品
ordinaryCartData = result.data.ordinary_cart_data;
ordinaryGoods = _.concat(ordinaryGoods, ordinaryCartData.goods_list);
invalidGoods = _.concat(invalidGoods, ordinaryCartData.off_shelves_goods_list);
soldOutGoods = _.concat(soldOutGoods, ordinaryCartData.sold_out_goods_list);
}
console.log('ordinaryGoods:', ordinaryGoods);
_.merge(resData, {
hasGoods: advancedGoods.length || ordinaryGoods.length || invalidGoods.length,
preSalePros: advancedGoods.length ? _.groupBy(advancedGoods, 'brand_id') : [],
commonPros: ordinaryGoods.length ? _.groupBy(ordinaryGoods, 'brand_id') : [],
invalidPros: invalidGoods
});
}
res.display('cart', _.merge({
module: 'shopping',
page: 'cart'
}, mock));
console.log('resData:', resData);
res.display('cart', _.merge({
module: 'shopping',
page: 'cart'
}, {
helpers: require('../helpers')
}, resData));
} else {
// code 500
res.send(result);
}
}).catch((err) => {
res.send(err);
});
... ... @@ -154,8 +177,6 @@ exports.editProduct = (req, res) => {
};
// 添加商品到购物车
// productSku:1329776
// buyNumber:1
exports.addToCart = (req, res) => {
const productSku = req.body.productSku;
const buyNumber = req.body.buyNumber;
... ...
/**
* Handlebars helpers
* dongjinhu jinhu.dong@yoho.cn
* 2016-07-14
*/
'use strict';
/**
* 乘法
* @param {[Number]} num1
* @param {[Number]} num2
* @param {[object]} options 上下文环境,一般不手动传
* @return {[boolen]}
*/
exports.multiple = (num1, num2) => {
num1 = typeof num1 === 'number' ? num1 : parseFloat(num1, 10);
num2 = typeof num2 === 'number' ? num2 : parseFloat(num2, 10);
if (num1 && num2) {
return num1 * num2;
} else {
console.error('multiplication needs two number parameters');
}
};
... ...
... ... @@ -340,6 +340,8 @@ const addToCart = (options) => {
* }
*/
const getCartData = (shoppingKey, uid) => {
console.log('SPK:', shoppingKey);
console.log('uid:', uid);
let params = {
method: 'app.Shopping.cart'
};
... ...
... ... @@ -3,7 +3,7 @@
{{> common/bc-nav}}
{{> common/info}}
{{ selectedGoods.length }}
{{#if prosNum}}
{{#if hasGoods}}
{{> cart-list}}
{{^}}
{{> common/empty-cart}}
... ...
... ... @@ -17,20 +17,24 @@
<input type="hidden" name="productIds[]"/>
</li>
<li>
<img src="{{image defaultImages 100 134}}" alt="{{productName}}">
<img src="{{image goods_images 100 134}}" alt="{{product_name}}">
</li>
<li class="pro-info">
<div class="brand-name">{{brandName}}</div>
<div class="pro-name">{{productName}}</div>
<div class="size">尺寸: USB</div>
{{!-- <div class="brand-name">{{brand_name}}</div> --}}
<div class="pro-name">{{product_name}}</div>
<div class="size">
{{#if size_name}}
<span>尺寸: {{size_name}}</span>
{{/if}}
</div>
<div class="published-at">上市期: 2016年8月1日</div>
</li>
<li class="price-num">
<span class="price sale-price">¥{{salesPrice}}</span>
<span class="price sale-price">¥{{sales_price}}</span>
{{> common/stepper }}
</li>
<li class="total-price-action">
<span class="price item-total-price">¥1289.00</span>
<span class="price item-total-price">¥{{multiple sales_price buy_number}}</span>
<div class="actions">
<div class="remove-item action" data-productId={{productId}}><span class="iconfont">&#xe614;</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div class="send-to-favorite action" data-productId={{productId}}>移入收藏夹</div>
... ... @@ -62,27 +66,27 @@
<input type="hidden" name="productIds[]"/>
</li>
<li>
<img src="{{image defaultImages 100 134}}" alt="{{productName}}">
<img src="{{image goods_images 100 134}}" alt="{{product_name}}">
</li>
<li class="pro-info">
<div class="brand-name">{{brandName}}</div>
<div class="pro-name">{{productName}}</div>
{{!-- <div class="brand-name">{{brandName}}</div> --}}
<div class="pro-name">{{product_name}}</div>
<div class="color-size editable" data-productId={{productId}} id="edit_{{productId}}">
{{#if selectColor}}
<span class="mr20">颜色: {{selectColor}}</span>
{{#if color_name}}
<span class="mr20">颜色: {{color_name}}</span>
{{/if}}
{{#if selectSize}}
<span>尺寸: {{selectSize}}</span>
{{#if size_name}}
<span>尺寸: {{size_name}}</span>
{{/if}}
<span class="iconfont">&#xe63c;</span>
</div>
</li>
<li class="price-num">
<span class="price sale-price">¥{{salesPrice}}</span>
<span class="price sale-price">¥{{sales_price}}</span>
{{> common/stepper }}
</li>
<li class="total-price-action">
<span class="price item-total-price">¥1289.00</span>
<span class="price item-total-price">¥{{multiple sales_price buy_number}}</span>
<div class="actions">
<div class="remove-item action" data-productId={{productId}}><span class="iconfont">&#xe614;</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div class="send-to-favorite action" data-productId={{productId}}>移入收藏夹</div>
... ...
... ... @@ -3,7 +3,7 @@
<span class="iconfont">&#xe621;</span>
</div>
<div class="num">
<input type="text" class="input" value={{orderNum}} />
<input type="text" class="input" value={{buy_number}} />
</div>
<div class="plus action">
<span class="iconfont">&#xe61f;</span>
... ...