order.js 5.08 KB
/**
 * 订单相关操作.
 * @author hgwang
 * @date 2016-07-22
 */
'use strict';
const orderModel = require('../models/order');
const notLoginCode = 400;
const notLoginTip = '抱歉,您暂未登录!';
const _ = require('lodash');

const order = {
    orders: (req, res) => {
        const type = req.query.type || 1;

        res.render('order', {
            module: 'me',
            page: 'order',
            type: type
        });
    },
    orderDetail: (req, res) => {
        const orderCode = req.query.orderCode;
        const uid = req.user.uid;

        if (!uid && req.xhr) {
            return res.json({
                code: notLoginCode,
                message: notLoginTip
            });
        }

        res.render('order-detail', {
            module: 'me',
            page: 'order-detail',
            orderCode: orderCode
        });
    },
    getOrderData: (req, res, next) => {
        const uid = req.user.uid;

        if (!uid && req.xhr) {
            return res.json({
                code: notLoginCode,
                message: notLoginTip
            });
        }
        const param = {
            uid: uid,
            page: req.query.page,
            type: req.query.type,
            limit: req.query.limit
        };

        orderModel.getOrders(param).then(result => {
            return res.json(result);
        }).catch(next);
    },
    getOrderDetailData: (req, res, next) => {
        const orderCode = req.query.orderCode;
        const uid = req.user.uid;

        if (!uid && req.xhr) {
            return res.json({
                code: notLoginCode,
                message: notLoginTip
            });
        }

        orderModel.getOrderDetail(uid, orderCode).then(result => {
            if (result.data.promotion_formulas) {
                _.forEach(result.data.promotion_formulas, function(val) {
                    if (val.promotion === '活动金额') {
                        val.promotion = 'VIP优惠';
                    }
                });
            }
            return res.json(result);
        }).catch(next);
    },
    cancelOrder: (req, res, next) => {
        const orderCode = req.body.orderCode;
        const reasonId = req.body.reasonId;
        const reason = req.body.reason;
        const uid = req.user.uid;

        orderModel.cancelOrder(uid, orderCode, reasonId, reason).then(result => {
            return res.json(result);
        }).catch(next);
    },
    readdData: (req, res, next) => {
        // 再次购买
        const orderCode = req.body.orderCode;
        const uid = req.user.uid;

        orderModel.readdData(orderCode, uid).then((result) => {
            res.json(result);
        }).catch(next);
    },
    confirmOrder: (req, res, next) => {
        const uid = req.user.uid;
        const orderode = req.body.orderCode;

        orderModel.confirmOrder(uid, orderode).then(result => {
            return res.json(result);
        }).catch(next);
    },
    deleteOrder: (req, res, next) => {
        const orderCode = req.body.orderCode;
        const uid = req.user.uid;

        if (!uid && req.xhr) {
            return res.json({
                code: notLoginCode,
                message: notLoginTip
            });
        }

        orderModel.deleteOrder(orderCode, uid).then(result => {
            return res.json(result);
        }).catch(next);
    },
    coin: (req, res, next) => {
        orderModel.getCoins(req.user.uid).then(result => {
            res.render('coin', {
                module: 'me',
                page: 'coin',
                coin: result
            });
        }).catch(next);
    },

    /**
     * 获取yoho币明细
     * @param req
     * @param res
     * @returns {*|{read, write}}
     */
    getCoinDetail: (req, res, next) => {
        const uid = req.user.uid;
        const page = req.query.page;
        const limit = req.query.limit;

        if (!uid && req.xhr) {
            return res.json({
                code: notLoginCode,
                message: notLoginTip
            });
        }

        orderModel.getCoinDetail(uid, page, limit).then(result => {
            return res.json(result);
        }).catch(next);
    },

    // 订单-物流
    logistic: (req, res) => {
        res.render('order-logistic', {
            module: 'me',
            page: 'order-logistic'
        });
    },

    // API- 订单-物流
    getOrderLogisticdate: (req, res, next) => {
        (req.query.type === 'exchange') && (req.query.type = 'change');

        orderModel.getOrderLogisticdate({
            uid: req.user.uid || '',
            type: req.query.type || '',
            order_code: req.query.orderCode,
            id: req.query.id
        }).then(result => {
            return res.json(result);
        }).catch(next);
    },
    cancelReason: (req, res) => {
        res.render('cancelreason', {
            module: 'me',
            page: 'cancelreason'
        });
    },

    // 获取取消订单原因
    getCancelReason: (req, res, next) => {
        orderModel.getCancelReason().then(result => {
            return res.json(result);
        }).catch(next);
    }
};

module.exports = order;