refund.js 3.76 KB
/**
 * 退换货
 * @type {Object}
 */
'use strict';
const refundModel = require('../models/refund');
const notLoginCode = 400;
const notLoginTip = '抱歉,您暂未登录!';

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

        if (!orderCode) {
            return next();
        }

        refundModel.getOrderData(uid, orderCode).then(result => {
            res.json(result);
        }).catch(next);
    },
    submit(req, res, next) {
        const uid = req.user.uid;

        refundModel.submitRefundData(uid, req.body).then(result => {
            res.json(result);
        }).catch(next);
    },
    logistics(req, res, next) {
        refundModel.getExpressCompany().then(result => {
            res.render('logistics', {
                module: 'me',
                page: 'logistics',
                applyid: req.query.applyid,
                type: req.query.type,
                company_list: result ? JSON.stringify(result.data) : ''
            });
        }).catch(next);
    },
    saveLogistics(req, res, next) {
        const uid = req.user.uid;
        const applyid = req.body.applyid;

        refundModel.setexpress(applyid, uid, {
            type: req.body.type,
            expressCompany: req.body.expressCompany,
            expressNumber: req.body.expressNumber,
            expressId: req.body.expressId
        }).then(data => {
            return res.json(data);
        }).catch(next);
    },
    refundStatus(req, res) {
        const applyId = req.params.applyId;

        res.render('status', {
            module: 'me',
            page: 'status',
            applyId: applyId,
            type: 'refund'
        });
    },
    exchangeStatus(req, res) {
        const applyId = req.params.applyId;

        res.render('status', {
            module: 'me',
            page: 'status',
            applyId: applyId,
            type: 'exchange'
        });
    },
    statusDetail(req, res, next) {
        const uid = req.user.uid;
        const applyid = req.query.applyid;
        const type = req.query.type;

        if (type === 'refund') {
            refundModel.getRefundDetail(applyid, uid).then(result => {
                return res.json(result);
            }).catch(next);
        } else {
            refundModel.getChangeDetail(applyid, uid).then(result => {
                return res.json(result);
            }).catch(next);
        }
    },
    refundOrders(req, res) {
        res.render('refund-order', {
            module: 'me',
            page: 'refund-order'
        });
    },

    /**
     * 获取退换货订单
     * @param req
     * @param res
     * @returns {*|{read, write}}
     */
    getRefundOrders(req, res, next) {
        const uid = req.user.uid;

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

        refundModel.getRefundOrders(param).then(result => {
            return res.json(result);
        }).catch(next);
    },

    /**
     * 取消申请
     * @param req
     * @param res
     */
    cancelApply(req, res, next) {
        const uid = req.user.uid;
        const id = req.body.id;

        if (!uid && req.xhr) {
            return res.json({
                code: notLoginCode,
                message: notLoginTip
            });
        }
        refundModel.cancelRefundApply(uid, id).then(result => {
            return res.json(result);
        }).catch(next);
    }
};

module.exports = refund;