returns.js 5.48 KB
/**
 * 退换货controller
 * @author: yyq<yanqing.yang@yoho.cn>
 * @date: 2016/7/18
 */
'use strict';

const mcHandler = require('../models/menu-crumb-handler');
const returns = require('../models/returns');
const _ = require('lodash');

/**
 * 退换货列表页
 */
const index = (req, res, next) => {
    const uid = req.user.uid;
    const page = req.query.page;

    returns.getUserReturn(uid, page).then(result => {
        res.display('index', {
            page: 'return-list',
            isMe: true,
            content: Object.assign({
                nav: mcHandler.getMeCrumb('我的退/换货'),
                navigation: mcHandler.getSideMenu('我的退/换货'),
                banner: 'http://placehold.it/{width}x{height}'
            }, result)
        });
    }).catch(next);
};

/**
 * 退货申请页
 */
const refund = (req, res, next) => {
    let uid = req.user.uid;
    let code = parseInt(req.params.orderCode, 10);

    if (!uid || !code) {
        return next();
    }

    returns.getRefundGoodsData(code, uid).then(result => {
        res.display('index', {
            page: 'refund',
            content: result
        });
    }).catch(next);
};

/**
 * 退货申请提交
 * @return { Object } 申请结果
 */
const refundApply = (req, res, next) => {
    let orderCode = req.body.orderCode,
        uid = req.user.uid,
        goods = req.body.goods,
        payment = req.body.payment;

    if (!orderCode || _.isEmpty(goods) || _.isEmpty(payment)) {
        return res.json({
            code: 203,
            message: '非法提交'
        });
    }

    returns.saveRefund(orderCode, uid, goods, payment).then(result => {
        res.json(result);
    }).catch(next);

};

/**
 * 退货详情页
 */
const refundDetail = (req, res, next) => {
    let applyId = parseInt(req.params.applyId, 10),
        uid = req.user.uid;

    if (!uid || !applyId) {
        return next();
    }

    returns.getRefundDetailData(applyId, uid).then(result => {
        res.display('index', {
            page: 'refund-detail',
            content: result
        });
    }).catch(next);
};

/**
 * 换货申请页
 */
const exchange = (req, res, next) => {
    const code = req.params.orderCode;
    const uid = req.user.uid;

    returns.getChangeGoodsList(code, uid).then(result => {
        res.display('index', {
            page: 'exchange',
            isMe: true,
            content: Object.assign({
                nav: mcHandler.getMeCrumb('我的退/换货'),
                navigation: mcHandler.getSideMenu('我的退/换货'),
                banner: 'http://placehold.it/{width}x{height}'
            }, result)
        });
    }).catch(next);
};

/**
 * 获取商品详情
 * @function getProductInfo
 * @param { number } productId 商品id
 * @param { number } productSkn 商品skn
 * @return { Object } 商品信息
 */
const getProductInfo = (req, res, next) => {
    const productId = req.query.productId;
    const productSkn = req.query.productSkn;

    returns.getProductInfo(productId, productSkn).then(result => {
        res.json(result);
    }).catch(next);
};

/**
 * 换货详情页
 */
const exchangeDeatail = (req, res) => {
    let id = parseInt(req.params.applyId, 10),
        uid = req.user.uid;

    returns.getExchangeDetailData(id, uid).then(result => {

        res.display('index', {
            page: 'exchange-detail',
            isMe: true,
            content: {
                nav: mcHandler.getMeCrumb('我的退/换货'),
                navigation: mcHandler.getSideMenu('我的退/换货'),
                banner: 'http://placehold.it/{width}x{height}',
                returns: {
                    title: '换货申请',
                    exchange: result.exchangeDetail
                }
            }
        });

    });
};

/**
 * 换货申请提交
 */
const exchangeSubmit = (req, res, next) => {
    const uid = req.user.uid;

    returns.submitChange(req.query, uid).then(result => {
        res.json(result);
    }).catch(next);
};

/**
 * 取消退换货申请
 * @function cancelApply
 * @param { string } uid 用户uid
 * @param { string } type 退换货类型 refund--退货  exchange--换货
 * @return { Object } 取消退换货结果
 */
const cancelApply = (req, res, next) => {
    const uid = req.user.uid;
    const id = req.body.id;
    const type = req.body.type === 'exchange';

    if (!uid || !id) {
        return next();
    }

    returns.cancelReturnApply(id, uid, type).then(result => {
        res.json(result);
    }).catch(next);
};

/**
 * 设置寄回物流单号
 * @function setEepress
 * @param { Object } param 物流信息
 * @return { Object } 潮流尖货状态
 */
const setEepress = (req, res, next) => {
    const uid = req.user.uid;
    const param = req.body;

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

    returns.setBackEepress(uid, param).then(result => {
        res.json(result);
    }).catch(next);
};

/**
 * 获取银行列表
 * @function setEepress
 * @return { Object } 银行列表
 */
const getUnion = (req, res, next) => {
    returns.getUnionData().then(result => {
        res.json(result);
    }).catch(next);
};

const getChangeType = (req, res, next) => {
    const uid = req.user.uid;
    const areaCode = req.query.areaCode;

    returns.getChangeType(uid, areaCode).then(result => {
        res.json(result);
    }).catch(next);
};

module.exports = {
    index,
    refund,
    refundApply,
    exchange,
    getProductInfo,
    refundDetail,
    exchangeDeatail,
    exchangeSubmit,
    cancelApply,
    setEepress,
    getUnion,
    getChangeType
};