...
|
...
|
@@ -2,9 +2,20 @@ |
|
|
const _ = require('lodash');
|
|
|
const helpers = global.yoho.helpers;
|
|
|
const cartModel = require('../models/cart');
|
|
|
const headerModel = require('../../../doraemon/models/header');
|
|
|
const userModel = require('../../serverAPI/user');
|
|
|
const addressModel = require('../../serverAPI/user/address');
|
|
|
|
|
|
|
|
|
exports.orderEnsure = (req, res, next) => {
|
|
|
req.locals.width750 = true;
|
|
|
req.locals.title = '确认订单';
|
|
|
|
|
|
let headerData = headerModel.setNav({
|
|
|
navTitle: '确认订单',
|
|
|
navBtn: false
|
|
|
});
|
|
|
|
|
|
let uid = req.user.uid;
|
|
|
let returnUrl = helpers.urlFormat('/cart/index/new');
|
|
|
let cartType = req.query.cartType || 'ordinary';
|
...
|
...
|
@@ -16,6 +27,12 @@ exports.orderEnsure = (req, res, next) => { |
|
|
orderInfo = {};
|
|
|
}
|
|
|
|
|
|
let cookieCartType = _.get(orderInfo, 'cartType');
|
|
|
|
|
|
if (cookieCartType) {
|
|
|
cartType = cookieCartType;
|
|
|
}
|
|
|
|
|
|
// 如果传递了code, skn, sku, buy_number 就代表限购商品
|
|
|
let limitProductCode = req.query.limitproductcode || '';
|
|
|
let sku = req.query.sku || '';
|
...
|
...
|
@@ -23,14 +40,52 @@ exports.orderEnsure = (req, res, next) => { |
|
|
let buyNumber = req.query.buy_number || 1;
|
|
|
|
|
|
if (limitProductCode) {
|
|
|
returnUrl = req.get('Referer') || returnUrl;
|
|
|
headerData.backUrl = req.get('Referer') || returnUrl;
|
|
|
}
|
|
|
|
|
|
let order = cartModel.cartPay(uid, cartType, orderInfo, sku, skn, buyNumber, req.xhr);
|
|
|
let userProfile = userModel.queryProfile(uid);
|
|
|
let address = addressModel.addressData(uid);
|
|
|
|
|
|
return Promise.all([order, userProfile, address])
|
|
|
.then(
|
|
|
result => {
|
|
|
order = result[0];
|
|
|
userProfile = result[1];
|
|
|
address = result[2];
|
|
|
|
|
|
if (order.cartUrl) { // TODO? 普通或者预售商品为空时, BUT WHEN AJAX?
|
|
|
return res.redirect(order.cartUrl);
|
|
|
}
|
|
|
|
|
|
if (req.xhr) {
|
|
|
return res.json(order);
|
|
|
}
|
|
|
|
|
|
// 获取用户完整手机号
|
|
|
let mobile = _.get(userProfile, 'data.mobile', '');
|
|
|
let orderAddress = _.get(order, 'address', []);
|
|
|
let addressList = _.get(address, 'data', []);
|
|
|
|
|
|
orderAddress.length && addressList.forEach(address => { //eslint-disable-line
|
|
|
if (address.address_id === orderAddress.address_id) {
|
|
|
mobile = address.mobile;
|
|
|
}
|
|
|
});
|
|
|
|
|
|
cartModel.cartPay(uid, cartType, orderInfo, sku, skn, buyNumber, req.xhr)
|
|
|
.then(order => {
|
|
|
let viewData = {
|
|
|
orderEnsurePage: true,
|
|
|
isOrdinaryCart: cartType !== 'advance',
|
|
|
orderEnsure: order,
|
|
|
userMobile: mobile
|
|
|
};
|
|
|
|
|
|
})
|
|
|
viewData.pageHader = headerData;
|
|
|
viewData.pageFooter = true;
|
|
|
|
|
|
res.render('order-ensure', viewData);
|
|
|
}
|
|
|
)
|
|
|
.catch(next);
|
|
|
|
|
|
res.send('todo: orderEnsure');
|
|
|
}; |
...
|
...
|
|