|
@@ -8,11 +8,13 @@ const seckillModel = require('../models/seckill'); |
|
@@ -8,11 +8,13 @@ const seckillModel = require('../models/seckill'); |
8
|
const headerModel = require('../../../doraemon/models/header'); // 头部model
|
8
|
const headerModel = require('../../../doraemon/models/header'); // 头部model
|
9
|
|
9
|
|
10
|
const BAD_REQUEST = '非法请求';
|
10
|
const BAD_REQUEST = '非法请求';
|
|
|
11
|
+const SLAT = 'yohobuyseckill98';
|
11
|
|
12
|
|
12
|
exports.ensure = (req, res, next) => {
|
13
|
exports.ensure = (req, res, next) => {
|
13
|
const sku = Number.parseInt(req.query.sku, 10);
|
14
|
const sku = Number.parseInt(req.query.sku, 10);
|
14
|
const skn = Number.parseInt(req.query.skn, 10);
|
15
|
const skn = Number.parseInt(req.query.skn, 10);
|
15
|
const uid = req.user.uid;
|
16
|
const uid = req.user.uid;
|
|
|
17
|
+ let activityId;
|
16
|
|
18
|
|
17
|
let orderInfo = req.cookies['order-info'];
|
19
|
let orderInfo = req.cookies['order-info'];
|
18
|
|
20
|
|
|
@@ -24,7 +26,7 @@ exports.ensure = (req, res, next) => { |
|
@@ -24,7 +26,7 @@ exports.ensure = (req, res, next) => { |
24
|
|
26
|
|
25
|
// require skn, sku;
|
27
|
// require skn, sku;
|
26
|
if (!(sku && skn)) {
|
28
|
if (!(sku && skn)) {
|
27
|
- return next('error');
|
29
|
+ return next();
|
28
|
}
|
30
|
}
|
29
|
|
31
|
|
30
|
co(function*() {
|
32
|
co(function*() {
|
|
@@ -38,14 +40,20 @@ exports.ensure = (req, res, next) => { |
|
@@ -38,14 +40,20 @@ exports.ensure = (req, res, next) => { |
38
|
let skillData = yield seckillModel.skillData(skn); // 根据skn查活动信息
|
40
|
let skillData = yield seckillModel.skillData(skn); // 根据skn查活动信息
|
39
|
|
41
|
|
40
|
skillData = skillData.data;
|
42
|
skillData = skillData.data;
|
|
|
43
|
+
|
|
|
44
|
+ // 不在秒杀中
|
|
|
45
|
+ if (skillData && (skillData.status !== 2)) {
|
|
|
46
|
+ return res.redirect('/product/seckill');
|
|
|
47
|
+ }
|
|
|
48
|
+
|
41
|
if (!(
|
49
|
if (!(
|
42
|
skillData &&
|
50
|
skillData &&
|
43
|
- skillData.status &&
|
|
|
44
|
skillData.secKillSku.some(obj => obj.productSku === sku) // skn has sku;
|
51
|
skillData.secKillSku.some(obj => obj.productSku === sku) // skn has sku;
|
45
|
)) {
|
52
|
)) {
|
46
|
return Promise.reject('活动不存在');
|
53
|
return Promise.reject('活动不存在');
|
47
|
}
|
54
|
}
|
48
|
- paymentOption.activity_id = skillData.activityId;
|
55
|
+
|
|
|
56
|
+ paymentOption.activity_id = activityId = skillData.activityId;
|
49
|
|
57
|
|
50
|
// 获取结算 数据
|
58
|
// 获取结算 数据
|
51
|
let paymentInfo = yield seckillModel.payment(paymentOption, orderInfo);
|
59
|
let paymentInfo = yield seckillModel.payment(paymentOption, orderInfo);
|
|
@@ -74,7 +82,8 @@ exports.ensure = (req, res, next) => { |
|
@@ -74,7 +82,8 @@ exports.ensure = (req, res, next) => { |
74
|
res.render('order-ensure', Object.assign({
|
82
|
res.render('order-ensure', Object.assign({
|
75
|
pageHeader: headerModel.setNav({
|
83
|
pageHeader: headerModel.setNav({
|
76
|
navTitle: '确认订单'
|
84
|
navTitle: '确认订单'
|
77
|
- })
|
85
|
+ }),
|
|
|
86
|
+ cartToken: crypto.encryption(SLAT, [sku, activityId].join(''))
|
78
|
}, view));
|
87
|
}, view));
|
79
|
})().catch(next);
|
88
|
})().catch(next);
|
80
|
};
|
89
|
};
|
|
@@ -123,12 +132,19 @@ exports.submit = (req, res, next) => { |
|
@@ -123,12 +132,19 @@ exports.submit = (req, res, next) => { |
123
|
deliveryTime = Number.parseInt(req.body.deliveryTime, 10),
|
132
|
deliveryTime = Number.parseInt(req.body.deliveryTime, 10),
|
124
|
deliveryWay = Number.parseInt(req.body.deliveryWay, 10),
|
133
|
deliveryWay = Number.parseInt(req.body.deliveryWay, 10),
|
125
|
paymentId = Number.parseInt(req.body.paymentId, 10),
|
134
|
paymentId = Number.parseInt(req.body.paymentId, 10),
|
126
|
- paymentType = Number.parseInt(req.body.paymentType, 10);
|
135
|
+ paymentType = Number.parseInt(req.body.paymentType, 10),
|
|
|
136
|
+ token = req.body.cartToken;
|
127
|
|
137
|
|
128
|
let addressId = req.body.addressId || '';
|
138
|
let addressId = req.body.addressId || '';
|
129
|
|
139
|
|
130
|
if (!req.xhr) {
|
140
|
if (!req.xhr) {
|
131
|
- return next(404);
|
141
|
+ return next();
|
|
|
142
|
+ }
|
|
|
143
|
+
|
|
|
144
|
+ let compareToken = crypto.encryption(SLAT, [sku, activityId].join(''));
|
|
|
145
|
+
|
|
|
146
|
+ if (token !== compareToken) {
|
|
|
147
|
+ return next();
|
132
|
}
|
148
|
}
|
133
|
|
149
|
|
134
|
if (!addressId) {
|
150
|
if (!addressId) {
|