Authored by zhangxiaoru

orderDetail

... ... @@ -10,8 +10,8 @@ const headerModel = require('../../../doraemon/models/header'); // 头部model
const orderDetailModel = require('../models/orderDetail');
const orderDetail = (req, res, next) => {
let uid = 8039759;
let orderCode = req.query.order_code || 1612441404;
let uid = req.user.uid ||8039759;
let orderCode = req.query.order_code || 1606343171;
orderDetailModel.orderDetail(uid, orderCode).then(result => {
... ... @@ -24,18 +24,45 @@ const orderDetail = (req, res, next) => {
title: '订单详情',
pageFooter: true,
orderDetail: result
// orderDetail: {
// // isVirtual: false,
// mobile: '1578934349',
// orderNum: '113232435',
// orderStatus: 'quxiao'
// }
});
}).catch(next);
};
//删除订单
const delOrder = (req, res, next) => {
let orderCode = req.query.order_code || 1612441404;
let uid = req.user.uid || 8039759;
orderDetailModel.delOrder(orderCode, uid).then((result) => {
res.json(result);
}).catch(next);
}
//再次购买
const readdData = (req, res, next) => {
let orderCode = req.query.order_code || 1606343171;
let uid = req.user.uid || 8039759;
orderDetailModel.readdData(orderCode, uid).then((result) => {
res.json(result);
}).catch(next);
}
//取消订单
const cancelOrder = (req, res, next) => {
let orderCode = req.query.order_code || 1606343171;
let uid = req.user.uid ||8039759;
let reasonId = 1;
orderDetailModel.cancelOrder(orderCode, uid, reasonId).then((result) => {
res.json(result);
}).catch(next);
}
module.exports = {
orderDetail
orderDetail,
delOrder,
readdData,
cancelOrder
};
... ...
... ... @@ -3,10 +3,155 @@
const api = global.yoho.API;
// const _ = require('lodash');
// const config = global.yoho.config;
// const helpers = global.yoho.helpers;
// const camelCase = global.yoho.camelCase;
const _ = require('lodash');
const config = global.yoho.config;
const helpers = global.yoho.helpers;
const camelCase = global.yoho.camelCase;
const closeReasons = () => {
return api.get('', {
method: 'app.SpaceOrders.closeReasons'
}).then((result) => {
//console.log(result)
if(result && result.code === 200) {
//console.log(result)
return result.data;
} else {
//console.log('bushi 200');
return {};
}
})
}
/**
* 获取订单状态
* @private
*/
const _getOrderStatus = (order, showLogistics) => {
let result = {};
// let order.status = 3;
if (order.isCancel === 'Y') {
return {
canceled: true
};
}
// 先判断订单付款方式,根据不同的付款方式计算订单状态。(注:货到付款没有待付款状态)
// 支付方式为非货到付款时,计算订单状态。
if (parseInt(order.paymentType, 10) !== 2) {
switch (order.status) {
case 0:
/* 待付款 */
Object.assign(result, {
unpaid: true,
payUrl: helpers.urlFormat('/home/orders/pay', {order_code: order.order_code})
});
break;
case 1:
case 2:
case 3:
/* 已付款状态不给查看物流 URL */
Object.assign(result, {
unreceived: true
});
break;
case 4:
case 5:
/* 已发货状态,给查看物流或二维码URL */
Object.assign(result, {
unreceived: true
});
/* 是否门票 */
if (order.virtualType && parseInt(order.virtualType, 10) === 3) {
Object.assign(result, {
qrcode: helpers.urlFormat(`/home/QRcode/${order.order_code}`)
});
} else {
_assignExpressInfo(showLogistics, order, result);
}
break;
case 6:
/* 已成功订单,给查看物流或二维码URL */
Object.assign(result, {
completed: true
});
/* 是否门票 */
if (order.virtual_type && parseInt(order.virtual_type, 10) === 3) {
Object.assign(result, {
qrcode: helpers.urlFormat(`/home/QRcode/${order.order_code}`)
});
} else {
_assignExpressInfo(showLogistics, order, result);
}
break;
default:
break;
}
} else {
/* 订单为货到付款订单时,计算订单状态。(货到付款没有待付款状态) */
switch (order.status) {
case 0:
/* 备货中 */
Object.assign(result, {
unpaid: true
});
break;
case 1:
case 2:
case 3:
/* 已付款状态不给查看物流URL */
Object.assign(result, {
unreceived: true
});
break;
case 4:
case 5:
/* 待收货状态,给查看物流 url */
Object.assign(result, {
unreceived: true
});
_assignExpressInfo(showLogistics, order, result);
break;
case 6:
/* 待收货状态,给查看物流 url */
Object.assign(result, {
completed: true
});
_assignExpressInfo(showLogistics, order, result);
break;
default:
break;
}
}
return result;
};
/**
* 获取快递有关信息
* @private
*/
const _assignExpressInfo = (showLogistics, order, result) => {
if (showLogistics && order.express_company.caption && order.express_number) {
Object.assign(result, {
logisticsUrl: helpers.urlFormat('/home/logistic', {order_code: order.order_code}),
logisticsCompany: order.express_company.caption,
logisticsNum: order.express_number
});
}
};
const orderDetail = (uid, orderCode) => {
... ... @@ -15,26 +160,167 @@ const orderDetail = (uid, orderCode) => {
uid: uid,
order_code: orderCode
}).then((result) => {
// let orderDetail = camelCase(result.data);
//console.log(result)
if(result && result.code === 200) {
let orderDetail = camelCase(result.data);
let goods = [];
// let obj = _getOrderStatus(orderDetail);
let obj = {unpaid: true};
orderDetail = _.assign(orderDetail, obj);
if(orderDetail.virtualType && orderDetail.virtualType === 3) {
orderDetail = _.assign(orderDetail, {
isVirtual: true,
mobile: result.data.mobile
})
}
orderDetail = _.assign(orderDetail, {
addressAll: orderDetail.area + orderDetail.address
// createTime: date('Y-m-d H:i:s', orderDetail.createTime)
})
if(orderDetail.counterFlag && orderDetail.counterFlag === 'Y') {
orderDetail = _.assign(orderDetail, {
leftTime: parseInt(orderDetail.payLefttime, 10) * 1000
})
}
_.forEach(orderDetail.orderGoods, function(data) {
// console.log(data);
let obj = {};
let count = +data.buyNumber;
obj = _.assign(obj, {
thumb: data.goodsImage,
name: data.productName,
color: data.colorName,
size: data.sizeName,
price: data.goodsPrice,
count: count
})
// console.log(result);
if(data.goodsType === 'gift') {
obj = _.assign(obj, {
gift: true
})
} else if(data.goodsType === 'priceGift') {
obj = _.assign(obj, {
advanceBuy: true
})
}
// if(orderDetail.virtualType && orderDetail.virtualType === 3) {
// orderDetail = _.assign(orderDetail, {
// isVirtual: true,
// mobile: result.data.mobile
// })
// }
if(data.expectArrivalTime) {
obj = _.assign(obj, {
appearDate: data.expectArrivalTime
})
}
// orderDetail = _.assign(orderDetail, {
// addressAll: orderDetail.area + orderDetail.address
// // createTime: date('Y-m-d H:i:s', orderDetail.createTime)
// })
if(data.productSkn) {
obj = _.assign(obj, {
link: '/product/show_' + data.productSkn + '.html'
})
}
return result;
goods.push(obj);
orderDetail = _.assign(orderDetail, {
orderCount: count
})
});
orderDetail.goods = goods;
if(orderDetail.paymentStatus === 'Y') {
orderDetail = _.assign(orderDetail, {
isPay: true
})
}
//判断是否可以修改地址
if(orderDetail.canUpdateDeliveryAddress === 'Y') {
orderDetail = _.assign(orderDetail, {
changable: true
})
}
//判断是否有关联订单
if(orderDetail.relateOrderCode === 'Y') {
orderDetail = _.assign(orderDetail, {
relation: true
})
}
orderDetail = _.assign(orderDetail, {
goodsAmount: orderDetail.paymentAmount,
url: '/home/addressModify?orderCode=' + orderCode + '&relation=' + orderDetail.relation
})
//为支付的拆单配送信息
if(orderDetail.isMultiPackage && orderDetail.isMultiPackage === 'Y') {
orderDetail = _.assign(orderDetail, {
isJit: true,
// jitDetailUrl: '/cart/index/jitDetailUrl'
})
}
//取消订单原因列表
let resons = closeReasons();
return closeReasons().then(result => {
resons = result;
orderDetail = _.assign(orderDetail, {
cancelReason: resons
})
//console.log(orderDetail)
return orderDetail;
});
return orderDetail;
} else {
logger.error('详情信息 返回不是200');
return {};
}
});
};
//删除订单
const delOrder = (orderCode, uid) => {
return api.get('', {
method: 'app.SpaceOrders.delOrderByCode',
uid: uid,
order_code: orderCode
});
}
//再次购买
const readdData = (orderCode, uid) => {
return api.get('', {
method: 'app.Shopping.readd',
uid: uid,
order_code: orderCode
});
}
//取消订单
const cancelOrder = (orderCode, uid, reasonId) => {
return api.get('', {
method: 'app.SpaceOrders.close',
uid: uid,
order_code: orderCode,
reasonId: reasonId
});
}
module.exports = {
orderDetail
orderDetail,
closeReasons,
delOrder,
readdData,
cancelOrder
};
... ...
... ... @@ -35,7 +35,9 @@ router.get('/locationList', addressController.locationList); // 异步获å–三ç
router.get('/orders', orderController.order); // 订单列表
router.get('/getOrders', orderController.getOrders); // 获取订单列表数据
router.get('/orderDetail', orderDetailController.orderDetail); // 订单详情页
router.get('/delOrder', orderDetailController.delOrder); // 删除订单
router.get('/readd', orderDetailController.readdData); // 再次购买
router.get('/cancelOrder', orderDetailController.cancelOrder); // 取消订单
router.get('/', homeController.index); // 个人中心首页
router.get('/mydetails', homeController.myDetails); // 个人基本资料页面
... ...
<div class="order-detail-page yoho-page">
{{# orderDetail}}
<div id="order-detail" data-id="{{orderNum}}">
<div id="order-detail" data-id="{{orderCode}}">
{{#if isVirtual}}
<section class="block">
<div class="tickets-mobile">
... ... @@ -59,26 +59,26 @@
{{> me/order/jit-more}}
{{/if}}
{{# goods}}
{{> me/order/good}}
{{> order/good}}
{{/ goods}}
</section>
<ul class="cost block">
{{#each orderBalance}}
{{#each promotionFormulas}}
<li> {{promotion}}:
<span>{{account}}</span>
<span>{{promotionAmount}}</span>
</li>
{{/each}}
<li>
实付金额
<span>{{price}}</span>
<span>{{amount}}</span>
</li>
</ul>
{{#if yohoCoin}}
{{#if yohoGoiveCoin}}
<p class="dollar">
<span class="bg-dollar"></span>
共返YOHO币:
<span>{{yohoCoin}}</span>
<span>{{yohoGoiveCoin}}</span>
</p>
{{/if}}
... ... @@ -153,7 +153,7 @@
<div class="swiper-container box-main">
<ul class="swiper-wrapper">
{{#cancelReason}}
<li class="swiper-slide" data-reason-id="{{id}}"><span >{{reason}}</span></li>
<li class="swiper-slide" data-reason-id="{{id}}"><span>{{reason}}</span></li>
{{/cancelReason}}
</ul>
<div class="active-mask"></div>
... ...