Authored by zhangxiaoru

home

@@ -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 };