Showing
6 changed files
with
882 additions
and
906 deletions
@@ -26,7 +26,7 @@ exports.address = (req, res, next) => { | @@ -26,7 +26,7 @@ exports.address = (req, res, next) => { | ||
26 | title: '地址管理' | 26 | title: '地址管理' |
27 | }; | 27 | }; |
28 | 28 | ||
29 | - addressModel.address({ | 29 | + req.ctx(addressModel).address({ |
30 | uid: req.user.uid | 30 | uid: req.user.uid |
31 | }).then(result => { | 31 | }).then(result => { |
32 | res.render('address/index', Object.assign(responseData, result)); | 32 | res.render('address/index', Object.assign(responseData, result)); |
@@ -41,7 +41,7 @@ exports.address = (req, res, next) => { | @@ -41,7 +41,7 @@ exports.address = (req, res, next) => { | ||
41 | * @param next | 41 | * @param next |
42 | */ | 42 | */ |
43 | exports.addressJson = (req, res, next) => { | 43 | exports.addressJson = (req, res, next) => { |
44 | - addressModel.address({ | 44 | + req.ctx(addressModel).address({ |
45 | uid: req.user.uid | 45 | uid: req.user.uid |
46 | }).then(result => { | 46 | }).then(result => { |
47 | if (result && result.address) { | 47 | if (result && result.address) { |
@@ -61,7 +61,7 @@ exports.addressJson = (req, res, next) => { | @@ -61,7 +61,7 @@ exports.addressJson = (req, res, next) => { | ||
61 | * @param next | 61 | * @param next |
62 | */ | 62 | */ |
63 | exports.addressAct = (req, res, next) => { | 63 | exports.addressAct = (req, res, next) => { |
64 | - addressModel.address({ | 64 | + req.ctx(addressModel).address({ |
65 | id: req.query.id ? decodeURIComponent(req.query.id) : null, | 65 | id: req.query.id ? decodeURIComponent(req.query.id) : null, |
66 | uid: req.user.uid | 66 | uid: req.user.uid |
67 | }).then(result => { | 67 | }).then(result => { |
@@ -86,7 +86,7 @@ exports.addressAct = (req, res, next) => { | @@ -86,7 +86,7 @@ exports.addressAct = (req, res, next) => { | ||
86 | * 地址数据 | 86 | * 地址数据 |
87 | */ | 87 | */ |
88 | exports.newGetAddress = (req, res, next) => { | 88 | exports.newGetAddress = (req, res, next) => { |
89 | - addressModel.newGetAddress({ | 89 | + req.ctx(addressModel).newGetAddress({ |
90 | id: req.query.id | 90 | id: req.query.id |
91 | }).then(result => { | 91 | }).then(result => { |
92 | res.json(result); | 92 | res.json(result); |
@@ -141,7 +141,7 @@ exports.saveAddress = (req, res, next) => { | @@ -141,7 +141,7 @@ exports.saveAddress = (req, res, next) => { | ||
141 | // }); | 141 | // }); |
142 | // } | 142 | // } |
143 | 143 | ||
144 | - addressModel.saveAddress({ | 144 | + req.ctx(addressModel).saveAddress({ |
145 | uid: req.user.uid, | 145 | uid: req.user.uid, |
146 | address: req.body.address, | 146 | address: req.body.address, |
147 | area_code: req.body.area_code, | 147 | area_code: req.body.area_code, |
@@ -162,7 +162,7 @@ exports.saveAddress = (req, res, next) => { | @@ -162,7 +162,7 @@ exports.saveAddress = (req, res, next) => { | ||
162 | * @param next | 162 | * @param next |
163 | */ | 163 | */ |
164 | exports.delAddress = (req, res, next) => { | 164 | exports.delAddress = (req, res, next) => { |
165 | - addressModel.delAddress({ | 165 | + req.ctx(addressModel).delAddress({ |
166 | id: decodeURIComponent(req.body.id), | 166 | id: decodeURIComponent(req.body.id), |
167 | uid: req.user.uid | 167 | uid: req.user.uid |
168 | }).then(result => { | 168 | }).then(result => { |
@@ -177,7 +177,7 @@ exports.delAddress = (req, res, next) => { | @@ -177,7 +177,7 @@ exports.delAddress = (req, res, next) => { | ||
177 | * @param next | 177 | * @param next |
178 | */ | 178 | */ |
179 | exports.defaultAddress = (req, res, next) => { | 179 | exports.defaultAddress = (req, res, next) => { |
180 | - addressModel.setDefaultAddress({ | 180 | + req.ctx(addressModel).setDefaultAddress({ |
181 | uid: req.user.uid, | 181 | uid: req.user.uid, |
182 | id: req.body.id | 182 | id: req.body.id |
183 | }).then(result => { | 183 | }).then(result => { |
@@ -203,7 +203,7 @@ exports.addressModify = (req, res, next) => { | @@ -203,7 +203,7 @@ exports.addressModify = (req, res, next) => { | ||
203 | pageFooter: true | 203 | pageFooter: true |
204 | }; | 204 | }; |
205 | 205 | ||
206 | - addressModel.address({ | 206 | + req.ctx(addressModel).address({ |
207 | uid: req.user.uid | 207 | uid: req.user.uid |
208 | }).then(result => { | 208 | }).then(result => { |
209 | res.render('address/address-modify', Object.assign(responseData, result, { | 209 | res.render('address/address-modify', Object.assign(responseData, result, { |
@@ -225,7 +225,7 @@ exports.locationList = (req, res, next) => { | @@ -225,7 +225,7 @@ exports.locationList = (req, res, next) => { | ||
225 | 'Cache-Control': 'max-age=600' | 225 | 'Cache-Control': 'max-age=600' |
226 | }); | 226 | }); |
227 | 227 | ||
228 | - addressModel.locationList({ | 228 | + req.ctx(addressModel).locationList({ |
229 | uid: req.user.uid | 229 | uid: req.user.uid |
230 | }).then(result => { | 230 | }).then(result => { |
231 | res.render('address/location-list', Object.assign(result, { layout: false })); | 231 | res.render('address/location-list', Object.assign(result, { layout: false })); |
@@ -251,7 +251,7 @@ exports.chooseAddress = (req, res, next) => { | @@ -251,7 +251,7 @@ exports.chooseAddress = (req, res, next) => { | ||
251 | }); | 251 | }); |
252 | } | 252 | } |
253 | 253 | ||
254 | - addressModel.chooseAddress(orderCode, addressId, uid).then(result => { | 254 | + req.ctx(addressModel).chooseAddress(orderCode, addressId, uid).then(result => { |
255 | res.json(result); | 255 | res.json(result); |
256 | }).catch(next); | 256 | }).catch(next); |
257 | }; | 257 | }; |
@@ -35,9 +35,9 @@ exports.order = (req, res, next) => { | @@ -35,9 +35,9 @@ exports.order = (req, res, next) => { | ||
35 | }; | 35 | }; |
36 | 36 | ||
37 | return Promise.all([ | 37 | return Promise.all([ |
38 | - orderModel.order(params), | ||
39 | - orderModel.getOrders(initialData), | ||
40 | - orderModel.refundReason() | 38 | + req.ctx(orderModel).order(params), |
39 | + req.ctx(orderModel).getOrders(initialData), | ||
40 | + req.ctx(orderModel).refundReason() | ||
41 | ]).then(result => { | 41 | ]).then(result => { |
42 | // 申请退款原因 | 42 | // 申请退款原因 |
43 | let refundReason = result[2]; | 43 | let refundReason = result[2]; |
@@ -78,7 +78,7 @@ exports.getOrders = (req, res, next) => { | @@ -78,7 +78,7 @@ exports.getOrders = (req, res, next) => { | ||
78 | uid: req.user.uid | 78 | uid: req.user.uid |
79 | }; | 79 | }; |
80 | 80 | ||
81 | - orderModel.getOrders(params).then(result => { | 81 | + req.ctx(orderModel).getOrders(params).then(result => { |
82 | if (result && parseInt(params.page, 10) === 1 && parseInt(start, 10) > 0) { | 82 | if (result && parseInt(params.page, 10) === 1 && parseInt(start, 10) > 0) { |
83 | result = result.slice(start || 0); | 83 | result = result.slice(start || 0); |
84 | } | 84 | } |
@@ -103,7 +103,7 @@ exports.sure = (req, res, next) => { | @@ -103,7 +103,7 @@ exports.sure = (req, res, next) => { | ||
103 | }); | 103 | }); |
104 | } | 104 | } |
105 | 105 | ||
106 | - orderModel.sure({ | 106 | + req.ctx(orderModel).sure({ |
107 | order_code: orderCode, | 107 | order_code: orderCode, |
108 | uid: uid | 108 | uid: uid |
109 | }).then(result => { | 109 | }).then(result => { |
@@ -15,7 +15,7 @@ const payModel = require('../../cart/models/pay'); | @@ -15,7 +15,7 @@ const payModel = require('../../cart/models/pay'); | ||
15 | const addressModel = require('../models/address'); | 15 | const addressModel = require('../models/address'); |
16 | const addressProcess = require(global.utils + '/address-process'); | 16 | const addressProcess = require(global.utils + '/address-process'); |
17 | 17 | ||
18 | -const orderDetailData = (req, res, next) => { | 18 | +exports.orderDetailData = (req, res, next) => { |
19 | let uid = req.user.uid; | 19 | let uid = req.user.uid; |
20 | let orderCode = req.query.order_code; | 20 | let orderCode = req.query.order_code; |
21 | let serviceUrl = helpers.urlFormat('/service/im'); | 21 | let serviceUrl = helpers.urlFormat('/service/im'); |
@@ -26,9 +26,9 @@ const orderDetailData = (req, res, next) => { | @@ -26,9 +26,9 @@ const orderDetailData = (req, res, next) => { | ||
26 | } | 26 | } |
27 | 27 | ||
28 | Promise.all([ | 28 | Promise.all([ |
29 | - orderDetailModel.orderDetailData(uid, orderCode), | ||
30 | - orderDetailModel.closeReasons(), | ||
31 | - orderModel.refundReason() | 29 | + req.ctx(orderDetailModel).orderDetailData(uid, orderCode), |
30 | + req.ctx(orderDetailModel).closeReasons(), | ||
31 | + req.ctx(orderModel).refundReason() | ||
32 | ]).then(result => { | 32 | ]).then(result => { |
33 | let orderDetail = result[0]; | 33 | let orderDetail = result[0]; |
34 | let cancelReason = result[1]; | 34 | let cancelReason = result[1]; |
@@ -60,27 +60,27 @@ const orderDetailData = (req, res, next) => { | @@ -60,27 +60,27 @@ const orderDetailData = (req, res, next) => { | ||
60 | }; | 60 | }; |
61 | 61 | ||
62 | // 删除订单 | 62 | // 删除订单 |
63 | -const delOrder = (req, res, next) => { | 63 | +exports.delOrder = (req, res, next) => { |
64 | let orderCode = req.query.id; | 64 | let orderCode = req.query.id; |
65 | let uid = req.user.uid; | 65 | let uid = req.user.uid; |
66 | 66 | ||
67 | - orderDetailModel.delOrder(orderCode, uid).then((result) => { | 67 | + req.ctx(orderDetailModel).delOrder(orderCode, uid).then((result) => { |
68 | res.json(result); | 68 | res.json(result); |
69 | }).catch(next); | 69 | }).catch(next); |
70 | }; | 70 | }; |
71 | 71 | ||
72 | // 再次购买 | 72 | // 再次购买 |
73 | -const readdData = (req, res, next) => { | 73 | +exports.readdData = (req, res, next) => { |
74 | let orderCode = req.query.orderCode; | 74 | let orderCode = req.query.orderCode; |
75 | let uid = req.user.uid; | 75 | let uid = req.user.uid; |
76 | 76 | ||
77 | - orderDetailModel.readdData(orderCode, uid).then((result) => { | 77 | + req.ctx(orderDetailModel).readdData(orderCode, uid).then((result) => { |
78 | res.json(result); | 78 | res.json(result); |
79 | }).catch(next); | 79 | }).catch(next); |
80 | }; | 80 | }; |
81 | 81 | ||
82 | // 取消订单 | 82 | // 取消订单 |
83 | -const cancelOrder = (req, res, next) => { | 83 | +exports.cancelOrder = (req, res, next) => { |
84 | let orderCode = req.query.id; | 84 | let orderCode = req.query.id; |
85 | let uid = req.user.uid; | 85 | let uid = req.user.uid; |
86 | let reasonId = req.query.reasonId || 1; | 86 | let reasonId = req.query.reasonId || 1; |
@@ -88,7 +88,7 @@ const cancelOrder = (req, res, next) => { | @@ -88,7 +88,7 @@ const cancelOrder = (req, res, next) => { | ||
88 | let channel = req.query.channel || 1; | 88 | let channel = req.query.channel || 1; |
89 | let reason = req.query.reason; | 89 | let reason = req.query.reason; |
90 | 90 | ||
91 | - orderDetailModel.cancelOrder(orderCode, uid, reasonId, gender, channel, reason).then((result) => { | 91 | + req.ctx(orderDetailModel).cancelOrder(orderCode, uid, reasonId, gender, channel, reason).then((result) => { |
92 | res.json(result); | 92 | res.json(result); |
93 | }).catch(next); | 93 | }).catch(next); |
94 | }; | 94 | }; |
@@ -96,7 +96,7 @@ const cancelOrder = (req, res, next) => { | @@ -96,7 +96,7 @@ const cancelOrder = (req, res, next) => { | ||
96 | /** | 96 | /** |
97 | * 申请退款 | 97 | * 申请退款 |
98 | */ | 98 | */ |
99 | -const refundApply = (req, res, next) => { | 99 | +exports.refundApply = (req, res, next) => { |
100 | let orderCode = req.query.id; | 100 | let orderCode = req.query.id; |
101 | 101 | ||
102 | if (!orderCode) { | 102 | if (!orderCode) { |
@@ -105,7 +105,7 @@ const refundApply = (req, res, next) => { | @@ -105,7 +105,7 @@ const refundApply = (req, res, next) => { | ||
105 | msg: '订单号不存在!' | 105 | msg: '订单号不存在!' |
106 | }); | 106 | }); |
107 | } | 107 | } |
108 | - orderDetailModel.refundApply({ | 108 | + req.ctx(orderDetailModel).refundApply({ |
109 | orderCode: req.query.id, | 109 | orderCode: req.query.id, |
110 | uid: req.user.uid, | 110 | uid: req.user.uid, |
111 | reasonId: req.query.reasonId || 1, | 111 | reasonId: req.query.reasonId || 1, |
@@ -118,8 +118,8 @@ const refundApply = (req, res, next) => { | @@ -118,8 +118,8 @@ const refundApply = (req, res, next) => { | ||
118 | /** | 118 | /** |
119 | * 我的订单-查看物流信息 | 119 | * 我的订单-查看物流信息 |
120 | */ | 120 | */ |
121 | -const logistic = (req, res, next) => { | ||
122 | - orderDetailModel.logistics({ | 121 | +exports.logistic = (req, res, next) => { |
122 | + req.ctx(orderDetailModel).logistics({ | ||
123 | order_code: req.query.order_code, | 123 | order_code: req.query.order_code, |
124 | uid: req.user.uid, | 124 | uid: req.user.uid, |
125 | type: req.query.type, | 125 | type: req.query.type, |
@@ -141,13 +141,13 @@ const logistic = (req, res, next) => { | @@ -141,13 +141,13 @@ const logistic = (req, res, next) => { | ||
141 | /** | 141 | /** |
142 | * 订单修改地址页面 | 142 | * 订单修改地址页面 |
143 | */ | 143 | */ |
144 | -const addressModify = (req, res, next) => { | 144 | +exports.addressModify = (req, res, next) => { |
145 | let uid = req.user.uid; | 145 | let uid = req.user.uid; |
146 | let orderCode = req.query.orderCode; | 146 | let orderCode = req.query.orderCode; |
147 | let areaCode = req.query.areaCode; | 147 | let areaCode = req.query.areaCode; |
148 | let provinceAreaCode = req.query.provinceAreaCode || false; | 148 | let provinceAreaCode = req.query.provinceAreaCode || false; |
149 | 149 | ||
150 | - addressModel.getAddressData({uid: uid}).then(result => { | 150 | + req.ctx(addressModel)._getAddressData({uid: uid}).then(result => { |
151 | let userAddressList = result; | 151 | let userAddressList = result; |
152 | let addressData = addressProcess.getAddressByAreaCode(areaCode, _.get(userAddressList, 'data', [])) || {}; | 152 | let addressData = addressProcess.getAddressByAreaCode(areaCode, _.get(userAddressList, 'data', [])) || {}; |
153 | 153 | ||
@@ -189,7 +189,7 @@ const addressModify = (req, res, next) => { | @@ -189,7 +189,7 @@ const addressModify = (req, res, next) => { | ||
189 | * @param {*} res | 189 | * @param {*} res |
190 | * @param {*} next | 190 | * @param {*} next |
191 | */ | 191 | */ |
192 | -const changeAddress = (req, res, next) => { | 192 | +exports.changeAddress = (req, res, next) => { |
193 | let uid = req.user.uid; | 193 | let uid = req.user.uid; |
194 | let udid = req.cookies._yasvd || 'yoho'; | 194 | let udid = req.cookies._yasvd || 'yoho'; |
195 | 195 | ||
@@ -200,7 +200,7 @@ const changeAddress = (req, res, next) => { | @@ -200,7 +200,7 @@ const changeAddress = (req, res, next) => { | ||
200 | }); | 200 | }); |
201 | } | 201 | } |
202 | 202 | ||
203 | - orderDetailModel.changeAddress({ | 203 | + req.ctx(orderDetailModel).changeAddress({ |
204 | uid: req.user.uid, | 204 | uid: req.user.uid, |
205 | orderCode: req.body.orderCode, | 205 | orderCode: req.body.orderCode, |
206 | username: req.body.username, | 206 | username: req.body.username, |
@@ -212,14 +212,3 @@ const changeAddress = (req, res, next) => { | @@ -212,14 +212,3 @@ const changeAddress = (req, res, next) => { | ||
212 | res.json(result); | 212 | res.json(result); |
213 | }).catch(next); | 213 | }).catch(next); |
214 | }; | 214 | }; |
215 | - | ||
216 | -module.exports = { | ||
217 | - orderDetailData, | ||
218 | - delOrder, | ||
219 | - readdData, | ||
220 | - cancelOrder, | ||
221 | - refundApply, | ||
222 | - logistic, | ||
223 | - addressModify, | ||
224 | - changeAddress | ||
225 | -}; |
@@ -11,221 +11,216 @@ const _ = require('lodash'); | @@ -11,221 +11,216 @@ const _ = require('lodash'); | ||
11 | const camelCase = global.yoho.camelCase; | 11 | const camelCase = global.yoho.camelCase; |
12 | const crypto = global.yoho.crypto; | 12 | const crypto = global.yoho.crypto; |
13 | 13 | ||
14 | -/** | ||
15 | - * 从接口获取地址列表 | ||
16 | - * @param params | ||
17 | - */ | ||
18 | -const _getAddressData = (params) => { | ||
19 | - return api.get('', { | ||
20 | - method: 'app.address.gethidden', | ||
21 | - uid: params.uid | ||
22 | - }, {code: 200}); | ||
23 | -}; | ||
24 | - | ||
25 | -/** | ||
26 | - * 获取三级地址列表数据 | ||
27 | - * @param params | ||
28 | - * @returns {*} | ||
29 | - * @private | ||
30 | - */ | ||
31 | -const _getThrAddressData = (params) => { | ||
32 | - return api.get('', { | ||
33 | - method: 'app.address.getlist', | ||
34 | - uid: params.uid | ||
35 | - }, {code: 200, cache: true}); | ||
36 | -}; | 14 | +module.exports = class extends global.yoho.BaseModel { |
15 | + constructor(ctx) { | ||
16 | + super(ctx); | ||
17 | + } | ||
37 | 18 | ||
38 | -/** | ||
39 | - * 调用接口保存地址数据 | ||
40 | - * @param params | ||
41 | - * @private | ||
42 | - */ | ||
43 | -const _saveAddressData = (params) => { | ||
44 | - return api.get('', { | ||
45 | - method: params.id ? 'app.address.update' : 'app.address.add', | ||
46 | - id: params.id, | ||
47 | - address: params.address, | ||
48 | - area_code: params.area_code, | ||
49 | - consignee: params.consignee, | ||
50 | - email: params.email, | ||
51 | - mobile: params.mobile, | ||
52 | - zip_code: params.zip_code, | ||
53 | - uid: params.uid | ||
54 | - }); | ||
55 | -}; | 19 | + /** |
20 | + * 从接口获取地址列表 | ||
21 | + * @param params | ||
22 | + */ | ||
23 | + _getAddressData(params) { | ||
24 | + return api.get('', { | ||
25 | + method: 'app.address.gethidden', | ||
26 | + uid: params.uid | ||
27 | + }, {code: 200}); | ||
28 | + } | ||
56 | 29 | ||
57 | -/** | ||
58 | - * 调用接口设置默认地址 | ||
59 | - * @param params | ||
60 | - * @private | ||
61 | - */ | ||
62 | -const _setDefaultAddress = (params) => { | ||
63 | - return api.get('', { | ||
64 | - method: 'app.address.setdefault', | ||
65 | - uid: params.id, | ||
66 | - id: params.id | ||
67 | - }); | ||
68 | -}; | 30 | + /** |
31 | + * 获取三级地址列表数据 | ||
32 | + * @param params | ||
33 | + * @returns {*} | ||
34 | + * @private | ||
35 | + */ | ||
36 | + _getThrAddressData(params) { | ||
37 | + return api.get('', { | ||
38 | + method: 'app.address.getlist', | ||
39 | + uid: params.uid | ||
40 | + }, {code: 200, cache: true}); | ||
41 | + } | ||
69 | 42 | ||
70 | -/** | ||
71 | - * 调用接口删除地址 | ||
72 | - * @param params | ||
73 | - * @private | ||
74 | - */ | ||
75 | -const _delAddressData = (params) => { | ||
76 | - return api.get('', { | ||
77 | - method: 'app.address.del', | ||
78 | - id: params.id, | ||
79 | - uid: params.uid | ||
80 | - }); | ||
81 | -}; | 43 | + /** |
44 | + * 调用接口保存地址数据 | ||
45 | + * @param params | ||
46 | + * @private | ||
47 | + */ | ||
48 | + _saveAddressData(params) { | ||
49 | + return api.get('', { | ||
50 | + method: params.id ? 'app.address.update' : 'app.address.add', | ||
51 | + id: params.id, | ||
52 | + address: params.address, | ||
53 | + area_code: params.area_code, | ||
54 | + consignee: params.consignee, | ||
55 | + email: params.email, | ||
56 | + mobile: params.mobile, | ||
57 | + zip_code: params.zip_code, | ||
58 | + uid: params.uid | ||
59 | + }); | ||
60 | + } | ||
82 | 61 | ||
83 | -/** | ||
84 | - * 地址管理页面 | ||
85 | - * @param params | ||
86 | - */ | ||
87 | -const address = (params) => { | ||
88 | - let apiList = [ | ||
89 | - _getAddressData(params) | ||
90 | - ]; | 62 | + /** |
63 | + * 调用接口设置默认地址 | ||
64 | + * @param params | ||
65 | + * @private | ||
66 | + */ | ||
67 | + _setDefaultAddress(params) { | ||
68 | + return api.get('', { | ||
69 | + method: 'app.address.setdefault', | ||
70 | + uid: params.id, | ||
71 | + id: params.id | ||
72 | + }); | ||
73 | + } | ||
91 | 74 | ||
92 | - if (params.id) { // 如果有 ID 是编辑地址页面 | ||
93 | - apiList.push(_getThrAddressData(params)); | 75 | + /** |
76 | + * 调用接口删除地址 | ||
77 | + * @param params | ||
78 | + * @private | ||
79 | + */ | ||
80 | + _delAddressData(params) { | ||
81 | + return api.get('', { | ||
82 | + method: 'app.address.del', | ||
83 | + id: params.id, | ||
84 | + uid: params.uid | ||
85 | + }); | ||
94 | } | 86 | } |
95 | 87 | ||
96 | - return api.all(apiList).then(result => { | ||
97 | - let selfAddress = result[0]; | 88 | + /** |
89 | + * 地址管理页面 | ||
90 | + * @param params | ||
91 | + */ | ||
92 | + address(params) { | ||
93 | + let apiList = [ | ||
94 | + this._getAddressData(params) | ||
95 | + ]; | ||
96 | + | ||
97 | + if (params.id) { // 如果有 ID 是编辑地址页面 | ||
98 | + apiList.push(this._getThrAddressData(params)); | ||
99 | + } | ||
98 | 100 | ||
99 | - if (selfAddress.data) { | 101 | + return api.all(apiList).then(result => { |
102 | + let selfAddress = result[0]; | ||
100 | 103 | ||
101 | - /* 加密地址 ID */ | ||
102 | - _.forEach(selfAddress.data, (value, key) => { | ||
103 | - selfAddress.data[key].address_id = | ||
104 | - encodeURIComponent(crypto.encryption(null, selfAddress.data[key].address_id)); | 104 | + if (selfAddress.data) { |
105 | 105 | ||
106 | - if (value.area.length > 11) { | ||
107 | - value.showArea = value.area.substr(0, 5) + '...' + value.area.substr(-5); | ||
108 | - } else { | ||
109 | - value.showArea = value.area; | ||
110 | - } | ||
111 | - }); | ||
112 | - | ||
113 | - /* 如果有 ID 是地址编辑页面 */ | ||
114 | - if (params.id) { | ||
115 | - let returnResult = { | ||
116 | - address: camelCase(_.find(selfAddress.data, o => { | ||
117 | - return decodeURIComponent(o.address_id) === params.id; | ||
118 | - })), | ||
119 | - addressList: camelCase(result[1] ? result[1].data : []), | ||
120 | - navTitle: '编辑地址' | ||
121 | - }; | 106 | + /* 加密地址 ID */ |
107 | + _.forEach(selfAddress.data, (value, key) => { | ||
108 | + selfAddress.data[key].address_id = | ||
109 | + encodeURIComponent(crypto.encryption(null, selfAddress.data[key].address_id)); | ||
122 | 110 | ||
123 | - let area = _.get(returnResult, 'address.area', ''); | 111 | + if (value.area.length > 11) { |
112 | + value.showArea = value.area.substr(0, 5) + '...' + value.area.substr(-5); | ||
113 | + } else { | ||
114 | + value.showArea = value.area; | ||
115 | + } | ||
116 | + }); | ||
124 | 117 | ||
125 | - if (area.length > 11) { | ||
126 | - returnResult.address.area = area.substr(0, 5) + '...' + area.substr(-5); | ||
127 | - } | 118 | + /* 如果有 ID 是地址编辑页面 */ |
119 | + if (params.id) { | ||
120 | + let returnResult = { | ||
121 | + address: camelCase(_.find(selfAddress.data, o => { | ||
122 | + return decodeURIComponent(o.address_id) === params.id; | ||
123 | + })), | ||
124 | + addressList: camelCase(result[1] ? result[1].data : []), | ||
125 | + navTitle: '编辑地址' | ||
126 | + }; | ||
128 | 127 | ||
129 | - return returnResult; | ||
130 | - } else { | ||
131 | - return { | ||
132 | - address: camelCase(selfAddress.data), | ||
133 | - addressList: camelCase(result[1] ? result[1].data : []), | ||
134 | - navTitle: '添加地址' | ||
135 | - }; | ||
136 | - } | ||
137 | - } | ||
138 | - }); | ||
139 | -}; | 128 | + let area = _.get(returnResult, 'address.area', ''); |
140 | 129 | ||
141 | -/** | ||
142 | - * 保存地址数据 | ||
143 | - * @param params | ||
144 | - */ | ||
145 | -const saveAddress = (params) => { | ||
146 | - if (params.id) { | ||
147 | - params.id = crypto.decrypt(null, decodeURIComponent(params.id)); | 130 | + if (area.length > 11) { |
131 | + returnResult.address.area = area.substr(0, 5) + '...' + area.substr(-5); | ||
132 | + } | ||
133 | + | ||
134 | + return returnResult; | ||
135 | + } else { | ||
136 | + return { | ||
137 | + address: camelCase(selfAddress.data), | ||
138 | + addressList: camelCase(result[1] ? result[1].data : []), | ||
139 | + navTitle: '添加地址' | ||
140 | + }; | ||
141 | + } | ||
142 | + } | ||
143 | + }); | ||
148 | } | 144 | } |
149 | 145 | ||
150 | - return _saveAddressData(params).then(result => { | ||
151 | - return result; | ||
152 | - }); | ||
153 | -}; | 146 | + /** |
147 | + * 保存地址数据 | ||
148 | + * @param params | ||
149 | + */ | ||
150 | + saveAddress(params) { | ||
151 | + if (params.id) { | ||
152 | + params.id = crypto.decrypt(null, decodeURIComponent(params.id)); | ||
153 | + } | ||
154 | 154 | ||
155 | -/** | ||
156 | - * 设置默认地址 | ||
157 | - * @param params | ||
158 | - */ | ||
159 | -const setDefaultAddress = (params) => { | ||
160 | - if (params.id) { | ||
161 | - params.id = crypto.encryption(null, params.id); | 155 | + return this._saveAddressData(params).then(result => { |
156 | + return result; | ||
157 | + }); | ||
162 | } | 158 | } |
163 | - return _setDefaultAddress(params).then(result => { | ||
164 | - return result; | ||
165 | - }); | ||
166 | -}; | ||
167 | 159 | ||
168 | -/** | ||
169 | - * 删除地址 | ||
170 | - * @param params | ||
171 | - */ | ||
172 | -const delAddress = (params) => { | ||
173 | - if (params.id) { | ||
174 | - params.id = crypto.decrypt(null, params.id); | 160 | + /** |
161 | + * 设置默认地址 | ||
162 | + * @param params | ||
163 | + */ | ||
164 | + setDefaultAddress(params) { | ||
165 | + if (params.id) { | ||
166 | + params.id = crypto.encryption(null, params.id); | ||
167 | + } | ||
168 | + return this._setDefaultAddress(params).then(result => { | ||
169 | + return result; | ||
170 | + }); | ||
175 | } | 171 | } |
176 | - return _delAddressData(params).then(result => { | ||
177 | - return result; | ||
178 | - }); | ||
179 | -}; | ||
180 | 172 | ||
181 | -/** | ||
182 | - * 三级地址数据 | ||
183 | - * @param params | ||
184 | - */ | ||
185 | -const locationList = (params) => { | ||
186 | - return _getThrAddressData(params).then(result => { | ||
187 | - if (result.data) { | ||
188 | - return { | ||
189 | - addressList: result.data | ||
190 | - }; | 173 | + /** |
174 | + * 删除地址 | ||
175 | + * @param params | ||
176 | + */ | ||
177 | + delAddress(params) { | ||
178 | + if (params.id) { | ||
179 | + params.id = crypto.decrypt(null, params.id); | ||
191 | } | 180 | } |
192 | - }); | ||
193 | -}; | 181 | + return this._delAddressData(params).then(result => { |
182 | + return result; | ||
183 | + }); | ||
184 | + } | ||
194 | 185 | ||
195 | -/** | ||
196 | - * 新版地址选择获取地址 | ||
197 | - */ | ||
198 | -const newGetAddress = (params) => { | ||
199 | - return api.get('', { | ||
200 | - method: 'app.address.provinces', | ||
201 | - id: params.id || '0' | ||
202 | - }, {code: 200, cache: true}).then(result => { | ||
203 | - return result && result.data; | ||
204 | - }); | ||
205 | -}; | 186 | + /** |
187 | + * 三级地址数据 | ||
188 | + * @param params | ||
189 | + */ | ||
190 | + locationList(params) { | ||
191 | + return this._getThrAddressData(params).then(result => { | ||
192 | + if (result.data) { | ||
193 | + return { | ||
194 | + addressList: result.data | ||
195 | + }; | ||
196 | + } | ||
197 | + }); | ||
198 | + } | ||
206 | 199 | ||
207 | -/** | ||
208 | - * 订单详情选择地址 | ||
209 | - * @param params | ||
210 | - */ | ||
211 | -const chooseAddress = (orderCode, addressId, uid) => { | ||
212 | - return api.get('', { | ||
213 | - method: 'app.SpaceOrders.updateDeliveryAddress', | ||
214 | - uid: uid, | ||
215 | - order_code: orderCode, | ||
216 | - address_id: crypto.decrypt(null, addressId) | ||
217 | - }).then((result) => { | ||
218 | - return result; | ||
219 | - }); | ||
220 | -}; | 200 | + /** |
201 | + * 新版地址选择获取地址 | ||
202 | + */ | ||
203 | + newGetAddress(params) { | ||
204 | + return api.get('', { | ||
205 | + method: 'app.address.provinces', | ||
206 | + id: params.id || '0' | ||
207 | + }, {code: 200, cache: true}).then(result => { | ||
208 | + return result && result.data; | ||
209 | + }); | ||
210 | + } | ||
221 | 211 | ||
222 | -module.exports = { | ||
223 | - address, | ||
224 | - saveAddress, | ||
225 | - delAddress, | ||
226 | - setDefaultAddress, | ||
227 | - locationList, | ||
228 | - newGetAddress, | ||
229 | - chooseAddress, | ||
230 | - getAddressData: _getAddressData | 212 | + /** |
213 | + * 订单详情选择地址 | ||
214 | + * @param params | ||
215 | + */ | ||
216 | + chooseAddress(orderCode, addressId, uid) { | ||
217 | + return api.get('', { | ||
218 | + method: 'app.SpaceOrders.updateDeliveryAddress', | ||
219 | + uid: uid, | ||
220 | + order_code: orderCode, | ||
221 | + address_id: crypto.decrypt(null, addressId) | ||
222 | + }).then((result) => { | ||
223 | + return result; | ||
224 | + }); | ||
225 | + } | ||
231 | }; | 226 | }; |
@@ -17,316 +17,315 @@ const transPrice = (price, isSepcialZero) => { | @@ -17,316 +17,315 @@ const transPrice = (price, isSepcialZero) => { | ||
17 | return (price > 0 || isSepcialZero) ? parseFloat(price).toFixed(2) : 0; | 17 | return (price > 0 || isSepcialZero) ? parseFloat(price).toFixed(2) : 0; |
18 | }; | 18 | }; |
19 | 19 | ||
20 | -/** | ||
21 | - * 格式化订单商品 | ||
22 | - * @private | ||
23 | - */ | ||
24 | -const _formatOrderGoods = (orderGoods, count, haveLink) => { | ||
25 | - let result = []; | ||
26 | - | ||
27 | - _.forEach(orderGoods, value => { | ||
28 | - let goods = { | ||
29 | - thumb: value.goods_image, | ||
30 | - name: value.product_name, | ||
31 | - color: value.factory_color_name ? value.factory_color_name : value.color_name, | ||
32 | - size: value.size_name, | ||
33 | - payPrice: value.real_pay_price, | ||
34 | - salePrice: transPrice(value.sales_price) || value.goods_price, | ||
35 | - count: value.buy_number | ||
36 | - | ||
37 | - // isVipPrice: value.discount_tag === 'V', | ||
38 | - // isStudebt: value.discount_tag === 'S' | ||
39 | - }; | 20 | +module.exports = class extends global.yoho.BaseModel { |
21 | + constructor(ctx) { | ||
22 | + super(ctx); | ||
23 | + } | ||
40 | 24 | ||
41 | - if (parseInt(value.real_pay_price, 10) === parseInt(value.sales_price, 10)) { | ||
42 | - goods.salePrice = false; | ||
43 | - } | 25 | + /** |
26 | + * 格式化订单商品 | ||
27 | + * @private | ||
28 | + */ | ||
29 | + _formatOrderGoods(orderGoods, count, haveLink) { | ||
30 | + let result = []; | ||
31 | + | ||
32 | + _.forEach(orderGoods, value => { | ||
33 | + let goods = { | ||
34 | + thumb: value.goods_image, | ||
35 | + name: value.product_name, | ||
36 | + color: value.factory_color_name ? value.factory_color_name : value.color_name, | ||
37 | + size: value.size_name, | ||
38 | + payPrice: value.real_pay_price, | ||
39 | + salePrice: transPrice(value.sales_price) || value.goods_price, | ||
40 | + count: value.buy_number | ||
41 | + | ||
42 | + // isVipPrice: value.discount_tag === 'V', | ||
43 | + // isStudebt: value.discount_tag === 'S' | ||
44 | + }; | ||
45 | + | ||
46 | + if (parseInt(value.real_pay_price, 10) === parseInt(value.sales_price, 10)) { | ||
47 | + goods.salePrice = false; | ||
48 | + } | ||
49 | + | ||
50 | + /* gift=>是否赠品,advanceBuy=>是否加价购 */ | ||
51 | + if (value.goods_type === 'gift') { | ||
52 | + Object.assign(goods, { | ||
53 | + gift: true, | ||
54 | + salePrice: transPrice(value.sales_price), | ||
55 | + payPrice: value.goods_price | ||
56 | + }); | ||
57 | + } else if (value.goods_type === 'price_gift') { | ||
58 | + Object.assign(goods, { | ||
59 | + advanceBuy: true, | ||
60 | + salePrice: transPrice(value.sales_price), | ||
61 | + payPrice: value.goods_price | ||
62 | + }); | ||
63 | + } | ||
44 | 64 | ||
45 | - /* gift=>是否赠品,advanceBuy=>是否加价购 */ | ||
46 | - if (value.goods_type === 'gift') { | ||
47 | - Object.assign(goods, { | ||
48 | - gift: true, | ||
49 | - salePrice: transPrice(value.sales_price), | ||
50 | - payPrice: value.goods_price | ||
51 | - }); | ||
52 | - } else if (value.goods_type === 'price_gift') { | ||
53 | - Object.assign(goods, { | ||
54 | - advanceBuy: true, | ||
55 | - salePrice: transPrice(value.sales_price), | ||
56 | - payPrice: value.goods_price | ||
57 | - }); | ||
58 | - } | 65 | + /* 上市期 */ |
66 | + if (value.expect_arrival_time) { | ||
67 | + Object.assign(goods, { | ||
68 | + appearDate: value.expect_arrival_time | ||
69 | + }); | ||
70 | + } | ||
59 | 71 | ||
60 | - /* 上市期 */ | ||
61 | - if (value.expect_arrival_time) { | ||
62 | - Object.assign(goods, { | ||
63 | - appearDate: value.expect_arrival_time | ||
64 | - }); | ||
65 | - } | 72 | + /* 商品链接 */ |
73 | + if (haveLink && value.product_skn) { | ||
74 | + Object.assign(goods, { | ||
75 | + link: helpers.urlFormat('/product/' + value.product_skn + '.html') // 商品url改版 | ||
76 | + }); | ||
77 | + } | ||
66 | 78 | ||
67 | - /* 商品链接 */ | ||
68 | - if (haveLink && value.product_skn) { | ||
69 | - Object.assign(goods, { | ||
70 | - link: helpers.urlFormat('/product/' + value.product_skn + '.html') // 商品url改版 | ||
71 | - }); | ||
72 | - } | 79 | + /* 累计购买数 */ |
80 | + count += parseInt(value.buy_number, 10); | ||
73 | 81 | ||
74 | - /* 累计购买数 */ | ||
75 | - count += parseInt(value.buy_number, 10); | 82 | + /* 门票 */ |
83 | + if (value.goods_type === 'ticket') { | ||
84 | + Object.assign(goods, { | ||
85 | + tickets: true | ||
86 | + }); | ||
87 | + } | ||
76 | 88 | ||
77 | - /* 门票 */ | ||
78 | - if (value.goods_type === 'ticket') { | ||
79 | - Object.assign(goods, { | ||
80 | - tickets: true | ||
81 | - }); | ||
82 | - } | 89 | + result.push(goods); |
90 | + }); | ||
83 | 91 | ||
84 | - result.push(goods); | ||
85 | - }); | 92 | + return result; |
93 | + } | ||
86 | 94 | ||
87 | - return result; | ||
88 | -}; | 95 | + /** |
96 | + * 调用接口获取订单数据 | ||
97 | + * @returns {*} | ||
98 | + * @private | ||
99 | + * @param params | ||
100 | + */ | ||
101 | + _getOrderData(params) { | ||
102 | + return api.get('', { | ||
103 | + method: 'app.SpaceOrders.get', | ||
104 | + type: params.type, | ||
105 | + page: params.page, | ||
106 | + limit: params.limit, | ||
107 | + gender: params.gender, | ||
108 | + yh_channel: params.yh_channel, | ||
109 | + uid: params.uid | ||
110 | + }, {code: 200}); | ||
111 | + } | ||
89 | 112 | ||
90 | -/** | ||
91 | - * 调用接口获取订单数据 | ||
92 | - * @returns {*} | ||
93 | - * @private | ||
94 | - * @param params | ||
95 | - */ | ||
96 | -const _getOrderData = (params) => { | ||
97 | - return api.get('', { | ||
98 | - method: 'app.SpaceOrders.get', | ||
99 | - type: params.type, | ||
100 | - page: params.page, | ||
101 | - limit: params.limit, | ||
102 | - gender: params.gender, | ||
103 | - yh_channel: params.yh_channel, | ||
104 | - uid: params.uid | ||
105 | - }, {code: 200}); | ||
106 | -}; | 113 | + /** |
114 | + * 获取订单状态 | ||
115 | + * @private | ||
116 | + */ | ||
117 | + _getOrderStatus(order) { | ||
118 | + let orderBtn = []; | ||
107 | 119 | ||
108 | -/** | ||
109 | - * 获取订单状态 | ||
110 | - * @private | ||
111 | - */ | ||
112 | -const _getOrderStatus = (order) => { | ||
113 | - let orderBtn = []; | 120 | + if (!order) { |
121 | + return {}; | ||
122 | + } | ||
114 | 123 | ||
115 | - if (!order) { | ||
116 | - return {}; | ||
117 | - } | 124 | + if (parseInt(order.attribute, 10) === 9) { |
125 | + /* 预售商品,不能进行任何操作 */ | ||
126 | + orderBtn.push({ | ||
127 | + isAdvance: true | ||
128 | + }); | ||
129 | + return {orderBtn: orderBtn}; | ||
130 | + } | ||
131 | + | ||
132 | + /* 倒计时时间 */ | ||
133 | + if (order.counter_flag === 'Y' && parseInt(order.pay_lefttime, 10)) { | ||
134 | + orderBtn.push({ | ||
135 | + leftTime: order.pay_lefttime * 1000 | ||
136 | + }); | ||
137 | + } | ||
118 | 138 | ||
119 | - if (parseInt(order.attribute, 10) === 9) { | ||
120 | - /* 预售商品,不能进行任何操作 */ | ||
121 | - orderBtn.push({ | ||
122 | - isAdvance: true | 139 | + _.each(order.links, function(val) { |
140 | + switch (val) { | ||
141 | + case 'refundApply':// 申请退款 | ||
142 | + orderBtn.push({ | ||
143 | + refundApply: true | ||
144 | + }); | ||
145 | + break; | ||
146 | + case 'modifyAddress':// 修改收货地址 | ||
147 | + orderBtn.push({ | ||
148 | + modifyAddress: true, | ||
149 | + link: helpers.urlFormat('/home/orders/addressModify', { | ||
150 | + relation: order.relate_order_code === 'Y', // 判断是否有关联订单 | ||
151 | + orderCode: order.order_code, | ||
152 | + areaCode: _.get(order, 'delivery_address.area_code', ''), | ||
153 | + provinceAreaCode: order.is_support_change_province !== 'Y' && | ||
154 | + _.get(order, 'delivery_address.province_area_code', '') || ''// 如果不允许修改省 | ||
155 | + }) | ||
156 | + }); | ||
157 | + break; | ||
158 | + case 'buyNow':// 立即付款 | ||
159 | + orderBtn.push({ | ||
160 | + buyNow: true, | ||
161 | + link: helpers.urlFormat('/home/orders/paynew', {order_code: order.order_code}), | ||
162 | + }); | ||
163 | + break; | ||
164 | + case 'closeOrder':// 取消订单 | ||
165 | + orderBtn.push({ | ||
166 | + closeOrder: true | ||
167 | + }); | ||
168 | + break; | ||
169 | + case 'confirm':// 订单确认 | ||
170 | + orderBtn.push({ | ||
171 | + confirm: true | ||
172 | + }); | ||
173 | + break; | ||
174 | + case 'getExpress':// 查看物流 | ||
175 | + orderBtn.push({ | ||
176 | + getExpress: true, | ||
177 | + logisticsUrl: helpers.urlFormat('/home/logistic', {order_code: order.order_code}), | ||
178 | + }); | ||
179 | + break; | ||
180 | + case 'shareOrder':// 晒单评价 | ||
181 | + break; | ||
182 | + case 'delOrder':// 删除订单 | ||
183 | + orderBtn.push({ | ||
184 | + delOrder: true, | ||
185 | + }); | ||
186 | + break; | ||
187 | + case 'lookQrcode':// 查看二维码 | ||
188 | + orderBtn.push({ | ||
189 | + lookQrcode: true, | ||
190 | + link: helpers.urlFormat(`/home/QRcode/${order.order_code}`), | ||
191 | + }); | ||
192 | + break; | ||
193 | + case 'afterService':// 售后服务 | ||
194 | + orderBtn.push({ | ||
195 | + afterService: true | ||
196 | + }); | ||
197 | + break; | ||
198 | + case 'readd':// 再次购买 | ||
199 | + orderBtn.push({ | ||
200 | + readd: true | ||
201 | + }); | ||
202 | + break; | ||
203 | + default: | ||
204 | + break; | ||
205 | + } | ||
123 | }); | 206 | }); |
207 | + | ||
124 | return {orderBtn: orderBtn}; | 208 | return {orderBtn: orderBtn}; |
125 | } | 209 | } |
126 | 210 | ||
127 | - /* 倒计时时间 */ | ||
128 | - if (order.counter_flag === 'Y' && parseInt(order.pay_lefttime, 10)) { | ||
129 | - orderBtn.push({ | ||
130 | - leftTime: order.pay_lefttime * 1000 | 211 | + /** |
212 | + * 获取页面顶部 tab 数据 | ||
213 | + * @param type | ||
214 | + * @returns {Array} | ||
215 | + * @private | ||
216 | + */ | ||
217 | + _getNavs(type) { | ||
218 | + let navType = { | ||
219 | + 1: '全部', | ||
220 | + 2: '待付款', | ||
221 | + 3: '待发货', | ||
222 | + 4: '待收货' | ||
223 | + }; | ||
224 | + let nav = []; | ||
225 | + | ||
226 | + _.forEach(navType, (obj, key) => { | ||
227 | + nav.push({ | ||
228 | + name: obj, | ||
229 | + typeId: key, | ||
230 | + active: parseInt(key, 10) === parseInt(type, 10), | ||
231 | + url: helpers.urlFormat('/home/orders', {type: key}) | ||
232 | + }); | ||
131 | }); | 233 | }); |
132 | - } | ||
133 | 234 | ||
134 | - _.each(order.links, function(val) { | ||
135 | - switch (val) { | ||
136 | - case 'refundApply':// 申请退款 | ||
137 | - orderBtn.push({ | ||
138 | - refundApply: true | ||
139 | - }); | ||
140 | - break; | ||
141 | - case 'modifyAddress':// 修改收货地址 | ||
142 | - orderBtn.push({ | ||
143 | - modifyAddress: true, | ||
144 | - link: helpers.urlFormat('/home/orders/addressModify', { | ||
145 | - relation: order.relate_order_code === 'Y', // 判断是否有关联订单 | ||
146 | - orderCode: order.order_code, | ||
147 | - areaCode: _.get(order, 'delivery_address.area_code', ''), | ||
148 | - provinceAreaCode: order.is_support_change_province !== 'Y' && | ||
149 | - _.get(order, 'delivery_address.province_area_code', '') || ''// 如果不允许修改省 | ||
150 | - }) | ||
151 | - }); | ||
152 | - break; | ||
153 | - case 'buyNow':// 立即付款 | ||
154 | - orderBtn.push({ | ||
155 | - buyNow: true, | ||
156 | - link: helpers.urlFormat('/home/orders/paynew', {order_code: order.order_code}), | ||
157 | - }); | ||
158 | - break; | ||
159 | - case 'closeOrder':// 取消订单 | ||
160 | - orderBtn.push({ | ||
161 | - closeOrder: true | ||
162 | - }); | ||
163 | - break; | ||
164 | - case 'confirm':// 订单确认 | ||
165 | - orderBtn.push({ | ||
166 | - confirm: true | ||
167 | - }); | ||
168 | - break; | ||
169 | - case 'getExpress':// 查看物流 | ||
170 | - orderBtn.push({ | ||
171 | - getExpress: true, | ||
172 | - logisticsUrl: helpers.urlFormat('/home/logistic', {order_code: order.order_code}), | ||
173 | - }); | ||
174 | - break; | ||
175 | - case 'shareOrder':// 晒单评价 | ||
176 | - break; | ||
177 | - case 'delOrder':// 删除订单 | ||
178 | - orderBtn.push({ | ||
179 | - delOrder: true, | ||
180 | - }); | ||
181 | - break; | ||
182 | - case 'lookQrcode':// 查看二维码 | ||
183 | - orderBtn.push({ | ||
184 | - lookQrcode: true, | ||
185 | - link: helpers.urlFormat(`/home/QRcode/${order.order_code}`), | ||
186 | - }); | ||
187 | - break; | ||
188 | - case 'afterService':// 售后服务 | ||
189 | - orderBtn.push({ | ||
190 | - afterService: true | ||
191 | - }); | ||
192 | - break; | ||
193 | - case 'readd':// 再次购买 | ||
194 | - orderBtn.push({ | ||
195 | - readd: true | ||
196 | - }); | ||
197 | - break; | ||
198 | - default: | ||
199 | - break; | ||
200 | - } | ||
201 | - }); | 235 | + return nav; |
236 | + } | ||
202 | 237 | ||
203 | - return {orderBtn: orderBtn}; | ||
204 | -}; | 238 | + /** |
239 | + * 订单页面导航条和取消订单原因 | ||
240 | + * @param params | ||
241 | + * @returns {*|Promise.<TResult>} | ||
242 | + */ | ||
243 | + order(params) { | ||
244 | + let finalResult = { | ||
245 | + navs: this._getNavs(params.type) | ||
246 | + }; | ||
205 | 247 | ||
206 | -/** | ||
207 | - * 获取页面顶部 tab 数据 | ||
208 | - * @param type | ||
209 | - * @returns {Array} | ||
210 | - * @private | ||
211 | - */ | ||
212 | -const _getNavs = (type) => { | ||
213 | - let navType = { | ||
214 | - 1: '全部', | ||
215 | - 2: '待付款', | ||
216 | - 3: '待发货', | ||
217 | - 4: '待收货' | ||
218 | - }; | ||
219 | - let nav = []; | ||
220 | - | ||
221 | - _.forEach(navType, (obj, key) => { | ||
222 | - nav.push({ | ||
223 | - name: obj, | ||
224 | - typeId: key, | ||
225 | - active: parseInt(key, 10) === parseInt(type, 10), | ||
226 | - url: helpers.urlFormat('/home/orders', {type: key}) | ||
227 | - }); | ||
228 | - }); | 248 | + return api.get('', _.assign({ |
249 | + method: 'app.SpaceOrders.closeReasons' | ||
250 | + }, params), { | ||
251 | + cache: true, | ||
252 | + code: 200 | ||
253 | + }).then(result => { | ||
229 | 254 | ||
230 | - return nav; | ||
231 | -}; | 255 | + if (result && result.data) { |
256 | + Object.assign(finalResult, {cancelReason: result.data}); | ||
257 | + } | ||
232 | 258 | ||
233 | -/** | ||
234 | - * 订单页面导航条和取消订单原因 | ||
235 | - * @param params | ||
236 | - * @returns {*|Promise.<TResult>} | ||
237 | - */ | ||
238 | -const order = (params) => { | ||
239 | - let finalResult = { | ||
240 | - navs: _getNavs(params.type) | ||
241 | - }; | ||
242 | - | ||
243 | - return api.get('', _.assign({ | ||
244 | - method: 'app.SpaceOrders.closeReasons' | ||
245 | - }, params), { | ||
246 | - cache: true, | ||
247 | - code: 200 | ||
248 | - }).then(result => { | ||
249 | - | ||
250 | - if (result && result.data) { | ||
251 | - Object.assign(finalResult, {cancelReason: result.data}); | ||
252 | - } | ||
253 | - | ||
254 | - return finalResult; | ||
255 | - }); | ||
256 | -}; | ||
257 | - | ||
258 | -/** | ||
259 | - * 申请退款原因 | ||
260 | - */ | ||
261 | -const refundReason = () => { | ||
262 | - return api.get('', { | ||
263 | - method: 'app.SpaceOrders.refundApplyReasons' | ||
264 | - }, {code: 200, cache: true}).then(result => { | ||
265 | - return _.get(result, 'data', []); | ||
266 | - }); | ||
267 | -}; | 259 | + return finalResult; |
260 | + }); | ||
261 | + } | ||
268 | 262 | ||
269 | -/** | ||
270 | - * 获取订单列表 | ||
271 | - * @param params | ||
272 | - */ | ||
273 | -const getOrders = (params) => { | ||
274 | - let finalResult = []; | 263 | + /** |
264 | + * 申请退款原因 | ||
265 | + */ | ||
266 | + refundReason() { | ||
267 | + return api.get('', { | ||
268 | + method: 'app.SpaceOrders.refundApplyReasons' | ||
269 | + }, {code: 200, cache: true}).then(result => { | ||
270 | + return _.get(result, 'data', []); | ||
271 | + }); | ||
272 | + } | ||
275 | 273 | ||
276 | - return _getOrderData(params).then(result => { | ||
277 | - if (result.data && result.data.page_total && params.page <= result.data.page_total && result.data.order_list) { | ||
278 | - let count = 0; | 274 | + /** |
275 | + * 获取订单列表 | ||
276 | + * @param params | ||
277 | + */ | ||
278 | + getOrders(params) { | ||
279 | + let finalResult = []; | ||
279 | 280 | ||
280 | - _.forEach(result.data.order_list, value => { | 281 | + return this._getOrderData(params).then(result => { |
282 | + if (result.data && result.data.page_total && params.page <= result.data.page_total && result.data.order_list) { | ||
283 | + let count = 0; | ||
281 | 284 | ||
282 | - /* 订单件数清零 */ | ||
283 | - count = 0; | 285 | + _.forEach(result.data.order_list, value => { |
284 | 286 | ||
285 | - let perOrder = _getOrderStatus(value); | 287 | + /* 订单件数清零 */ |
288 | + count = 0; | ||
286 | 289 | ||
287 | - /* 是否是虚拟商品 */ | ||
288 | - let isTickets = order.virtual_type && parseInt(order.virtual_type, 10) === 3; | 290 | + let perOrder = this._getOrderStatus(value); |
289 | 291 | ||
290 | - Object.assign(perOrder, { | ||
291 | - orderNum: value.order_code, | ||
292 | - orderStatus: value.status_str, | ||
293 | - sumCost: value.amount, | ||
294 | - goods: _formatOrderGoods(value.order_goods, count, false, isTickets), | ||
295 | - detailUrl: helpers.urlFormat('/home/orderdetail', {order_code: value.order_code}), | ||
296 | - count: value.buy_total, | ||
297 | - isVirtual: isTickets, | ||
298 | - orderTitle: value.order_title | ||
299 | - }); | 292 | + /* 是否是虚拟商品 */ |
293 | + let isTickets = this.order.virtual_type && parseInt(this.order.virtual_type, 10) === 3; | ||
300 | 294 | ||
301 | - /* 如果运费大于0,会显示运费 */ | ||
302 | - if (parseFloat(value.shipping_cost) > 0) { | ||
303 | Object.assign(perOrder, { | 295 | Object.assign(perOrder, { |
304 | - shippingCost: value.shipping_cost | 296 | + orderNum: value.order_code, |
297 | + orderStatus: value.status_str, | ||
298 | + sumCost: value.amount, | ||
299 | + goods: this._formatOrderGoods(value.order_goods, count, false, isTickets), | ||
300 | + detailUrl: helpers.urlFormat('/home/orderdetail', {order_code: value.order_code}), | ||
301 | + count: value.buy_total, | ||
302 | + isVirtual: isTickets, | ||
303 | + orderTitle: value.order_title | ||
305 | }); | 304 | }); |
306 | - } | ||
307 | 305 | ||
308 | - finalResult.push(perOrder); | ||
309 | - }); | ||
310 | - } | 306 | + /* 如果运费大于0,会显示运费 */ |
307 | + if (parseFloat(value.shipping_cost) > 0) { | ||
308 | + Object.assign(perOrder, { | ||
309 | + shippingCost: value.shipping_cost | ||
310 | + }); | ||
311 | + } | ||
311 | 312 | ||
312 | - return finalResult; | ||
313 | - }); | ||
314 | -}; | 313 | + finalResult.push(perOrder); |
314 | + }); | ||
315 | + } | ||
315 | 316 | ||
316 | -/** | ||
317 | - * 确认收货确认订单接口 | ||
318 | - */ | ||
319 | -const sure = (params) => { | ||
320 | - return api.get('', { | ||
321 | - method: 'app.SpaceOrders.confirm', | ||
322 | - order_code: params.order_code, | ||
323 | - uid: params.uid | ||
324 | - }); | ||
325 | -}; | 317 | + return finalResult; |
318 | + }); | ||
319 | + } | ||
326 | 320 | ||
327 | -module.exports = { | ||
328 | - order, | ||
329 | - getOrders, | ||
330 | - refundReason, | ||
331 | - sure | 321 | + /** |
322 | + * 确认收货确认订单接口 | ||
323 | + */ | ||
324 | + sure(params) { | ||
325 | + return api.get('', { | ||
326 | + method: 'app.SpaceOrders.confirm', | ||
327 | + order_code: params.order_code, | ||
328 | + uid: params.uid | ||
329 | + }); | ||
330 | + } | ||
332 | }; | 331 | }; |
@@ -14,465 +14,458 @@ const stringProcess = require(`${global.utils}/string-process`); | @@ -14,465 +14,458 @@ const stringProcess = require(`${global.utils}/string-process`); | ||
14 | 14 | ||
15 | const CODE_LOGISTIC_BANNER = '1fc9b2484fcd559049f2f7e0db313f20'; // 物流详情banner资源码 | 15 | const CODE_LOGISTIC_BANNER = '1fc9b2484fcd559049f2f7e0db313f20'; // 物流详情banner资源码 |
16 | 16 | ||
17 | -const closeReasons = () => { | ||
18 | - return api.get('', { | ||
19 | - method: 'app.SpaceOrders.closeReasons' | ||
20 | - }, { | ||
21 | - cache: true | ||
22 | - }).then((result) => { | ||
23 | - if (result && result.code === 200) { | ||
24 | - return result.data; | ||
25 | - } else { | ||
26 | - return {}; | ||
27 | - } | ||
28 | - }); | ||
29 | -}; | ||
30 | - | ||
31 | -/** | ||
32 | - * 获取快递有关信息 | ||
33 | - * @private | ||
34 | - */ | ||
35 | -const _assignExpressInfo = (showLogistics, order) => { | ||
36 | - let data = {}; | ||
37 | - | ||
38 | - if (showLogistics && order.expressCompany && order.expressCompany.caption) { | ||
39 | - data = { | ||
40 | - logisticsUrl: helpers.urlFormat('/home/logistic', {order_code: order.orderCode}), | ||
41 | - logisticsCompany: order.expressCompany.caption, | ||
42 | - logisticsNum: order.expressNumber || '' | ||
43 | - }; | ||
44 | - } | ||
45 | - | ||
46 | - return data; | ||
47 | -}; | ||
48 | - | ||
49 | -/** | ||
50 | - * 获取订单状态 | ||
51 | - * @private | ||
52 | - */ | ||
53 | -const _getOrderStatus = (order, showLogistics) => { | ||
54 | - let orderBtn = []; | ||
55 | - | ||
56 | - if (!order) { | ||
57 | - return {}; | 17 | +module.exports = class extends global.yoho.BaseModel { |
18 | + constructor(ctx) { | ||
19 | + super(ctx); | ||
58 | } | 20 | } |
59 | 21 | ||
60 | - if (parseInt(order.attribute, 10) === 9) { | ||
61 | - /* 预售商品,不能进行任何操作 */ | ||
62 | - orderBtn.push({ | ||
63 | - isAdvance: true | 22 | + closeReasons() { |
23 | + return api.get('', { | ||
24 | + method: 'app.SpaceOrders.closeReasons' | ||
25 | + }, { | ||
26 | + cache: true | ||
27 | + }).then((result) => { | ||
28 | + if (result && result.code === 200) { | ||
29 | + return result.data; | ||
30 | + } else { | ||
31 | + return {}; | ||
32 | + } | ||
64 | }); | 33 | }); |
65 | - return {orderBtn: orderBtn}; | ||
66 | } | 34 | } |
67 | 35 | ||
68 | - /* 倒计时时间 订单详情页倒计时不在同一级*/ | ||
69 | - if (order.counterFlag === 'Y' && parseInt(order.payLefttime, 10)) { | ||
70 | - orderBtn.push({ | ||
71 | - leftTimeTop: order.payLefttime * 1000 | ||
72 | - }); | 36 | + /** |
37 | + * 获取快递有关信息 | ||
38 | + * @private | ||
39 | + */ | ||
40 | + _assignExpressInfo(showLogistics, order) { | ||
41 | + let data = {}; | ||
42 | + | ||
43 | + if (showLogistics && order.expressCompany && order.expressCompany.caption) { | ||
44 | + data = { | ||
45 | + logisticsUrl: helpers.urlFormat('/home/logistic', {order_code: order.orderCode}), | ||
46 | + logisticsCompany: order.expressCompany.caption, | ||
47 | + logisticsNum: order.expressNumber || '' | ||
48 | + }; | ||
49 | + } | ||
50 | + | ||
51 | + return data; | ||
73 | } | 52 | } |
74 | 53 | ||
75 | - _.each(order.links, function(val) { | ||
76 | - switch (val) { | ||
77 | - case 'refundApply':// 申请退款 | ||
78 | - orderBtn.push({ | ||
79 | - refundApply: true | ||
80 | - }); | ||
81 | - break; | ||
82 | - case 'modifyAddress':// 修改收货地址 | ||
83 | - orderBtn.push({ | ||
84 | - modifyAddress: true, | ||
85 | - link: helpers.urlFormat('/home/orders/addressModify', { | ||
86 | - relation: order.relateOrderCode === 'Y', // 判断是否有关联订单 | ||
87 | - orderCode: order.orderCode, | ||
88 | - areaCode: _.get(order, 'deliveryAddress.areaCode', ''), | ||
89 | - provinceAreaCode: order.isSupportChangeProvince !== 'Y' && | ||
90 | - _.get(order, 'deliveryAddress.provinceAreaCode', '') || ''// 如果不允许修改省 | ||
91 | - }) | ||
92 | - }); | ||
93 | - break; | ||
94 | - case 'buyNow':// 立即付款 | ||
95 | - orderBtn.push({ | ||
96 | - buyNow: true, | ||
97 | - link: helpers.urlFormat('/home/orders/paynew', {order_code: order.orderCode}), | ||
98 | - }); | ||
99 | - break; | ||
100 | - case 'closeOrder':// 取消订单 | ||
101 | - orderBtn.push({ | ||
102 | - closeOrder: true | ||
103 | - }); | ||
104 | - break; | ||
105 | - case 'confirm':// 订单确认 | ||
106 | - orderBtn.push({ | ||
107 | - confirm: true | ||
108 | - }); | ||
109 | - break; | ||
110 | - case 'getExpress':// 查看物流 | ||
111 | - orderBtn.push(Object.assign( | ||
112 | - {getExpress: true}, | ||
113 | - _assignExpressInfo(showLogistics, order) | ||
114 | - )); | ||
115 | - break; | ||
116 | - case 'shareOrder':// 晒单评价 | ||
117 | - break; | ||
118 | - case 'delOrder':// 删除订单 | ||
119 | - orderBtn.push({ | ||
120 | - delOrder: true, | ||
121 | - }); | ||
122 | - break; | ||
123 | - case 'lookQrcode':// 查看二维码 | ||
124 | - orderBtn.push({ | ||
125 | - lookQrcode: true, | ||
126 | - link: helpers.urlFormat(`/home/QRcode/${order.orderCode}`), | ||
127 | - }); | ||
128 | - break; | ||
129 | - case 'afterService':// 售后服务 | ||
130 | - orderBtn.push({ | ||
131 | - afterService: true | ||
132 | - }); | ||
133 | - break; | ||
134 | - case 'readd':// 再次购买 | ||
135 | - orderBtn.push({ | ||
136 | - readd: true | ||
137 | - }); | ||
138 | - break; | ||
139 | - default: | ||
140 | - break; | 54 | + /** |
55 | + * 获取订单状态 | ||
56 | + * @private | ||
57 | + */ | ||
58 | + _getOrderStatus(order, showLogistics) { | ||
59 | + let orderBtn = []; | ||
60 | + | ||
61 | + if (!order) { | ||
62 | + return {}; | ||
141 | } | 63 | } |
142 | - }); | ||
143 | 64 | ||
144 | - return {orderBtn: orderBtn}; | ||
145 | -}; | 65 | + if (parseInt(order.attribute, 10) === 9) { |
66 | + /* 预售商品,不能进行任何操作 */ | ||
67 | + orderBtn.push({ | ||
68 | + isAdvance: true | ||
69 | + }); | ||
70 | + return {orderBtn: orderBtn}; | ||
71 | + } | ||
146 | 72 | ||
73 | + /* 倒计时时间 订单详情页倒计时不在同一级*/ | ||
74 | + if (order.counterFlag === 'Y' && parseInt(order.payLefttime, 10)) { | ||
75 | + orderBtn.push({ | ||
76 | + leftTimeTop: order.payLefttime * 1000 | ||
77 | + }); | ||
78 | + } | ||
147 | 79 | ||
148 | -const orderDetailData = (uid, orderCode) => { | 80 | + _.each(order.links, function(val) { |
81 | + switch (val) { | ||
82 | + case 'refundApply':// 申请退款 | ||
83 | + orderBtn.push({ | ||
84 | + refundApply: true | ||
85 | + }); | ||
86 | + break; | ||
87 | + case 'modifyAddress':// 修改收货地址 | ||
88 | + orderBtn.push({ | ||
89 | + modifyAddress: true, | ||
90 | + link: helpers.urlFormat('/home/orders/addressModify', { | ||
91 | + relation: order.relateOrderCode === 'Y', // 判断是否有关联订单 | ||
92 | + orderCode: order.orderCode, | ||
93 | + areaCode: _.get(order, 'deliveryAddress.areaCode', ''), | ||
94 | + provinceAreaCode: order.isSupportChangeProvince !== 'Y' && | ||
95 | + _.get(order, 'deliveryAddress.provinceAreaCode', '') || ''// 如果不允许修改省 | ||
96 | + }) | ||
97 | + }); | ||
98 | + break; | ||
99 | + case 'buyNow':// 立即付款 | ||
100 | + orderBtn.push({ | ||
101 | + buyNow: true, | ||
102 | + link: helpers.urlFormat('/home/orders/paynew', {order_code: order.orderCode}), | ||
103 | + }); | ||
104 | + break; | ||
105 | + case 'closeOrder':// 取消订单 | ||
106 | + orderBtn.push({ | ||
107 | + closeOrder: true | ||
108 | + }); | ||
109 | + break; | ||
110 | + case 'confirm':// 订单确认 | ||
111 | + orderBtn.push({ | ||
112 | + confirm: true | ||
113 | + }); | ||
114 | + break; | ||
115 | + case 'getExpress':// 查看物流 | ||
116 | + orderBtn.push(Object.assign( | ||
117 | + {getExpress: true}, | ||
118 | + this._assignExpressInfo(showLogistics, order) | ||
119 | + )); | ||
120 | + break; | ||
121 | + case 'shareOrder':// 晒单评价 | ||
122 | + break; | ||
123 | + case 'delOrder':// 删除订单 | ||
124 | + orderBtn.push({ | ||
125 | + delOrder: true, | ||
126 | + }); | ||
127 | + break; | ||
128 | + case 'lookQrcode':// 查看二维码 | ||
129 | + orderBtn.push({ | ||
130 | + lookQrcode: true, | ||
131 | + link: helpers.urlFormat(`/home/QRcode/${order.orderCode}`), | ||
132 | + }); | ||
133 | + break; | ||
134 | + case 'afterService':// 售后服务 | ||
135 | + orderBtn.push({ | ||
136 | + afterService: true | ||
137 | + }); | ||
138 | + break; | ||
139 | + case 'readd':// 再次购买 | ||
140 | + orderBtn.push({ | ||
141 | + readd: true | ||
142 | + }); | ||
143 | + break; | ||
144 | + default: | ||
145 | + break; | ||
146 | + } | ||
147 | + }); | ||
149 | 148 | ||
150 | - if (!uid || !orderCode || !stringProcess.isNumeric(orderCode)) { | ||
151 | - return Promise.resolve({}); | 149 | + return {orderBtn: orderBtn}; |
152 | } | 150 | } |
153 | 151 | ||
154 | - return api.get('', { | ||
155 | - method: 'app.SpaceOrders.detail', | ||
156 | - uid: uid, | ||
157 | - order_code: orderCode | ||
158 | - }).then(result => { | ||
159 | - if (result && result.code === 200) { | ||
160 | - let orderDetail = camelCase(result.data); | ||
161 | - let goods = []; | ||
162 | - let status = _getOrderStatus(orderDetail, true); | ||
163 | - let offlinestore; // 线下店订单 | ||
164 | - let deliveryOffline; // 门店取货 | ||
165 | - | ||
166 | - orderDetail = _.assign(orderDetail, status); | ||
167 | - | ||
168 | - if (parseInt(orderDetail.attribute, 10) === 3) { | ||
169 | - orderDetail = _.assign(orderDetail, { | ||
170 | - isVirtual: true, | ||
171 | - mobile: result.data.mobile | ||
172 | - }); | ||
173 | - } | 152 | + orderDetailData(uid, orderCode) { |
174 | 153 | ||
175 | - orderDetail = _.assign(orderDetail, { | ||
176 | - addressAll: orderDetail.area + orderDetail.address | ||
177 | - }); | 154 | + if (!uid || !orderCode || !stringProcess.isNumeric(orderCode)) { |
155 | + return Promise.resolve({}); | ||
156 | + } | ||
178 | 157 | ||
179 | - _.forEach(orderDetail.orderGoods, function(data) { | ||
180 | - let obj = {}; | ||
181 | - let count = +data.buyNumber; | ||
182 | - | ||
183 | - obj = _.assign(obj, { | ||
184 | - thumb: data.goodsImage, | ||
185 | - name: data.productName, | ||
186 | - color: data.factoryColorName ? data.factoryColorName : data.colorName, | ||
187 | - size: data.sizeName, | ||
188 | - payPrice: data.realPayPrice, | ||
189 | - salePrice: parseFloat(data.salesPrice).toFixed(2), | ||
190 | - count: count, | ||
191 | - tickets: data.goodsType === 'ticket' | ||
192 | - | ||
193 | - // isVipPrice: data.discountTag === 'V', | ||
194 | - // isStudebt: data.discountTag === 'S' | 158 | + return api.get('', { |
159 | + method: 'app.SpaceOrders.detail', | ||
160 | + uid: uid, | ||
161 | + order_code: orderCode | ||
162 | + }).then(result => { | ||
163 | + if (result && result.code === 200) { | ||
164 | + let orderDetail = camelCase(result.data); | ||
165 | + let goods = []; | ||
166 | + let status = this._getOrderStatus(orderDetail, true); | ||
167 | + let offlinestore; // 线下店订单 | ||
168 | + let deliveryOffline; // 门店取货 | ||
169 | + | ||
170 | + orderDetail = _.assign(orderDetail, status); | ||
171 | + | ||
172 | + if (parseInt(orderDetail.attribute, 10) === 3) { | ||
173 | + orderDetail = _.assign(orderDetail, { | ||
174 | + isVirtual: true, | ||
175 | + mobile: result.data.mobile | ||
176 | + }); | ||
177 | + } | ||
178 | + | ||
179 | + orderDetail = _.assign(orderDetail, { | ||
180 | + addressAll: orderDetail.area + orderDetail.address | ||
195 | }); | 181 | }); |
196 | 182 | ||
197 | - if (parseInt(data.realPayPrice, 10) === parseInt(data.salesPrice, 10)) { | ||
198 | - obj.salePrice = false; | ||
199 | - } | 183 | + _.forEach(orderDetail.orderGoods, function(data) { |
184 | + let obj = {}; | ||
185 | + let count = +data.buyNumber; | ||
200 | 186 | ||
201 | - if (data.goodsType === 'gift') { | ||
202 | obj = _.assign(obj, { | 187 | obj = _.assign(obj, { |
203 | - gift: true, | 188 | + thumb: data.goodsImage, |
189 | + name: data.productName, | ||
190 | + color: data.factoryColorName ? data.factoryColorName : data.colorName, | ||
191 | + size: data.sizeName, | ||
192 | + payPrice: data.realPayPrice, | ||
204 | salePrice: parseFloat(data.salesPrice).toFixed(2), | 193 | salePrice: parseFloat(data.salesPrice).toFixed(2), |
205 | - payPrice: data.goodsPrice | ||
206 | - }); | ||
207 | - } else if (data.goodsType === 'price_gift') { | ||
208 | - obj = _.assign(obj, { | ||
209 | - advanceBuy: true, | ||
210 | - salePrice: parseFloat(data.salesPrice).toFixed(2), | ||
211 | - payPrice: data.goodsPrice | ||
212 | - }); | ||
213 | - } | 194 | + count: count, |
195 | + tickets: data.goodsType === 'ticket' | ||
214 | 196 | ||
215 | - if (data.expectArrivalTime) { | ||
216 | - obj = _.assign(obj, { | ||
217 | - appearDate: data.expectArrivalTime | 197 | + // isVipPrice: data.discountTag === 'V', |
198 | + // isStudebt: data.discountTag === 'S' | ||
218 | }); | 199 | }); |
219 | - } | ||
220 | 200 | ||
221 | - if (data.productSkn) { | ||
222 | - obj = _.assign(obj, { | ||
223 | - link: '/product/' + data.productSkn + '.html' // 商品url改版 | 201 | + if (parseInt(data.realPayPrice, 10) === parseInt(data.salesPrice, 10)) { |
202 | + obj.salePrice = false; | ||
203 | + } | ||
204 | + | ||
205 | + if (data.goodsType === 'gift') { | ||
206 | + obj = _.assign(obj, { | ||
207 | + gift: true, | ||
208 | + salePrice: parseFloat(data.salesPrice).toFixed(2), | ||
209 | + payPrice: data.goodsPrice | ||
210 | + }); | ||
211 | + } else if (data.goodsType === 'price_gift') { | ||
212 | + obj = _.assign(obj, { | ||
213 | + advanceBuy: true, | ||
214 | + salePrice: parseFloat(data.salesPrice).toFixed(2), | ||
215 | + payPrice: data.goodsPrice | ||
216 | + }); | ||
217 | + } | ||
218 | + | ||
219 | + if (data.expectArrivalTime) { | ||
220 | + obj = _.assign(obj, { | ||
221 | + appearDate: data.expectArrivalTime | ||
222 | + }); | ||
223 | + } | ||
224 | + | ||
225 | + if (data.productSkn) { | ||
226 | + obj = _.assign(obj, { | ||
227 | + link: '/product/' + data.productSkn + '.html' // 商品url改版 | ||
228 | + }); | ||
229 | + } | ||
230 | + | ||
231 | + if (data.goodsType === 'ticket') { | ||
232 | + obj = _.assign(obj, { | ||
233 | + tickets: true | ||
234 | + }); | ||
235 | + } | ||
236 | + | ||
237 | + goods.push(obj); | ||
238 | + | ||
239 | + orderDetail = _.assign(orderDetail, { | ||
240 | + orderCount: count | ||
224 | }); | 241 | }); |
225 | - } | ||
226 | 242 | ||
227 | - if (data.goodsType === 'ticket') { | ||
228 | - obj = _.assign(obj, { | ||
229 | - tickets: true | 243 | + }); |
244 | + | ||
245 | + orderDetail.goods = goods; | ||
246 | + | ||
247 | + // 为支付的拆单配送信息 | ||
248 | + if (orderDetail.isMultiPackage === 'Y') { | ||
249 | + orderDetail = _.assign(orderDetail, { | ||
250 | + jitDetailUrl: helpers.urlFormat('/cart/index/new/jitDetail', {orderCode: orderCode}) | ||
230 | }); | 251 | }); |
231 | } | 252 | } |
232 | 253 | ||
233 | - goods.push(obj); | 254 | + if (parseInt(orderDetail.paymentType, 10) !== 2) { |
255 | + if (_.get(orderDetail, 'isOfflineshops', 'N') === 'Y') { | ||
234 | 256 | ||
235 | - orderDetail = _.assign(orderDetail, { | ||
236 | - orderCount: count | ||
237 | - }); | 257 | + offlinestore = orderDetail.offlineStore !== '' ? orderDetail.offlineStore : false; |
258 | + deliveryOffline = _.get(orderDetail, 'isDeliveryOffline', 'N') === 'Y' ? true : false; | ||
259 | + } else { | ||
238 | 260 | ||
239 | - }); | 261 | + offlinestore = false; |
262 | + deliveryOffline = false; | ||
263 | + } | ||
240 | 264 | ||
241 | - orderDetail.goods = goods; | ||
242 | - | ||
243 | - // 为支付的拆单配送信息 | ||
244 | - if (orderDetail.isMultiPackage === 'Y') { | ||
245 | - orderDetail = _.assign(orderDetail, { | ||
246 | - jitDetailUrl: helpers.urlFormat('/cart/index/new/jitDetail', {orderCode: orderCode}) | ||
247 | - }); | ||
248 | - } | 265 | + orderDetail = _.assign(orderDetail, { |
266 | + offlinestore: offlinestore, | ||
267 | + deliveryOffline: deliveryOffline | ||
268 | + }); | ||
269 | + } else { | ||
270 | + orderDetail.paymentName = orderDetail.paymentName !== '' ? orderDetail.paymentName : '货到付款'; | ||
271 | + } | ||
249 | 272 | ||
250 | - if (parseInt(orderDetail.paymentType, 10) !== 2) { | ||
251 | - if (_.get(orderDetail, 'isOfflineshops', 'N') === 'Y') { | 273 | + if (orderDetail.invoice) { |
274 | + orderDetail.invoice.type = (orderDetail.invoice.type + '' === '2'); | ||
275 | + } | ||
252 | 276 | ||
253 | - offlinestore = orderDetail.offlineStore !== '' ? orderDetail.offlineStore : false; | ||
254 | - deliveryOffline = _.get(orderDetail, 'isDeliveryOffline', 'N') === 'Y' ? true : false; | ||
255 | - } else { | 277 | + if (_.get(result, 'data.isSupportRefund', 'N') === 'Y') { |
278 | + orderDetail.refundUrl = helpers.urlFormat('/home/return/refund', {orderCode: orderCode}); | ||
279 | + } | ||
256 | 280 | ||
257 | - offlinestore = false; | ||
258 | - deliveryOffline = false; | 281 | + if (_.get(result, 'data.isSupportExchange', 'N') === 'Y') { |
282 | + orderDetail.changeUrl = helpers.urlFormat('/home/return/exchange', {orderCode: orderCode}); | ||
259 | } | 283 | } |
260 | 284 | ||
261 | - orderDetail = _.assign(orderDetail, { | ||
262 | - offlinestore: offlinestore, | ||
263 | - deliveryOffline: deliveryOffline | ||
264 | - }); | 285 | + orderDetail.imUrl = helpers.urlFormat('/service/chatQaList'); |
286 | + | ||
287 | + return orderDetail; | ||
265 | } else { | 288 | } else { |
266 | - orderDetail.paymentName = orderDetail.paymentName !== '' ? orderDetail.paymentName : '货到付款'; | 289 | + logger.error('detail info return no 200'); |
290 | + return {}; | ||
267 | } | 291 | } |
268 | 292 | ||
269 | - if (orderDetail.invoice) { | ||
270 | - orderDetail.invoice.type = (orderDetail.invoice.type + '' === '2'); | ||
271 | - } | 293 | + }); |
294 | + } | ||
272 | 295 | ||
273 | - if (_.get(result, 'data.isSupportRefund', 'N') === 'Y') { | ||
274 | - orderDetail.refundUrl = helpers.urlFormat('/home/return/refund', {orderCode: orderCode}); | ||
275 | - } | 296 | + // 删除订单 |
297 | + delOrder(orderCode, uid) { | ||
298 | + return api.get('', { | ||
299 | + method: 'app.SpaceOrders.delOrderByCode', | ||
300 | + uid: uid, | ||
301 | + order_code: orderCode | ||
302 | + }); | ||
303 | + } | ||
276 | 304 | ||
277 | - if (_.get(result, 'data.isSupportExchange', 'N') === 'Y') { | ||
278 | - orderDetail.changeUrl = helpers.urlFormat('/home/return/exchange', {orderCode: orderCode}); | 305 | + // 再次购买 |
306 | + readdData(orderCode, uid) { | ||
307 | + return api.get('', { | ||
308 | + method: 'app.Shopping.readd', | ||
309 | + uid: uid, | ||
310 | + order_code: orderCode | ||
311 | + }).then((result) => { | ||
312 | + if (result && result.code === 200) { | ||
313 | + result.message = '商品已重新加入购物车'; | ||
314 | + } else if (result.code === '400') { | ||
315 | + result.message = '缺失参数'; | ||
316 | + } else { | ||
317 | + result.message = '商品加入购物车失败'; | ||
318 | + result.datat = {}; | ||
279 | } | 319 | } |
280 | 320 | ||
281 | - orderDetail.imUrl = helpers.urlFormat('/service/chatQaList'); | 321 | + return result; |
322 | + }); | ||
323 | + } | ||
282 | 324 | ||
283 | - return orderDetail; | ||
284 | - } else { | ||
285 | - logger.error('detail info return no 200'); | ||
286 | - return {}; | ||
287 | - } | 325 | + // 取消订单 |
326 | + cancelOrder(orderCode, uid, reasonId, gender, channel, reason) { | ||
327 | + | ||
328 | + return api.get('', { | ||
329 | + method: 'app.SpaceOrders.close', | ||
330 | + uid: uid, | ||
331 | + order_code: orderCode, | ||
332 | + reasonId: reasonId, | ||
333 | + reasons: reason, | ||
334 | + gender: gender, | ||
335 | + yh_channel: channel | ||
336 | + }); | ||
337 | + }; | ||
288 | 338 | ||
289 | - }); | ||
290 | -}; | 339 | + /** |
340 | + * 申请退款 | ||
341 | + */ | ||
342 | + refundApply(params) { | ||
343 | + return api.get('', { | ||
344 | + method: 'app.SpaceOrders.refundApply', | ||
345 | + uid: params.uid, | ||
346 | + order_code: params.orderCode, | ||
347 | + reason_id: params.reasonId, | ||
348 | + reason: params.reason | ||
349 | + }); | ||
350 | + } | ||
291 | 351 | ||
292 | -// 删除订单 | ||
293 | -const delOrder = (orderCode, uid) => { | ||
294 | - return api.get('', { | ||
295 | - method: 'app.SpaceOrders.delOrderByCode', | ||
296 | - uid: uid, | ||
297 | - order_code: orderCode | ||
298 | - }); | ||
299 | -}; | 352 | + /* |
353 | + * 我的订单-查看物流 | ||
354 | + * @param int $orderCode 订单号 | ||
355 | + * @param int $uid 用户ID | ||
356 | + * @return array | ||
357 | + */ | ||
358 | + _logisticsData(params) { | ||
359 | + let finalParams = { | ||
360 | + order_code: params.order_code, | ||
361 | + uid: params.uid | ||
362 | + }; | ||
363 | + | ||
364 | + finalParams.method = 'app.express.li'; | ||
300 | 365 | ||
301 | -// 再次购买 | ||
302 | -const readdData = (orderCode, uid) => { | ||
303 | - return api.get('', { | ||
304 | - method: 'app.Shopping.readd', | ||
305 | - uid: uid, | ||
306 | - order_code: orderCode | ||
307 | - }).then((result) => { | ||
308 | - if (result && result.code === 200) { | ||
309 | - result.message = '商品已重新加入购物车'; | ||
310 | - } else if (result.code === '400') { | ||
311 | - result.message = '缺失参数'; | 366 | + // 退换货物流 |
367 | + if (params.type === 'refund' || params.type === 'change') { | ||
368 | + _.assign(finalParams, { | ||
369 | + method: 'app.express.getNewExpress', | ||
370 | + id: params.id, | ||
371 | + type: params.type | ||
372 | + }); | ||
312 | } else { | 373 | } else { |
313 | - result.message = '商品加入购物车失败'; | ||
314 | - result.datat = {}; | 374 | + _.assign(finalParams, { |
375 | + method: 'app.express.li' | ||
376 | + }); | ||
315 | } | 377 | } |
316 | 378 | ||
317 | - return result; | ||
318 | - }); | ||
319 | -}; | ||
320 | - | ||
321 | -// 取消订单 | ||
322 | -const cancelOrder = (orderCode, uid, reasonId, gender, channel, reason) => { | ||
323 | - | 379 | + return api.get('', finalParams); |
380 | + } | ||
324 | 381 | ||
325 | - return api.get('', { | ||
326 | - method: 'app.SpaceOrders.close', | ||
327 | - uid: uid, | ||
328 | - order_code: orderCode, | ||
329 | - reasonId: reasonId, | ||
330 | - reasons: reason, | ||
331 | - gender: gender, | ||
332 | - yh_channel: channel | ||
333 | - }); | ||
334 | -}; | 382 | + /** |
383 | + * 获取物流详情页banner | ||
384 | + */ | ||
385 | + _getLogisterBanner() { | ||
386 | + return serviceApi.get('operations/api/v5/resource/get', { | ||
387 | + content_code: CODE_LOGISTIC_BANNER | ||
388 | + }, {code: 200}); | ||
389 | + } | ||
335 | 390 | ||
336 | -/** | ||
337 | - * 申请退款 | ||
338 | - */ | ||
339 | -const refundApply = (params) => { | ||
340 | - return api.get('', { | ||
341 | - method: 'app.SpaceOrders.refundApply', | ||
342 | - uid: params.uid, | ||
343 | - order_code: params.orderCode, | ||
344 | - reason_id: params.reasonId, | ||
345 | - reason: params.reason | ||
346 | - }); | ||
347 | -}; | 391 | + /** |
392 | + * 查看物流 | ||
393 | + * | ||
394 | + * @param int orderCode 订单编号 | ||
395 | + * @param int uid 用户ID | ||
396 | + * @return array | ||
397 | + */ | ||
398 | + logistics(params) { | ||
399 | + return Promise.all([ | ||
400 | + this._getLogisterBanner(), | ||
401 | + this._logisticsData(params), | ||
402 | + ]).then(result => { | ||
403 | + let finalResult = { | ||
404 | + banner: [] | ||
405 | + }; | ||
406 | + let banners = result[0]; | ||
407 | + let logistic = result[1]; | ||
408 | + | ||
409 | + // 获取物流详情页banner | ||
410 | + if (banners && banners.data) { | ||
411 | + _.forEach(banners.data, value => { | ||
412 | + _.forEach(value.data, subValue => { | ||
413 | + finalResult.banner.push({ | ||
414 | + url: subValue.url, | ||
415 | + img: subValue.src | ||
416 | + }); | ||
417 | + }); | ||
418 | + }); | ||
419 | + } | ||
348 | 420 | ||
349 | -/* | ||
350 | -* 我的订单-查看物流 | ||
351 | -* @param int $orderCode 订单号 | ||
352 | -* @param int $uid 用户ID | ||
353 | -* @return array | ||
354 | -*/ | ||
355 | -const _logisticsData = (params) => { | ||
356 | - let finalParams = { | ||
357 | - order_code: params.order_code, | ||
358 | - uid: params.uid | ||
359 | - }; | 421 | + if (logistic && logistic.data) { |
422 | + finalResult.logisticUrl = _.get(logistic, 'data.url', ''); | ||
423 | + finalResult.logisticImg = _.get(logistic, 'data.logo', ''); | ||
424 | + finalResult.logisticCompany = _.get(logistic, 'data.caption', ''); | ||
425 | + finalResult.logisticNumber = _.get(logistic, 'data.express_number', ''); | ||
426 | + finalResult.logisticDetail = []; | ||
427 | + | ||
428 | + _.forEach(_.get(logistic, 'data.express_detail', []), value => { | ||
429 | + finalResult.logisticDetail.push({ | ||
430 | + status: value.accept_address, | ||
431 | + date: value.acceptTime, | ||
432 | + }); | ||
433 | + }); | ||
360 | 434 | ||
361 | - finalParams.method = 'app.express.li'; | 435 | + } |
362 | 436 | ||
363 | - // 退换货物流 | ||
364 | - if (params.type === 'refund' || params.type === 'change') { | ||
365 | - _.assign(finalParams, { | ||
366 | - method: 'app.express.getNewExpress', | ||
367 | - id: params.id, | ||
368 | - type: params.type | ||
369 | - }); | ||
370 | - } else { | ||
371 | - _.assign(finalParams, { | ||
372 | - method: 'app.express.li' | 437 | + return finalResult; |
373 | }); | 438 | }); |
374 | } | 439 | } |
375 | 440 | ||
376 | - return api.get('', finalParams); | ||
377 | -}; | ||
378 | - | ||
379 | -/** | ||
380 | - * 获取物流详情页banner | ||
381 | - */ | ||
382 | -const _getLogisterBanner = () => { | ||
383 | - return serviceApi.get('operations/api/v5/resource/get', { | ||
384 | - content_code: CODE_LOGISTIC_BANNER | ||
385 | - }, {code: 200}); | ||
386 | -}; | ||
387 | - | ||
388 | -/** | ||
389 | - * 查看物流 | ||
390 | - * | ||
391 | - * @param int orderCode 订单编号 | ||
392 | - * @param int uid 用户ID | ||
393 | - * @return array | ||
394 | - */ | ||
395 | -const logistics = (params) => { | ||
396 | - return Promise.all([ | ||
397 | - _getLogisterBanner(), | ||
398 | - _logisticsData(params), | ||
399 | - ]).then(result => { | ||
400 | - let finalResult = { | ||
401 | - banner: [] | 441 | + /** |
442 | + * 修改订单地址 | ||
443 | + * @param {参数} params | ||
444 | + */ | ||
445 | + changeAddress(params) { | ||
446 | + let apiParams = { | ||
447 | + method: 'app.SpaceOrders.updateDeliveryAddress', | ||
448 | + order_code: params.orderCode, | ||
449 | + uid: params.uid, | ||
450 | + user_name: params.username, | ||
451 | + area_code: params.areaCode, | ||
452 | + address: params.address, | ||
453 | + mobile: params.mobile, | ||
454 | + udid: params.udid | ||
402 | }; | 455 | }; |
403 | - let banners = result[0]; | ||
404 | - let logistic = result[1]; | ||
405 | - | ||
406 | - // 获取物流详情页banner | ||
407 | - if (banners && banners.data) { | ||
408 | - _.forEach(banners.data, value => { | ||
409 | - _.forEach(value.data, subValue => { | ||
410 | - finalResult.banner.push({ | ||
411 | - url: subValue.url, | ||
412 | - img: subValue.src | ||
413 | - }); | ||
414 | - }); | 456 | + |
457 | + if (params.addressId) { | ||
458 | + Object.assign(apiParams, { | ||
459 | + address_id: params.addressId | ||
415 | }); | 460 | }); |
416 | } | 461 | } |
417 | 462 | ||
418 | - if (logistic && logistic.data) { | ||
419 | - finalResult.logisticUrl = _.get(logistic, 'data.url', ''); | ||
420 | - finalResult.logisticImg = _.get(logistic, 'data.logo', ''); | ||
421 | - finalResult.logisticCompany = _.get(logistic, 'data.caption', ''); | ||
422 | - finalResult.logisticNumber = _.get(logistic, 'data.express_number', ''); | ||
423 | - finalResult.logisticDetail = []; | ||
424 | - | ||
425 | - _.forEach(_.get(logistic, 'data.express_detail', []), value => { | ||
426 | - finalResult.logisticDetail.push({ | ||
427 | - status: value.accept_address, | ||
428 | - date: value.acceptTime, | ||
429 | - }); | 463 | + if (params.phone) { |
464 | + Object.assign(apiParams, { | ||
465 | + phone: params.phone | ||
430 | }); | 466 | }); |
431 | - | ||
432 | } | 467 | } |
433 | 468 | ||
434 | - return finalResult; | ||
435 | - }); | ||
436 | -}; | ||
437 | - | ||
438 | -/** | ||
439 | - * 修改订单地址 | ||
440 | - * @param {参数} params | ||
441 | - */ | ||
442 | -const changeAddress = (params) => { | ||
443 | - let apiParams = { | ||
444 | - method: 'app.SpaceOrders.updateDeliveryAddress', | ||
445 | - order_code: params.orderCode, | ||
446 | - uid: params.uid, | ||
447 | - user_name: params.username, | ||
448 | - area_code: params.areaCode, | ||
449 | - address: params.address, | ||
450 | - mobile: params.mobile, | ||
451 | - udid: params.udid | ||
452 | - }; | ||
453 | - | ||
454 | - if (params.addressId) { | ||
455 | - Object.assign(apiParams, { | ||
456 | - address_id: params.addressId | ||
457 | - }); | ||
458 | - } | ||
459 | - | ||
460 | - if (params.phone) { | ||
461 | - Object.assign(apiParams, { | ||
462 | - phone: params.phone | ||
463 | - }); | 469 | + return api.post('', apiParams); |
464 | } | 470 | } |
465 | - | ||
466 | - return api.post('', apiParams); | ||
467 | -}; | ||
468 | - | ||
469 | -module.exports = { | ||
470 | - orderDetailData, | ||
471 | - closeReasons, | ||
472 | - delOrder, | ||
473 | - readdData, | ||
474 | - cancelOrder, | ||
475 | - refundApply, | ||
476 | - logistics, | ||
477 | - changeAddress | ||
478 | }; | 471 | }; |
-
Please register or login to post a comment