installment.js 6.72 KB
/**
 * 分期付款
 * @author: wsl<shuiling.wang@yoho.cn>
 * @date: 2016/08/01
 */
'use strict';

const headerModel = require('../../../doraemon/models/header');
const installmentModel = require('../models/installment');
const _ = require('lodash');
const helpers = global.yoho.helpers;

// 判断是否已经获取到了开通的状态值
const _reviewStatus = (status) => {
    if (status === 1) {
        return {
            review: {
                url: helpers.urlFormat('/product/new')
            }
        };
    } else if (status === 2) {
        return installmentModel.getSearchIntallment().then((goods) => {
            return {
                success: {
                    price: '5000',
                    installmentOnly: {
                        title: '分期专享',
                        goods: goods
                    }
                }
            };
        });

    } else if (status === 3) {
        return {
            error: {
                url: helpers.urlFormat('/product/new')
            }
        };
    }
};

const index = (req, res, next) => {
    let uid = req.user.uid || 3236556;

    Promise.all([installmentModel.getStauts(uid), installmentModel.getSearchIntallment()]).then((result) => {

        // status:0 未申请 1审核中 2已开通 3 审核未通过
        let openStatus = result[0];

        if (openStatus === 0) {
            return installmentModel.getResources().then(data => {
                return {
                    bannerTop: {
                        data: [{
                            src: '//img10.static.yhbimg.com/yhb-img01/2016/08/03/11/0131193afdd030b09af40b93eeb1c33ae5.jpg?imageView2/2/w/640/h/240/q/70',
                            url: ''
                        }]
                    },
                    notOpen: true,
                    installmentOnly: {
                        title: '分期专享',
                        goods: result[1]
                    }
                };
            });
        } else if (openStatus === 2) {
            return Promise.all([installmentModel.getQueryCreditInfo(uid), installmentModel.getQueryAmtInfo(uid)]).then((data) => {
                let params = _.assign({
                    isOverdue: false,
                    installmentOnly: {
                        title: '分期专享',
                        goods: result[1]
                    }
                }, data[0], data[1]);

                console.log(data[0]);

                // status: 1 正常 2 逾期 3 不可用 4 未开通
                if (data[0].status === 2) {
                    params.replayStatus = '逾期';
                    params.isOverdue = true;
                } else if (data[0].status === 3) {
                    params.replayStatus = '不可用';
                }

                return params;
            });
        } else if (openStatus === 1) {
            res.redirect('/home/installment/review?status=' + openStatus);
        } else {
            res.redirect('/home/installment/review?status=' + openStatus);
        }
    }).then((result) => {
        result.pageHeader = _.assign({
            installmentPage: true
        }, headerModel.setNav({
            navTitle: '有货分期',
            navBtn: false
        }));

        res.render('installment/open-index', _.assign({
            module: 'home',
            page: 'installment',
            title: '有货分期'
        }, result));
    }).catch(next);
};

const review = (req, res, next) => {
    let openStatus = req.query.status || false;
    let uid = req.user.uid || 20000032;
    let data = {
        module: 'home',
        page: 'installment',
        title: '有货分期',
        pageHeader: headerModel.setNav({
            navTitle: '有货分期',
            navBtn: false
        })
    };

    if (openStatus) {
        res.render('installment/open-result', _.assign(data, _reviewStatus(+openStatus)));
    } else {
        installmentModel.getStauts(uid).then((status) => {
            return _reviewStatus(status);
        }).then((params) => {
            res.render('installment/open-result', _.assign(data, params));
        }).catch(next);
    }
};

// 逾期未还款列表
const overdueList = (req, res, next) => {
    let params = {
        uid: req.user.uid || 0,
        queryDays: -1,
        pageNo: '1'
    };
    installmentModel.getQueryAmtList(params).then((result) => {
        res.render('installment/repayment-list', {
            repaymentList: result,
            pageHeader: headerModel.setNav({
                navTitle: '逾期未还金额',
                navBtn: false
            })
        });
    });
};

// 7日待还款列表
const sevenDayList = (req, res, next) => {
    res.send('1');
};

const startingService = (req, res) => {
    res.render('installment/starting-service', {
        module: 'home',
        page: 'installment.starting-service',
        navTitle: '开通有货分期',
        navBtn: false
    });
};

const activateService = (req, res, next) => {
    installmentModel.activateService({
        uid: req.user.uid,
        userName: req.body.userName,
        identityCardNo: req.body.identityCardNo,
        cardNo: req.body.cardNo,
        mobile: req.body.mobile,
        snsCheckCode: req.body.snsCheckCode
    }).then((result)=> {
        res.json(result);
    }).catch(next);
};

const getBankInfo = (req, res, next) => {
    installmentModel.getBankInfo({
        cardNo: req.query.cardNo
    }).then((result)=> {
        res.json(result);
    }).catch(next);
};

const verifyCode = (req, res, next) => {
    installmentModel.sendVerifyCode(req.user.uid, req.body.mobile).then((result)=> {
        res.json(result);
    }).catch(next);
};

const orderIndex = (req, res) => {
    res.render('installment/order', {
        module: 'home',
        page: 'installment.order',
        navTitle: '我的分期订单',
        navBtn: false
    });
};

const orderList = (req, res) => {
    const params = {
        uid: req.user.uid,
        type: req.query.type || 1,
        page: req.query.page || 1,
        limit: req.query.limit || 10
    };

    installmentModel.getInstallmentOrders(params).then((result)=> {
        res.render('installment/order-list', {
            orders: result.data.orderList,
            layout: false
        });
    });
};

const orderDetail = (req, res) => {
    const params = {};

    installmentModel.getInstallmentOrders(params).then(()=> {
        res.render('installment/order-detail', {
            module: 'home',
            page: 'installment.order-detail',
            navTitle: '分期详情',
            navBtn: false
        });
    });
};

module.exports = {
    index,
    review,
    overdueList,
    sevenDayList
    startingService,
    activateService,
    verifyCode,
    getBankInfo,
    orderIndex,
    orderList,
    orderDetail
};