123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- 'use strict';
- import BaseComponent from '../../prototype/baseComponent'
- import formidable from 'formidable'
- import OrderModel from '../../models/bos/order'
- import CartModel from '../../models/v1/cart'
- import timestamp from 'time-stamp'
- class Order extends BaseComponent{
- constructor(){
- super()
- this.postOrder = this.postOrder.bind(this);
- }
- async postOrder(req, res, next){
- const form = new formidable.IncomingForm();
- form.parse(req, async (err, fields, files) => {
- if (err) {
- console.log('formidable解析出错', err);
- res.send({
- status: 1,
- message: '下单失败'
- })
- return
- }
- const {user_id, cart_id} = req.params;
- const {address_id, come_from = 'mobile_web', deliver_time = '', description, entities, geohash, paymethod_id = 1} = fields;
- try{
- if(!(entities instanceof Array) || !entities.length){
- throw new Error('entities参数错误')
- }else if(!(entities[0] instanceof Array) || !entities[0].length){
- throw new Error('entities参数错误')
- }else if(!address_id){
- throw new Error('address_id参数错误')
- }else if(!user_id || !Number(user_id)){
- throw new Error('user_id参数错误')
- }else if(!cart_id || !Number(cart_id)){
- throw new Error('cart_id参数错误')
- }else if(!user_id){
- throw new Error('未登录')
- }
- }catch(err){
- console.log(err.message, err);
- res.send({
- status: 0,
- type: 'ERROR_PARAMS',
- message: err.message
- })
- return
- }
- let cart;
- let order_id;
- try{
- cart = await CartModel.findOne({id: cart_id});
- order_id = await this.getId('order_id');
- }catch(err){
- console.log('获取数据失败', err);
- res.send({
- status: 0,
- type: 'ERROR_GET_DATA',
- message: '获取订单失败',
- })
- return
- }
- const orderObj = {
- basket: {
- group: entities,
- packing_fee: {
- name: cart.cart.extra[0].name,
- price: cart.cart.extra[0].price,
- quantity: cart.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(),
- status_bar: {
- color: 'f60',
- image_type: '',
- sub_title: '15分钟内支付',
- title: '等待支付',
- },
- total_amount: cart.cart.total,
- total_quantity: entities[0].length,
- unique_id: order_id,
- id: order_id,
- user_id,
- address_id,
- }
- try{
- await OrderModel.create(orderObj);
- res.send({
- need_validation: false,
- })
- }catch(err){
- console.log('保存订单数据失败');
- res.send({
- status: 0,
- type: 'ERROR_SAVE_ORDER',
- message: '保存订单失败'
- })
- }
- })
- }
- async getOrders(req, res, next){
- const user_id = req.params.user_id;
- const {limit = 0, offset = 0} = req.query;
- try{
- if(!user_id || !Number(user_id)){
- throw new Error('user_id参数错误')
- }else if(!Number(limit)){
- throw new Error('limit参数错误')
- }else if(typeof Number(offset) !== 'number'){
- throw new Error('offset参数错误')
- }
- }catch(err){
- console.log(err.message, err);
- res.send({
- status: 0,
- type: 'ERROR_PARAMS',
- message: err.message
- })
- return
- }
- try{
- const orders = await OrderModel.find({user_id}, '-_id').limit(Number(limit)).skip(Number(offset));
- res.send(orders);
- }catch(err){
- console.log('获取订单列表失败', err);
- res.send({
- status: 0,
- type: 'ERROR_GET_ORDER_LIST',
- message: '获取订单列表失败'
- })
- }
- }
- }
- export default new Order()
|