Authored by 刘传洋

m

... ... @@ -46,7 +46,7 @@ const setShoppingCookie = (req) => {
*/
const cart = (req, res, next) => {
let uid = req.user.uid;
let uid = 8040155; // req.user.uid;
let shoppingKey = helper.getShoppingKeyByCookie(req);
let cartDelList = req.cookies['cart-del-list'];
... ... @@ -56,15 +56,15 @@ const cart = (req, res, next) => {
service.getCartData(uid, shoppingKey, cartDelList)
.then(ret => {
console.log(JSON.stringify(ret));
// res.send(ret);
// console.log(JSON.stringify(ret));
return res.render('cart', {
module: 'cart',
page: 'cart',
simpleHeader: simpleHeaderModel.setSimpleHeaderData(),
uid: uid,
cartEnsure: {
loginUrl: ''
}
cart: ret
});
})
.catch(next);
... ... @@ -103,7 +103,7 @@ const cartAdd = (req, res) => {
}
res.send(result);
});
})();
};
/**
... ... @@ -119,7 +119,7 @@ const cartTotal = (req, res) => {
let ret = yield service.getCartCount(uid, shoppingKey);
return res.send(callback + '(' + JSON.stringify(ret) + ')');
});
})();
};
/**
... ... @@ -182,7 +182,7 @@ const removeProduct = (req, res) => {
}
return res.send(ret);
});
})();
};
/**
... ... @@ -205,7 +205,7 @@ const moveToFav = (req, res) => {
}
return res.send(ret);
});
})();
};
/**
... ... @@ -226,7 +226,7 @@ const checkFav = (req, res) => {
ret.data = yield service.checkUserIsFav(uid, pids);
return res.send(ret);
});
})();
};
/**
... ... @@ -246,7 +246,7 @@ const getTogetherProduct = (req, res) => {
let ret = yield service.getTogetherProduct(page);
return res.send(ret);
});
})();
};
/**
... ... @@ -268,7 +268,7 @@ const getRecommendProductAction = (req, res) => {
let ret = yield service.getRecommendProduct(channel, uid, udid, page);
res.send(ret);
});
})();
};
module.exports = {
... ...
... ... @@ -20,11 +20,11 @@ const cartData = (uid, shoppingKey) => {
method: 'app.Shopping.queryCart' // old: 'app.Shopping.cart'
};
if (!uid) {
if (uid) {
param.uid = uid;
}
if (!shoppingKey) {
if (shoppingKey) {
param.shopping_key = shoppingKey;
}
return api.get('', param);
... ... @@ -227,10 +227,11 @@ const modifyProductNum = (uid, sku, increaseNum, decreaseNum, shoppingKey) => {
*/
const modifyCartProduct = (uid, swapData, shoppingKey) => {
let param = {};
let param = {
method: 'app.Shopping.swap',
swap_data: swapData
};
param.method = 'app.Shopping.swap';
param.swap_data = swapData;
if (uid) {
param.uid = uid;
}
... ...
... ... @@ -109,24 +109,32 @@ const formatCartGoods = (cartGoods, isAdvanceCart, inValid, isOffShelves, analys
goods.xForOne = true;
// 分析用: 商品ID列表
analysis.ids.push(it.product_id);
if (_.isArray(_.get(analysis, 'ids'))) {
analysis.ids.push(it.product_id);
}
// 分析用: CRITEO
analysis.criteo.push({
id: it.product_skn,
quantity: Number(it.buy_number),
price: it.last_vip_price
});
if (_.isArray(_.get(analysis, 'criteo'))) {
analysis.criteo.push({
id: it.product_skn,
quantity: Number(it.buy_number),
price: it.last_vip_price
});
}
} else {
// 分析用: 商品ID列表
analysis.ids.push(it.product_id);
if (_.isArray(_.get(analysis, 'ids'))) {
analysis.ids.push(it.product_id);
}
// 分析用: CRITEO
analysis.criteo.push({
id: it.product_skn,
quantity: Number(it.buy_number),
price: it.last_vip_price
});
if (_.isArray(_.get(analysis, 'criteo'))) {
analysis.criteo.push({
id: it.product_skn,
quantity: Number(it.buy_number),
price: it.last_vip_price
});
}
}
// 商品类型:预售或普通
... ... @@ -140,7 +148,7 @@ const formatCartGoods = (cartGoods, isAdvanceCart, inValid, isOffShelves, analys
// 商品链接
let cnAlphaBet = it.cn_alphabet ? it.cn_alphabet : md5(it.product_name);
goods.link = helpers.url(`/product/pro_${it.product_id}_${it.goods_id}/${cnAlphaBet}.html`, null, 'item');
goods.link = helpers.urlFormat(`/product/pro_${it.product_id}_${it.goods_id}/${cnAlphaBet}.html`, null, 'item');
return goods;
});
... ... @@ -238,12 +246,12 @@ const formatPriceGifts = (giftList, isGift) => {
if (g.goods_id) {
let cnAlphaBet = g.cn_alphabet ? g.cn_alphabet : md5(g.product_name);
goods.subjoinLink = helpers.url(`/product/pro_${g.product_id}_${g.goods_id}/${cnAlphaBet}.html`,
goods.subjoinLink = helpers.urlFormat(`/product/pro_${g.product_id}_${g.goods_id}/${cnAlphaBet}.html`,
null, 'item');
} else {
let uri = `/product/show_${g.product_id}_${g.product_skn}/${makeToken(g.product_skn)}.html`;
goods.subjoinLink = helpers.url(uri, null, 'item');
goods.subjoinLink = helpers.urlFormat(uri, null, 'item');
}
// 赠品
... ... @@ -278,9 +286,9 @@ const formatPoolPromotionInfos = (infoList) => {
// "status": 0, // 状态 0 未满足 10 已满足 [20 售光 30 更换 ]
conditionUnit: it.condition_unit, // 0满足,1 件,2金额
condition_value: it.condition_value,
conditionValue: it.condition_value,
giftPrice: it.gift_price, // 赠品或加价购商品价格
goodsList: formatCartGoods(it.goods_list), // 可供选择的赠品或加价购商品列表
giftGoodsList: formatCartGoods(it.gift_goods_List), // 可供选择的赠品或加价购商品列表
promotionId: it.promotion_id, // 促销id
promotionTitle: it.promotion_title, // "已满足[满30减10-dev30]",
promotionType: it.promotion_type, // 促销类型
... ... @@ -295,7 +303,7 @@ const formatPoolPromotionInfos = (infoList) => {
};
if (status === 0) {
let tipTxt = `差${info.conditionValue}`;
let tipTxt = `差${ -1 * info.conditionValue}`;
if (info.conditionUnit === 1) {
tipTxt += '件';
... ... @@ -304,6 +312,8 @@ const formatPoolPromotionInfos = (infoList) => {
}
info.promotionTitle = tipTxt + info.promotionTitle;
} else if (status === 10) {
info.promotionTitle = '已满足' + info.promotionTitle;
}
return info;
});
... ... @@ -333,7 +343,7 @@ const formatSubPromotionPools = (pools) => {
});
// [ [goods, goods], [goods, ..], [] ] => [goods, goods ]
return goodsListPool.flatten(goodsListPool);
return _.flatten(goodsListPool);
};
/**
... ... @@ -343,12 +353,14 @@ const formatPromotionPools = (pools) => {
return _.map(pools, p => {
let pool = {
poolTitle: p.pool_title,
poolType: p.pool_type,
goodsList: formatCartGoods(p.goods_list),
promotionInfos: formatPoolPromotionInfos(p.promotion_list)
};
if (p.sub_promotion_list) {
let goodsWithPromotion = formatSubPromotionPools(p.sub_promotion_list);
if (p.sub_pool) {
let goodsWithPromotion = formatSubPromotionPools(p.sub_pool);
if (_.isArray(goodsWithPromotion) && goodsWithPromotion.length) {
pool.goodsList = goodsWithPromotion.concat(pool.goodsList);
... ...
... ... @@ -403,6 +403,8 @@ const getCartData = (uid, shoppingKey, cartDelList) => {
// 调用接口,获取购物车数据
let cartDataRet = yield cartApi.cartData(uid, shoppingKey);
let cartData = cartDataRet && cartDataRet.data;
let advCartData = _.get(cartData, 'advance_cart_data');
let ordCartData = _.get(cartData, 'ordinary_cart_data');
// 接口异常时,购物车置为空
if (!cartData) {
... ... @@ -413,40 +415,36 @@ const getCartData = (uid, shoppingKey, cartDelList) => {
}
result.advanceCart = {
goodsList: chelper.formatCartGoods(_.get(cartData, 'advance_cart_data.goods_list'),
true, false, false, analysisData), // 未参加活动的商品
offShelves: chelper.formatOffShelves(_.get(cartData, 'advance_cart_data.off_shelves_goods_list'),
true, analysisData),
soldOuts: chelper.formatSoldOuts(_.get(cartData, 'advance_cart_data.sold_out_goods_list'),
true, analysisData),
stat: chelper.formatShoppingCartData(_.get(cartData, 'advance_cart_data.shopping_cart_data'))
// 未参加活动的商品
goodsList: chelper.formatCartGoods(_.get(advCartData, 'goods_list'), true, false, false, analysisData),
offShelves: chelper.formatOffShelves(_.get(advCartData, 'off_shelves_goods_list'), true, analysisData),
soldOuts: chelper.formatSoldOuts(_.get(advCartData, 'sold_out_goods_list'), true, analysisData),
stat: chelper.formatShoppingCartData(_.get(advCartData, 'shopping_cart_data'))
};
result.ordinaryCart = {
gifts: chelper.formatGifts(_.get(cartData, 'ordinary_cart_data.gift_list')),
goodsList: chelper.formatCartGoods(_.get(cartData, 'ordinary_cart_data.goods_list'),
false, false, false, analysisData), // 未参加活动的商品
promotionPools: chelper.formatPromotionPools(_.get(cartData, 'ordinary_cart_data.promotion_pool_list')),
offShelves: chelper.formatOffShelves(_.get(cartData, 'ordinary_cart_data.off_shelves_goods_list'),
false, analysisData),
soldOuts: chelper.formatSoldOuts(_.get(cartData, 'ordinary_cart_data.sold_out_goods_list'),
false, analysisData),
priceGifts: chelper.formatPriceGifts(_.get(cartData, 'ordinary_cart_data.price_gift')),
promotionInfos: chelper.formatPromotionInfos(_.get(cartData, 'ordinary_cart_data.promotion_info')),
stat: chelper.formatShoppingCartData(_.get(cartData, 'ordinary_cart_data.shopping_cart_data'))
gifts: chelper.formatGifts(_.get(ordCartData, 'gift_list')),
// 未参加活动的商品
goodsList: chelper.formatCartGoods(_.get(ordCartData, 'goods_list'), false, false, false, analysisData),
pools: chelper.formatPromotionPools(_.get(ordCartData, 'goods_pool_list')),
offShelves: chelper.formatOffShelves(_.get(ordCartData, 'off_shelves_goods_list'), false, analysisData),
soldOuts: chelper.formatSoldOuts(_.get(ordCartData, 'sold_out_goods_list'), false, analysisData),
priceGifts: chelper.formatPriceGifts(_.get(ordCartData, 'price_gift')),
promotionInfos: chelper.formatPromotionInfos(_.get(ordCartData, 'promotion_info')),
stat: chelper.formatShoppingCartData(_.get(ordCartData, 'shopping_cart_data'))
};
let advStat = result.advanceCart.stat;
let ordStat = result.ordinaryCart.stat;
result.stat = {
orderAmount: _.get(result, 'advanceCart.stat.orderAmount', 0) +
_.get(result, 'ordinaryCart.stat.orderAmount', 0),
discountAmount: _.get(result, 'advanceCart.stat.discountAmount', 0) +
_.get(result, 'ordinaryCart.stat.discountAmount', 0),
lastOrderAmount: _.get(result, 'advanceCart.stat.lastOrderAmount', 0) +
_.get(result, 'ordinaryCart.stat.lastOrderAmount', 0),
gainYohoCoin: _.get(result, 'advanceCart.stat.gainYohoCoin', 0) +
_.get(result, 'ordinaryCart.stat.gainYohoCoin', 0),
goodsCount: _.get(result, 'advanceCart.stat.goodsCount', 0) +
_.get(result, 'ordinaryCart.stat.goodsCount', 0)
orderAmount: _.get(advStat, 'orderAmount', 0) + _.get(ordStat, 'orderAmount', 0),
discountAmount: _.get(advStat, 'discountAmount', 0) + _.get(ordStat, 'discountAmount', 0),
lastOrderAmount: _.get(advStat, 'lastOrderAmount', 0) + _.get(ordStat, 'lastOrderAmount', 0),
gainYohoCoin: _.get(advStat, 'gainYohoCoin', 0) + _.get(ordStat, 'gainYohoCoin', 0),
goodsCount: _.get(advStat, 'goodsCount', 0) + _.get(ordStat, 'goodsCount', 0),
selectedGoodsCount: _.get(advStat, 'selectedGoodsCount', 0) + _.get(ordStat, 'selectedGoodsCount', 0)
};
/* 移除的商品列表 */
... ... @@ -461,7 +459,7 @@ const getCartData = (uid, shoppingKey, cartDelList) => {
}*/
return result;
}).then(ret => {
})().then(ret => {
// 增加第三方分析用的数据
// ret['ids'] = empty($analysisData['ids']) ? '' : implode(',', $analysisData['ids']);
// $result['criteo'] = empty($analysisData['criteo']) ? "''" : json_encode($analysisData['criteo']);
... ... @@ -521,7 +519,7 @@ const addToCart = (productSku, buyNumber, goodsType, isEdit, promotionId, uid, s
}*/
return result;
});
})();
};
/**
... ... @@ -556,7 +554,7 @@ const selectGoods = (uid, skuList, shoppingKey, hasPromotion) => {
}*/
return result;
});
})();
};
/**
... ... @@ -592,7 +590,7 @@ const modifyProductNum = (uid, sku, increaseNum, decreaseNum, shoppingKey) => {
}*/
return result;
});
})();
};
... ... @@ -633,7 +631,7 @@ const removeFromCart = (uid, shoppingKey, skuList, hasPromotion) => {
}*/
return result;
});
})();
};
/**
... ... @@ -678,7 +676,7 @@ const addToFav = (uid, skuList, hasPromotion) => {
}*/
return result;
});
})();
};
... ... @@ -708,7 +706,7 @@ const checkUserIsFav = (uid, skuList) => {
}
return cartApi.checkUserIsFavProductList(uid, skuList);
});
})();
};
/**
... ... @@ -806,7 +804,7 @@ const getRecommendProduct = (channel, uid, udid, page) => {
});
return result;
});
})();
};
module.exports = {
... ...