Authored by 陈峰

商品详情限购逻辑分离

... ... @@ -351,6 +351,7 @@ exports.indexData = (req, res, next)=> {
detailModel.getProductAsyncData(Object.assign({
id: req.body.id,
goodsId: req.body.goodsId,
productSkn: req.body.productSkn,
uid: uid,
ua: req.get('user-agent') || ''
}, req.__User__)).then((result) => {
... ...
... ... @@ -1097,7 +1097,8 @@ let getProductData = (data) => {
// params.current_vip_level = data.vipLevel;
return api.get('', params, {
code: 200
code: 200,
cache: true
}).then(result => {
if (result.code === 500 || !result.data) {
return {};
... ... @@ -1520,7 +1521,8 @@ let getProductAsyncData = (data) => {
params.current_vip_level = data.vipLevel;
return api.get('', params, {
code: 200
code: 200,
cache: true
}).then(result => {
if (result.code === 500 || !result.data) {
return {};
... ... @@ -1751,7 +1753,6 @@ let _detailDataPkgAsync = (origin, uid, vipLevel, ua) => {
numInCart: 0,
goodsInstore: origin.storage_sum
};
// 显示加入购物车链接
if (!soldOut && !notForSale) {
_.orderBy(colorGroup);
... ... @@ -1765,31 +1766,54 @@ let _detailDataPkgAsync = (origin, uid, vipLevel, ua) => {
colors: _.toArray(colorGroup),
sizes: sizeGroup
});
// 限购商品
if (origin.isLimitBuy) {
// 是否开售
let isBeginSale = (origin.saleStatus === 1);
// 限购商品有关的展示状态
let showStatus = 1;
origin.showStatus && (showStatus = parseInt(origin.showStatus, 10));
// 处理限购商品有关的按钮状态
dest = _procShowStatus(dest, showStatus, isBeginSale);
dest.cartInfo.limitProductCode = origin.limitProductCode;
dest.cartInfo.limitCodeUrl = _getLimitCodeUrl(origin.limitProductCode, origin.product_skn, ua);
dest.cartInfo.limitProductPay = helpers.urlFormat('/cart/index/orderEnsure');
if (origin.isLimitBuy && totalStorageNum > 0) {
return api.get('', {
method: 'app.limitProduct.productStatus',
limitProductCode: origin.limitProductCode,
uid: uid,
product_skn: origin.product_skn
}, {
code: 200,
cache: true
}).then((result) => {
if (result.data) {
if (!result.data.limitBuy) {
dest.cartInfo.soldOut = true;
return callback();
}
// 是否开售
let isBeginSale = (result.data.saleStatus === 1);
// 限购商品有关的展示状态
let showStatus = 1;
origin.showStatus && (showStatus = parseInt(result.data.showStatus, 10));
// 处理限购商品有关的按钮状态
dest = _procShowStatus(dest, showStatus, isBeginSale);
dest.cartInfo.limitProductCode = origin.limitProductCode;
dest.cartInfo.limitCodeUrl = _getLimitCodeUrl(origin.limitProductCode, origin.product_skn, ua);
dest.cartInfo.limitProductPay = helpers.urlFormat('/cart/index/orderEnsure');
return callback();
} else {
dest.cartInfo.soldOut = true;
return callback();
}
});
} else {
dest.cartInfo.addToCartUrl = helpers.urlFormat('/product/buy_' + origin.product_id + '_' +
origin.goods_id + '.html');
return callback();
}
} else if (notForSale) {
dest.cartInfo.notForSale = true;
return callback();
} else if (soldOut) {
dest.cartInfo.soldOut = true;
return callback();
}
// 是否收藏 使用单独收藏接口获取
... ... @@ -1798,34 +1822,36 @@ let _detailDataPkgAsync = (origin, uid, vipLevel, ua) => {
// dest.isCollect = true;
// dest.cartInfo.isCollect = true;
// }
function callback() {
// 虚拟商品(门票)
if (origin.attribute * 1 === 3) {
dest.tickets = true;
dest.ticketsConfirm = helpers.urlFormat('/cart/index/ticketsConfirm');
// 展览票
if (origin.product_skn * 1 === SINGLE_TICKETS_SKN) {
dest.single = true;
} else {
// 套票
dest.package = true;
}
// 虚拟商品(门票)
if (origin.attribute * 1 === 3) {
dest.tickets = true;
dest.ticketsConfirm = helpers.urlFormat('/cart/index/ticketsConfirm');
// 展览票
if (origin.product_skn * 1 === SINGLE_TICKETS_SKN) {
dest.single = true;
} else {
// 套票
dest.package = true;
}
// 购票限制
dest.cartInfo.limit = 4;
// 购票限制
dest.cartInfo.limit = 4;
// 清空活动
dest.goodsDiscount = [];
// 清空活动
dest.goodsDiscount = [];
// 来自登录页,自动弹出选择框
// if (isset($_GET['product_type']) && $_GET['product_type'] == 'ticket') {
// $result['showPannel'] = true;
// }
// 来自登录页,自动弹出选择框
// if (isset($_GET['product_type']) && $_GET['product_type'] == 'ticket') {
// $result['showPannel'] = true;
// }
}
dest.id = origin.product_id;
dest.goodsId = origin.goods_id;
return Promise.resolve(dest);
}
dest.id = origin.product_id;
dest.goodsId = origin.goods_id;
return dest;
};
module.exports = {
getProductData,
... ...
... ... @@ -16,7 +16,7 @@ module.exports = {
siteUrl: '//m.yohobuy.com',
assetUrl: '//localhost:5001',
domains: {
api: 'http://api.yoho.cn/',
api: 'http://dev-api.yohops.com:9999/',
service: 'http://service.yoho.cn/',
liveApi: 'http://testapi.live.yohops.com:9999/',
singleApi: 'http://single.yoho.cn/'
... ...
... ... @@ -5,13 +5,15 @@ var $ = require('yoho-jquery'),
module.exports = function(callback) {
var productId = $('#productId').val();
var goodsId = $('#goodsId').val();
if (productId && goodsId) {
var productSkn = $('#productSkn').val();
if (productId && (goodsId || productSkn)) {
$.ajax({
type: 'POST',
url: '/product/detail/info',
data: {
id: productId,
goodsId: goodsId
goodsId: goodsId,
productSkn: productSkn
},
success: function(data) {
render(data);
... ... @@ -26,7 +28,7 @@ function render(data) {
$('.goods-price>.previous-price').text(data.goodsPrice.previousPrice);
$('.goods-price').removeClass(dbClass);
}
if (data.noLimitGoodsBtn) {
if (!data.noLimitGoodsBtn) {
if (data.canGetLimitCode) {
$('.data-can-get-limit-code').removeClass(dbClass);
}
... ...