Explorar o código

add orderdetail api

maguohua %!s(int64=8) %!d(string=hai) anos
pai
achega
dfad731a9e
Modificáronse 5 ficheiros con 62 adicións e 14 borrados
  1. 1 1
      README.md
  2. 1 1
      controller/v1/carts.js
  3. 57 12
      controller/v1/order.js
  4. 2 0
      models/bos/order.js
  5. 1 0
      routes/bos.js

+ 1 - 1
README.md

@@ -64,7 +64,7 @@ npm run dev (需开启本地mongodb,如果没有安装mongodb,可以运行 n
 - [x] 添加、删除、修改收货地址
 - [x] 下单功能 
 - [x] 订单列表
-- [ ] 订单详情
+- [x] 订单详情
 - [ ] 下载App
 - [ ] 帐户信息
 - [ ] 服务中心

+ 1 - 1
controller/v1/carts.js

@@ -69,7 +69,7 @@ class Carts extends AddressComponent{
 			entities[0].map(item => {
 				deliver_amount += item.price * item.quantity;
 				if (item.packing_fee) {
-					this.extra.price += item.packing_fee*item.quantity;
+					this.extra[0].price += item.packing_fee*item.quantity;
 				}
 				if (item.specs[0]) {
 					return item.name = item.name + '-' + item.specs[0];

+ 57 - 12
controller/v1/order.js

@@ -5,6 +5,7 @@ import formidable from 'formidable'
 import OrderModel from '../../models/bos/order'
 import CartModel from '../../models/v1/cart'
 import timestamp from 'time-stamp'
+import AddressModel from '../../models/v1/address'
 
 class Order extends BaseComponent{
 	constructor(){
@@ -47,10 +48,10 @@ class Order extends BaseComponent{
 				})
 				return 
 			}
-			let cart;
+			let cartDetail;
 			let order_id;
 			try{
-				cart = await CartModel.findOne({id: cart_id});
+				cartDetail = await CartModel.findOne({id: cart_id});
 				order_id = await this.getId('order_id');
 			}catch(err){
 				console.log('获取数据失败', err);
@@ -65,22 +66,24 @@ class Order extends BaseComponent{
 				basket: {
 					group: entities,
 					packing_fee: {
-						name: cart.cart.extra[0].name,
-						price: cart.cart.extra[0].price,
-						quantity: cart.cart.extra[0].quantity,
+						name: cartDetail.cart.extra[0].name,
+						price: cartDetail.cart.extra[0].price,
+						quantity: cartDetail.cart.extra[0].quantity,
 					}
 				},
-				restaurant_id: cart.cart.restaurant_id,
-				restaurant_image_url: cart.cart.restaurant_info.image_path,
-				restaurant_name:  cart.cart.restaurant_info.name,
-				formatted_created_at: new Date().getTime(),
+				restaurant_id: cartDetail.cart.restaurant_id,
+				restaurant_image_url: cartDetail.cart.restaurant_info.image_path,
+				restaurant_name:  cartDetail.cart.restaurant_info.name,
+				formatted_created_at: timestamp('YYYY-MM-DD mm:ss'),
+				order_time: new Date().getTime(),
+				time_pass: 900,
 				status_bar: {
 					color: 'f60',
 					image_type: '',
 					sub_title: '15分钟内支付',
-					title: '等待支付',
+					title: '',
 				},
-				total_amount: cart.cart.total,
+				total_amount: cartDetail.cart.total,
 				total_quantity: entities[0].length,
 				unique_id: order_id,
 				id: order_id,
@@ -123,7 +126,18 @@ class Order extends BaseComponent{
 			return 
 		}
 		try{
-			const orders = await OrderModel.find({user_id}, '-_id').limit(Number(limit)).skip(Number(offset));
+			const orders = await OrderModel.find({user_id}).limit(Number(limit)).skip(Number(offset));
+			const timeNow = new Date().getTime();
+			orders.map(item => {
+				if (timeNow - item.order_time < 900000) {
+					item.status_bar.title = '等待支付';
+				}else{
+					item.status_bar.title = '支付超时';
+				}
+				item.time_pass = Math.ceil((timeNow - item.order_time)/1000);
+				item.save()
+				return item
+			})
 			res.send(orders);
 		}catch(err){
 			console.log('获取订单列表失败', err);
@@ -134,6 +148,37 @@ class Order extends BaseComponent{
 			})
 		}
 	}
+	async getDetail(req, res, next){
+		const {user_id, order_id} = req.params;
+		try{
+			if (!user_id || !Number(user_id)) {
+				throw new Error('user_id参数错误')
+			}else if(!order_id || !Number(order_id)){
+				throw new Error('order_id参数错误')
+			}
+		}catch(err){
+			console.log(err.message);
+			res.send({
+				status: 0,
+				type: 'GET_ERROR_PARAM',
+				message: err.message,
+			})
+			return
+		}
+		try{
+			const order = await OrderModel.findOne({id: order_id}, '-_id');
+			const addressDetail = await AddressModel.findOne({id: order.address_id});
+			const orderDetail = {...order, ...{addressDetail: addressDetail.address, consignee: addressDetail.name, deliver_time: '尽快送达', pay_method: '在线支付', phone: addressDetail.phone}};
+			res.send(orderDetail)
+		}catch(err){
+			console.log('获取订单信息失败', err);
+			res.send({
+				status: 0,
+				type: 'ERROR_TO_GET_ORDER_DETAIL',
+				message: '获取订单信息失败'
+			})
+		}
+	}
 }
 
 export default new Order()

+ 2 - 0
models/bos/order.js

@@ -42,6 +42,8 @@ const orderSchema = new Schema({
 		pindan_map: []
 	},
 	formatted_created_at: String,
+	order_time: Number,
+	time_pass: Number,
 	id: Number,
 	is_brand: {type: Number, default: 0},
 	is_deletable: {type: Number, default: 1},

+ 1 - 0
routes/bos.js

@@ -5,5 +5,6 @@ import Order from '../controller/v1/order'
 const router = express.Router();
 
 router.get('/v2/users/:user_id/orders', Order.getOrders)
+router.get('/v1/users/:user_id/orders/:order_id/snapshot', Order.getDetail)
 
 export default router