Authored by zhangxiaoru

orderDetail

@@ -10,8 +10,8 @@ const headerModel = require('../../../doraemon/models/header'); // 头部model @@ -10,8 +10,8 @@ const headerModel = require('../../../doraemon/models/header'); // 头部model
10 const orderDetailModel = require('../models/orderDetail'); 10 const orderDetailModel = require('../models/orderDetail');
11 11
12 const orderDetail = (req, res, next) => { 12 const orderDetail = (req, res, next) => {
13 - let uid = 8039759;  
14 - let orderCode = req.query.order_code || 1612441404; 13 + let uid = req.user.uid ||8039759;
  14 + let orderCode = req.query.order_code || 1606343171;
15 15
16 orderDetailModel.orderDetail(uid, orderCode).then(result => { 16 orderDetailModel.orderDetail(uid, orderCode).then(result => {
17 17
@@ -24,18 +24,45 @@ const orderDetail = (req, res, next) => { @@ -24,18 +24,45 @@ const orderDetail = (req, res, next) => {
24 title: '订单详情', 24 title: '订单详情',
25 pageFooter: true, 25 pageFooter: true,
26 orderDetail: result 26 orderDetail: result
27 -  
28 - // orderDetail: {  
29 - // // isVirtual: false,  
30 - // mobile: '1578934349',  
31 - // orderNum: '113232435',  
32 - // orderStatus: 'quxiao'  
33 - // }  
34 }); 27 });
35 }).catch(next); 28 }).catch(next);
36 29
37 }; 30 };
38 31
  32 +//删除订单
  33 +const delOrder = (req, res, next) => {
  34 + let orderCode = req.query.order_code || 1612441404;
  35 + let uid = req.user.uid || 8039759;
  36 +
  37 + orderDetailModel.delOrder(orderCode, uid).then((result) => {
  38 + res.json(result);
  39 + }).catch(next);
  40 +}
  41 +
  42 +//再次购买
  43 +const readdData = (req, res, next) => {
  44 + let orderCode = req.query.order_code || 1606343171;
  45 + let uid = req.user.uid || 8039759;
  46 +
  47 + orderDetailModel.readdData(orderCode, uid).then((result) => {
  48 + res.json(result);
  49 + }).catch(next);
  50 +}
  51 +
  52 +//取消订单
  53 +const cancelOrder = (req, res, next) => {
  54 + let orderCode = req.query.order_code || 1606343171;
  55 + let uid = req.user.uid ||8039759;
  56 + let reasonId = 1;
  57 +
  58 + orderDetailModel.cancelOrder(orderCode, uid, reasonId).then((result) => {
  59 + res.json(result);
  60 + }).catch(next);
  61 +}
  62 +
39 module.exports = { 63 module.exports = {
40 - orderDetail 64 + orderDetail,
  65 + delOrder,
  66 + readdData,
  67 + cancelOrder
41 }; 68 };
@@ -3,10 +3,155 @@ @@ -3,10 +3,155 @@
3 3
4 const api = global.yoho.API; 4 const api = global.yoho.API;
5 5
6 -// const _ = require('lodash');  
7 -// const config = global.yoho.config;  
8 -// const helpers = global.yoho.helpers;  
9 -// const camelCase = global.yoho.camelCase; 6 +const _ = require('lodash');
  7 +const config = global.yoho.config;
  8 +const helpers = global.yoho.helpers;
  9 +const camelCase = global.yoho.camelCase;
  10 +
  11 +const closeReasons = () => {
  12 + return api.get('', {
  13 + method: 'app.SpaceOrders.closeReasons'
  14 + }).then((result) => {
  15 + //console.log(result)
  16 + if(result && result.code === 200) {
  17 + //console.log(result)
  18 + return result.data;
  19 + } else {
  20 + //console.log('bushi 200');
  21 + return {};
  22 + }
  23 + })
  24 +}
  25 +
  26 +/**
  27 + * 获取订单状态
  28 + * @private
  29 + */
  30 +const _getOrderStatus = (order, showLogistics) => {
  31 + let result = {};
  32 + // let order.status = 3;
  33 +
  34 + if (order.isCancel === 'Y') {
  35 + return {
  36 + canceled: true
  37 + };
  38 + }
  39 +
  40 + // 先判断订单付款方式,根据不同的付款方式计算订单状态。(注:货到付款没有待付款状态)
  41 + // 支付方式为非货到付款时,计算订单状态。
  42 + if (parseInt(order.paymentType, 10) !== 2) {
  43 + switch (order.status) {
  44 + case 0:
  45 +
  46 + /* 待付款 */
  47 + Object.assign(result, {
  48 + unpaid: true,
  49 + payUrl: helpers.urlFormat('/home/orders/pay', {order_code: order.order_code})
  50 + });
  51 + break;
  52 + case 1:
  53 + case 2:
  54 + case 3:
  55 +
  56 + /* 已付款状态不给查看物流 URL */
  57 + Object.assign(result, {
  58 + unreceived: true
  59 + });
  60 + break;
  61 + case 4:
  62 + case 5:
  63 +
  64 + /* 已发货状态,给查看物流或二维码URL */
  65 + Object.assign(result, {
  66 + unreceived: true
  67 + });
  68 +
  69 + /* 是否门票 */
  70 + if (order.virtualType && parseInt(order.virtualType, 10) === 3) {
  71 + Object.assign(result, {
  72 + qrcode: helpers.urlFormat(`/home/QRcode/${order.order_code}`)
  73 + });
  74 + } else {
  75 + _assignExpressInfo(showLogistics, order, result);
  76 + }
  77 + break;
  78 + case 6:
  79 +
  80 + /* 已成功订单,给查看物流或二维码URL */
  81 + Object.assign(result, {
  82 + completed: true
  83 + });
  84 +
  85 + /* 是否门票 */
  86 + if (order.virtual_type && parseInt(order.virtual_type, 10) === 3) {
  87 + Object.assign(result, {
  88 + qrcode: helpers.urlFormat(`/home/QRcode/${order.order_code}`)
  89 + });
  90 + } else {
  91 + _assignExpressInfo(showLogistics, order, result);
  92 + }
  93 + break;
  94 + default:
  95 + break;
  96 + }
  97 + } else {
  98 +
  99 + /* 订单为货到付款订单时,计算订单状态。(货到付款没有待付款状态) */
  100 + switch (order.status) {
  101 + case 0:
  102 +
  103 + /* 备货中 */
  104 + Object.assign(result, {
  105 + unpaid: true
  106 + });
  107 + break;
  108 + case 1:
  109 + case 2:
  110 + case 3:
  111 +
  112 + /* 已付款状态不给查看物流URL */
  113 + Object.assign(result, {
  114 + unreceived: true
  115 + });
  116 + break;
  117 + case 4:
  118 + case 5:
  119 +
  120 + /* 待收货状态,给查看物流 url */
  121 + Object.assign(result, {
  122 + unreceived: true
  123 + });
  124 + _assignExpressInfo(showLogistics, order, result);
  125 + break;
  126 + case 6:
  127 +
  128 + /* 待收货状态,给查看物流 url */
  129 + Object.assign(result, {
  130 + completed: true
  131 + });
  132 + _assignExpressInfo(showLogistics, order, result);
  133 + break;
  134 + default:
  135 + break;
  136 + }
  137 + }
  138 +
  139 + return result;
  140 +};
  141 +
  142 +/**
  143 + * 获取快递有关信息
  144 + * @private
  145 + */
  146 +const _assignExpressInfo = (showLogistics, order, result) => {
  147 + if (showLogistics && order.express_company.caption && order.express_number) {
  148 + Object.assign(result, {
  149 + logisticsUrl: helpers.urlFormat('/home/logistic', {order_code: order.order_code}),
  150 + logisticsCompany: order.express_company.caption,
  151 + logisticsNum: order.express_number
  152 + });
  153 + }
  154 +};
10 155
11 const orderDetail = (uid, orderCode) => { 156 const orderDetail = (uid, orderCode) => {
12 157
@@ -15,26 +160,167 @@ const orderDetail = (uid, orderCode) => { @@ -15,26 +160,167 @@ const orderDetail = (uid, orderCode) => {
15 uid: uid, 160 uid: uid,
16 order_code: orderCode 161 order_code: orderCode
17 }).then((result) => { 162 }).then((result) => {
18 - // let orderDetail = camelCase(result.data); 163 + //console.log(result)
  164 + if(result && result.code === 200) {
  165 + let orderDetail = camelCase(result.data);
  166 + let goods = [];
  167 +
  168 + // let obj = _getOrderStatus(orderDetail);
  169 + let obj = {unpaid: true};
  170 +
  171 + orderDetail = _.assign(orderDetail, obj);
  172 +
  173 + if(orderDetail.virtualType && orderDetail.virtualType === 3) {
  174 + orderDetail = _.assign(orderDetail, {
  175 + isVirtual: true,
  176 + mobile: result.data.mobile
  177 + })
  178 + }
  179 +
  180 + orderDetail = _.assign(orderDetail, {
  181 + addressAll: orderDetail.area + orderDetail.address
  182 + // createTime: date('Y-m-d H:i:s', orderDetail.createTime)
  183 + })
  184 +
  185 + if(orderDetail.counterFlag && orderDetail.counterFlag === 'Y') {
  186 + orderDetail = _.assign(orderDetail, {
  187 + leftTime: parseInt(orderDetail.payLefttime, 10) * 1000
  188 + })
  189 + }
  190 +
  191 + _.forEach(orderDetail.orderGoods, function(data) {
  192 + // console.log(data);
  193 + let obj = {};
  194 + let count = +data.buyNumber;
  195 +
  196 + obj = _.assign(obj, {
  197 + thumb: data.goodsImage,
  198 + name: data.productName,
  199 + color: data.colorName,
  200 + size: data.sizeName,
  201 + price: data.goodsPrice,
  202 + count: count
  203 + })
19 204
20 - // console.log(result); 205 + if(data.goodsType === 'gift') {
  206 + obj = _.assign(obj, {
  207 + gift: true
  208 + })
  209 + } else if(data.goodsType === 'priceGift') {
  210 + obj = _.assign(obj, {
  211 + advanceBuy: true
  212 + })
  213 + }
21 214
22 - // if(orderDetail.virtualType && orderDetail.virtualType === 3) {  
23 - // orderDetail = _.assign(orderDetail, {  
24 - // isVirtual: true,  
25 - // mobile: result.data.mobile  
26 - // })  
27 - // } 215 + if(data.expectArrivalTime) {
  216 + obj = _.assign(obj, {
  217 + appearDate: data.expectArrivalTime
  218 + })
  219 + }
28 220
29 - // orderDetail = _.assign(orderDetail, {  
30 - // addressAll: orderDetail.area + orderDetail.address  
31 - // // createTime: date('Y-m-d H:i:s', orderDetail.createTime)  
32 - // }) 221 + if(data.productSkn) {
  222 + obj = _.assign(obj, {
  223 + link: '/product/show_' + data.productSkn + '.html'
  224 + })
  225 + }
33 226
34 - return result; 227 + goods.push(obj);
  228 +
  229 + orderDetail = _.assign(orderDetail, {
  230 + orderCount: count
  231 + })
  232 +
  233 + });
  234 +
  235 + orderDetail.goods = goods;
  236 +
  237 + if(orderDetail.paymentStatus === 'Y') {
  238 + orderDetail = _.assign(orderDetail, {
  239 + isPay: true
  240 + })
  241 + }
  242 +
  243 + //判断是否可以修改地址
  244 + if(orderDetail.canUpdateDeliveryAddress === 'Y') {
  245 + orderDetail = _.assign(orderDetail, {
  246 + changable: true
  247 + })
  248 + }
  249 +
  250 + //判断是否有关联订单
  251 + if(orderDetail.relateOrderCode === 'Y') {
  252 + orderDetail = _.assign(orderDetail, {
  253 + relation: true
  254 + })
  255 + }
  256 +
  257 + orderDetail = _.assign(orderDetail, {
  258 + goodsAmount: orderDetail.paymentAmount,
  259 + url: '/home/addressModify?orderCode=' + orderCode + '&relation=' + orderDetail.relation
  260 + })
  261 +
  262 + //为支付的拆单配送信息
  263 + if(orderDetail.isMultiPackage && orderDetail.isMultiPackage === 'Y') {
  264 + orderDetail = _.assign(orderDetail, {
  265 + isJit: true,
  266 + // jitDetailUrl: '/cart/index/jitDetailUrl'
  267 + })
  268 + }
  269 +
  270 + //取消订单原因列表
  271 + let resons = closeReasons();
  272 + return closeReasons().then(result => {
  273 + resons = result;
  274 +
  275 + orderDetail = _.assign(orderDetail, {
  276 + cancelReason: resons
  277 + })
  278 +
  279 + //console.log(orderDetail)
  280 + return orderDetail;
  281 + });
  282 +
  283 + return orderDetail;
  284 + } else {
  285 + logger.error('详情信息 返回不是200');
  286 + return {};
  287 + }
  288 +
35 }); 289 });
36 }; 290 };
37 291
  292 +//删除订单
  293 +const delOrder = (orderCode, uid) => {
  294 + return api.get('', {
  295 + method: 'app.SpaceOrders.delOrderByCode',
  296 + uid: uid,
  297 + order_code: orderCode
  298 + });
  299 +}
  300 +
  301 +//再次购买
  302 +const readdData = (orderCode, uid) => {
  303 + return api.get('', {
  304 + method: 'app.Shopping.readd',
  305 + uid: uid,
  306 + order_code: orderCode
  307 + });
  308 +}
  309 +
  310 +//取消订单
  311 +const cancelOrder = (orderCode, uid, reasonId) => {
  312 + return api.get('', {
  313 + method: 'app.SpaceOrders.close',
  314 + uid: uid,
  315 + order_code: orderCode,
  316 + reasonId: reasonId
  317 + });
  318 +}
  319 +
38 module.exports = { 320 module.exports = {
39 - orderDetail 321 + orderDetail,
  322 + closeReasons,
  323 + delOrder,
  324 + readdData,
  325 + cancelOrder
40 }; 326 };
@@ -35,7 +35,9 @@ router.get('/locationList', addressController.locationList); // 异步获å–三ç @@ -35,7 +35,9 @@ router.get('/locationList', addressController.locationList); // 异步获å–三ç
35 router.get('/orders', orderController.order); // 订单列表 35 router.get('/orders', orderController.order); // 订单列表
36 router.get('/getOrders', orderController.getOrders); // 获取订单列表数据 36 router.get('/getOrders', orderController.getOrders); // 获取订单列表数据
37 router.get('/orderDetail', orderDetailController.orderDetail); // 订单详情页 37 router.get('/orderDetail', orderDetailController.orderDetail); // 订单详情页
38 - 38 +router.get('/delOrder', orderDetailController.delOrder); // 删除订单
  39 +router.get('/readd', orderDetailController.readdData); // 再次购买
  40 +router.get('/cancelOrder', orderDetailController.cancelOrder); // 取消订单
39 41
40 router.get('/', homeController.index); // 个人中心首页 42 router.get('/', homeController.index); // 个人中心首页
41 router.get('/mydetails', homeController.myDetails); // 个人基本资料页面 43 router.get('/mydetails', homeController.myDetails); // 个人基本资料页面
1 <div class="order-detail-page yoho-page"> 1 <div class="order-detail-page yoho-page">
2 {{# orderDetail}} 2 {{# orderDetail}}
3 - <div id="order-detail" data-id="{{orderNum}}"> 3 + <div id="order-detail" data-id="{{orderCode}}">
4 {{#if isVirtual}} 4 {{#if isVirtual}}
5 <section class="block"> 5 <section class="block">
6 <div class="tickets-mobile"> 6 <div class="tickets-mobile">
@@ -59,26 +59,26 @@ @@ -59,26 +59,26 @@
59 {{> me/order/jit-more}} 59 {{> me/order/jit-more}}
60 {{/if}} 60 {{/if}}
61 {{# goods}} 61 {{# goods}}
62 - {{> me/order/good}} 62 + {{> order/good}}
63 {{/ goods}} 63 {{/ goods}}
64 </section> 64 </section>
65 65
66 <ul class="cost block"> 66 <ul class="cost block">
67 - {{#each orderBalance}} 67 + {{#each promotionFormulas}}
68 <li> {{promotion}}: 68 <li> {{promotion}}:
69 - <span>{{account}}</span> 69 + <span>{{promotionAmount}}</span>
70 </li> 70 </li>
71 {{/each}} 71 {{/each}}
72 <li> 72 <li>
73 实付金额 73 实付金额
74 - <span>{{price}}</span> 74 + <span>{{amount}}</span>
75 </li> 75 </li>
76 </ul> 76 </ul>
77 - {{#if yohoCoin}} 77 + {{#if yohoGoiveCoin}}
78 <p class="dollar"> 78 <p class="dollar">
79 <span class="bg-dollar"></span> 79 <span class="bg-dollar"></span>
80 共返YOHO币: 80 共返YOHO币:
81 - <span>{{yohoCoin}}</span> 81 + <span>{{yohoGoiveCoin}}</span>
82 </p> 82 </p>
83 {{/if}} 83 {{/if}}
84 84
@@ -153,7 +153,7 @@ @@ -153,7 +153,7 @@
153 <div class="swiper-container box-main"> 153 <div class="swiper-container box-main">
154 <ul class="swiper-wrapper"> 154 <ul class="swiper-wrapper">
155 {{#cancelReason}} 155 {{#cancelReason}}
156 - <li class="swiper-slide" data-reason-id="{{id}}"><span >{{reason}}</span></li> 156 + <li class="swiper-slide" data-reason-id="{{id}}"><span>{{reason}}</span></li>
157 {{/cancelReason}} 157 {{/cancelReason}}
158 </ul> 158 </ul>
159 <div class="active-mask"></div> 159 <div class="active-mask"></div>