...
|
...
|
@@ -10,6 +10,7 @@ const BuyNowModel = require('../models/buy-now-model'); |
|
|
const addressModel = require('../models/address');
|
|
|
const userModel = require('../models/user');
|
|
|
const orderModel = require('../models/order');
|
|
|
const shoppingAPI = require('../models/shopping');
|
|
|
const utils = '../../../utils';
|
|
|
const paymentProcess = require(`${utils}/payment-process`);
|
|
|
const crypto = global.yoho.crypto;
|
...
|
...
|
@@ -30,6 +31,7 @@ class BuyNowController { |
|
|
*/
|
|
|
orderEnsure(req, res, next) {
|
|
|
let orderInfo;
|
|
|
let uid = req.user.uid;
|
|
|
|
|
|
try {
|
|
|
orderInfo = JSON.parse(req.cookies.buynow_info);
|
...
|
...
|
@@ -51,30 +53,35 @@ class BuyNowController { |
|
|
}
|
|
|
|
|
|
co(function * () {
|
|
|
let result = yield req.ctx(BuyNowModel).payment({
|
|
|
uid: req.user.uid,
|
|
|
product_sku: product_sku,
|
|
|
sku_type: req.query.sku_type,
|
|
|
buy_number: buy_number,
|
|
|
yoho_coin_mode: parseInt(orderInfo.use_yoho_coin, 10) > 0 ? 1 : 0
|
|
|
});
|
|
|
let computeData = yield req.ctx(BuyNowModel).compute({
|
|
|
uid: req.user.uid,
|
|
|
product_sku: product_sku,
|
|
|
sku_type: req.query.sku_type,
|
|
|
buy_number: buy_number,
|
|
|
payment_type: orderInfo.payment_type,
|
|
|
delivery_way: orderInfo.delivery_way,
|
|
|
use_yoho_coin: parseInt(orderInfo.use_yoho_coin, 10),
|
|
|
coupon_code: orderInfo.coupon_code,
|
|
|
promotion_code: orderInfo.promotion_code
|
|
|
});
|
|
|
let validCouponCount = yield req.ctx(BuyNowModel).countUsableCoupon({
|
|
|
uid: req.user.uid,
|
|
|
product_sku: req.query.product_sku,
|
|
|
sku_type: req.query.sku_type,
|
|
|
buy_number: buy_number
|
|
|
});
|
|
|
let [result, computeData, validCouponCount, validGiftCardCount] = yield Promise.all([
|
|
|
req.ctx(BuyNowModel).payment({
|
|
|
uid: uid,
|
|
|
product_sku: product_sku,
|
|
|
sku_type: req.query.sku_type,
|
|
|
buy_number: buy_number,
|
|
|
yoho_coin_mode: parseInt(orderInfo.use_yoho_coin, 10) > 0 ? 1 : 0
|
|
|
}),
|
|
|
req.ctx(BuyNowModel).compute({
|
|
|
uid: uid,
|
|
|
product_sku: product_sku,
|
|
|
sku_type: req.query.sku_type,
|
|
|
buy_number: buy_number,
|
|
|
payment_type: orderInfo.payment_type,
|
|
|
delivery_way: orderInfo.delivery_way,
|
|
|
use_yoho_coin: parseInt(orderInfo.use_yoho_coin, 10),
|
|
|
coupon_code: orderInfo.coupon_code,
|
|
|
gift_card_code: orderInfo.gift_card_code,
|
|
|
promotion_code: orderInfo.promotion_code
|
|
|
}),
|
|
|
req.ctx(BuyNowModel).countUsableCoupon({
|
|
|
uid: uid,
|
|
|
product_sku: req.query.product_sku,
|
|
|
sku_type: req.query.sku_type,
|
|
|
buy_number: buy_number
|
|
|
}),
|
|
|
shoppingAPI.countUsableGiftCard(uid) // 可用礼品卡数量
|
|
|
]);
|
|
|
|
|
|
let headerData = headerModel.setNav({
|
|
|
navTitle: '确认订单',
|
|
|
navBtn: false
|
...
|
...
|
@@ -104,7 +111,11 @@ class BuyNowController { |
|
|
buy_number: buy_number
|
|
|
}),
|
|
|
isOrdinaryCart: true,
|
|
|
choseGiftCard: helpers.urlFormat('/cart/index/buynow/selectGiftcard')
|
|
|
choseGiftCard: helpers.urlFormat('/cart/index/buynow/selectGiftcard'),
|
|
|
giftCards: paymentProcess.handleGiftCards({
|
|
|
validGiftCardCount: _.get(validGiftCardCount, 'data.count', 0),
|
|
|
orderCompute: computeData.data
|
|
|
})
|
|
|
}
|
|
|
);
|
|
|
|
...
|
...
|
@@ -116,7 +127,8 @@ class BuyNowController { |
|
|
width750: true,
|
|
|
localCss: true,
|
|
|
product_sku: product_sku,
|
|
|
orderEnsure: orderEnsure
|
|
|
orderEnsure: orderEnsure,
|
|
|
userMobile: _.get(orderEnsure, 'phoneNum', '')
|
|
|
});
|
|
|
|
|
|
})().catch(next);
|
...
|
...
|
@@ -156,8 +168,12 @@ class BuyNowController { |
|
|
*/
|
|
|
orderSub(req, res, next) {
|
|
|
let uid = req.user.uid;
|
|
|
let udid = req.sessionID || 'yoho';
|
|
|
let verifyCode = req.body.verifyCode || null;
|
|
|
|
|
|
let params = {
|
|
|
uid: uid,
|
|
|
udid: udid,
|
|
|
product_sku: req.body.product_sku,
|
|
|
sku_type: req.body.sku_type,
|
|
|
buy_number: req.body.buy_number,
|
...
|
...
|
@@ -210,6 +226,24 @@ class BuyNowController { |
|
|
}
|
|
|
|
|
|
co(function * () {
|
|
|
// 使用礼品卡,发送验证码
|
|
|
if (params.gift_card_code) {
|
|
|
if (!verifyCode) {
|
|
|
yield orderModel.giftCardSendSms(uid);
|
|
|
|
|
|
return res.json({
|
|
|
code: 411
|
|
|
});
|
|
|
} else {
|
|
|
let verifyResult = yield orderModel.validRegCode({
|
|
|
uid, verifyCode, udid
|
|
|
});
|
|
|
|
|
|
if (verifyResult.code !== 200) {
|
|
|
return res.json(verifyResult);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
let result = yield req.ctx(BuyNowModel).submit(params);
|
|
|
|
|
|
// 提交成功清除Cookie
|
...
|
...
|
@@ -322,20 +356,51 @@ class BuyNowController { |
|
|
/**
|
|
|
* 选择礼品卡页面
|
|
|
*/
|
|
|
selectGiftcard(req, res) {
|
|
|
selectGiftcard(req, res, next) {
|
|
|
let headerData = headerModel.setNav({
|
|
|
navTitle: '礼品卡',
|
|
|
navBtn: false
|
|
|
});
|
|
|
let uid = req.user.uid;
|
|
|
|
|
|
res.render('select-giftcard', {
|
|
|
module: 'cart',
|
|
|
page: 'buynow-select-giftcard',
|
|
|
title: '礼品卡',
|
|
|
pageHeader: headerData,
|
|
|
pageFooter: false,
|
|
|
localCss: true
|
|
|
});
|
|
|
co(function* () {
|
|
|
let usable_giftCards = []; // 可用礼品卡列表
|
|
|
let sureActice = false; // 确认按钮状态
|
|
|
let giftCardsData = yield shoppingAPI.listGiftCard(uid);
|
|
|
let usableGiftCardsOrigin = _.get(giftCardsData, 'data.usable_giftCards', false);
|
|
|
|
|
|
if (usableGiftCardsOrigin) {
|
|
|
let orderInfo;
|
|
|
|
|
|
try {
|
|
|
orderInfo = JSON.parse(req.cookies.buynow_info);
|
|
|
} catch (e) {
|
|
|
logger.info(`orderEnsure: get buynow_info from cookie error:${JSON.stringify(e)}`);
|
|
|
orderInfo = {};
|
|
|
res.clearCookie('buynow_info', actCkOpthn);
|
|
|
}
|
|
|
|
|
|
let handleResult = paymentProcess.handleGiftCardsRender(usableGiftCardsOrigin,
|
|
|
_.get(orderInfo, 'gift_card_code'));
|
|
|
|
|
|
usable_giftCards = handleResult.giftCards;
|
|
|
sureActice = handleResult.sureActice;
|
|
|
}
|
|
|
|
|
|
res.render('select-giftcard', {
|
|
|
module: 'cart',
|
|
|
page: 'buynow-select-giftcard',
|
|
|
title: '礼品卡',
|
|
|
pageHeader: _.assign(headerData, {
|
|
|
useGiftCard: true
|
|
|
}),
|
|
|
pageFooter: false,
|
|
|
localCss: true,
|
|
|
width750: true,
|
|
|
usable_giftCards: usable_giftCards,
|
|
|
sureActice: sureActice
|
|
|
});
|
|
|
})().catch(next);
|
|
|
}
|
|
|
|
|
|
/**
|
...
|
...
|
|