payment-process.js
4.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
'use strict';
const helpers = global.yoho.helpers;
const _ = require('lodash');
/**
* 转换 原始结算数据 ,适应模板
* TODO: 其他结算,如果有 相似的 结构,可以移出去
* @param data 结算页面数据
* @param orderInfo
* orderInfo.paymentType 用户支付常用方式
*/
function tranformPayment(data, orderInfo) {
orderInfo = orderInfo || {};
let result = {};
// delivery_address 中 提取信息
if (data.hasOwnProperty('delivery_address') && !_.isEmpty(data.delivery_address)) {
let addressData = data.delivery_address;
result.name = addressData.consignee;
result.phoneNum = addressData.mobile;
result.addressId = addressData.address_id;
result.addressInfo = [addressData.area, addressData.address].join(' ');
}
// delivery_way 配送信息
if (data.delivery_way) {
let deliveryWay = data.delivery_way;
deliveryWay = deliveryWay
.filter(obj => obj.is_support === 'Y')
.map(way => {
return {
id: way.delivery_way_id,
name: way.delivery_way_name,
cost: way.delivery_way_cost,
isSelected: way.default === 'Y'
};
});
result.dispatchMode = deliveryWay;
}
// delivery_time 配送时间
if (data.delivery_time) {
let times = data.delivery_time;
times = times.map(time => {
return {
isSelected: time.default === 'Y',
id: time.delivery_time_id,
name: time.delivery_time_string
};
});
result.dispatchTime = times;
}
// goods_list 订单商品
if (data.goods_list) {
let goods = data.goods_list;
let goodsPrice = 0;
goods = goods.map(good => {
var obj = {};
obj.id = good.product_sku;
obj.thumb = helpers.image(good.goods_images, 120, 160);
obj.name = good.product_name;
obj.color = good.color_name;
obj.size = good.size_name;
obj.count = good.buy_number;
obj.price = good.last_price;
obj.isLimitSkn = good.is_limited === 'Y';
if (good.good_type === 'gift' && good.is_advance === 'Y') {
obj.gift = true;
obj.price = good.sale_price;
} else if (good.good_type === 'price_gift') { // eslint-disable-line
obj.advanceBuy = true;
obj.price = good.sale_price;
}
// Total Price
goodsPrice += obj.count * obj.price;
return obj;
});
result.goods = goods;
result.goodsPrice = goodsPrice;
}
// 支付方式
if (data.payment_way) {
let payway = data.payment_way;
payway = payway.filter(obj => obj.is_support === 'Y')
.map(way => {
let obj = {};
obj.id = way.payment_id;
obj.paymentType = way.payment_type;
obj.name = way.payment_type_name;
obj.isSupport = way.is_support === 'Y';
return obj;
});
payway.some(way => {
let bool = way.paymentType === orderInfo.paymentType;
if (bool) {
way.recommend = true;
}
return bool;
}) || (payway[0].recommend = true);
result.paymentWay = payway;
}
// 有货币
result.yohoCoin = data.yoho_coin;
result.useYohoCoin = Boolean(data.use_yoho_coin);
// 发票
if (data.invoices) {
let invTypes = data.invoices.invoiceContentList || [];
invTypes = invTypes.map(type => {
return {
id: type.invoices_type_id,
name: type.invoices_type_name
};
});
result.invoice = invTypes;
if (result.invoice.length) {
result.needInvoice = orderInfo.invoice;
result.invoiceText = orderInfo.invoiceText;
}
}
// 留言
orderInfo.msg && (result.msg = orderInfo.msg);
// 订单数据
if (data.shopping_cart_data) {
let cartData = data.shopping_cart_data;
// 拆单逻辑 not here
// you can add to here , if you need
// 这块数据处理, 要改写,请参照Cart.php @cartPay
// -----------------------
result.cartPayData = cartData.promotion_formula_list;
result.num = cartData.goods_count;
result.goodsPrice = cartData.str_order_amount;
result.price = cartData.last_order_amount;
if (cartData.gain_yoho_coin > 0) {
result.yohoCoinNum = cartData.gain_yoho_coin;
result.returnYohoCoin = true;
}
}
// 优惠券 not here
// 你可以在此添加, 但不是所有的结算类型都需要购物券.
// 也可以在函数的返回值上追加
// -----------------------
return result;
}
module.exports = {
tranformPayment
};