student.js 5.45 KB
'use strict';
const serviceApi = global.yoho.ServiceAPI;
const api = global.yoho.API;
const helpers = global.yoho.helpers;

const getResource = code => {
    return serviceApi.get('operations/api/v5/resource/get', {
        content_code: code
    });
};
const vip = (limit) => {
    return api.get('', {
        method: 'app.student.vip',
        limit: limit || 60
    });
};
const verifiedStudentTotal = () => {
    return api.get('', {
        method: 'app.student.verifiedStudentTotal'
    });
};

const getProvince = () => {
    return api.get('', {
        method: 'app.studentMarket.getAddressList'
    });
};

const getSchool = code => {
    return api.get('', {
        method: 'app.studentMarket.getSchoolInfoList',
        areaCode: code
    });
};

const verifyStudent = (uid, collegename, educationdegree, enrollmentyear, token) => {
    return api.get('', {
        method: 'app.student.verifyStudent',
        uid: uid,
        client_type: 'h5',
        college_name: collegename,
        enrollment_year: enrollmentyear,
        education_degree: educationdegree,
        token: token
    });
};
const verifyIdentity = (uid, certno, name, pageurl) => {
    return api.get('', {
        method: 'app.student.verifyIdentity',
        uid: uid,
        client_type: 'h5',
        cert_no: certno,
        name: name,
        page_url: pageurl
    });
};
const getUser = (uid) => {
    if (!uid) {
        return {};
    }
    return api.get('', {
        method: 'app.passport.profile',
        uid: uid
    });
};

exports.index = (req, res, next) => {
    let code = req.query.code || 'a83b7d55324fb65f96c1f85a3387ebd8';
    let uid = req.user.uid || 8041246;

    Promise.all([getResource(code), vip(), getUser(uid)]).then(datas => {
        let coupons,
            activities,
            banner,
            icons;

        datas[0].data.forEach((item) => {
            switch (item.template_name) {
                case 'getCoupon':
                    coupons = item;
                    break;
                case 'image_list':
                    activities = item;
                    break;
                case 'focus':
                    banner = item;
                    break;
                case 'recommend_content_five':
                    icons = item;
                    break;
                default:
                    icons = item;
                    break;
            }
        });

    // console.log(JSON.stringify(datas[1].data.product_list,null,4));
        datas[1].data.product_list = datas[1].data.product_list.map(function(value) {
            value.goodsId = value.goods_list[0].goods_id;
            value.url = helpers.urlFormat(`/product/pro_${value.product_id}_
                ${value.goodsId}/${value.cn_alphabet}.html`);
            return value;
        });
        res.render('student', {
            hashead: false,
            goods: datas[1].data.product_list,
            banner: banner,
            icons: icons,
            coupons: coupons,
            activities: activities,
            isLogin: datas[2].data && datas[2].data.vip_info.is_student ? true : false
        });
    }).catch(next);
};

exports.province = (req, res, next) => {
    getProvince().then((result) => {
        res.json(result);
    }).catch(next);
};

exports.register = (req, res, next) => {
    let years = [],
        educations = ['专科', '本科', '硕士', '博士'];

    for (let i = 0; i < 8; i++) {
        years.push((new Date()).getFullYear() - i);
    }
    Promise.all([verifiedStudentTotal()]).then((arr) => {
        res.render('register', {
            hashead: false,
            count: arr[0].data,
            educations: educations,
            educationsStr: JSON.stringify(educations),
            years: years,
            yearsStr: JSON.stringify(years),
            module: 'activity',
            page: 'register',
        });
    }).catch(next);

};

exports.school = (req, res, next) => {
    let code = req.query.code;

    getSchool(code).then((result) => {
        res.json(result);
    }).catch(next);
};

exports.verifyidentity = (req, res, next) => {
  // let uid=req.user.id;
    let params = req.body;
    let url = 'http://localhost:6001/activity/student/verify?college_name=' + params.college_name + '&education_degree=' + params.education_degree + '&enrollment_year=' + params.enrollment_year;
    let uid = req.user.uid || 8041246;

    verifyIdentity(uid, params.cert_no, params.name, url).then((result) => {
        console.log(result);
        res.json(result);
    }).catch(next);
};

exports.verifystudent = (req, res, next) => {
    let params = req.query;
    let uid = req.user.uid || 8041246;

    Promise.all([verifiedStudentTotal(), vip(),
    verifyStudent(uid, params.college_name, params.education_degree, params.enrollment_year, params.token)])
    .then((datas) => {
        let isverify = false;

        if (datas[2].code === 200) {
            isverify = true;
        }
        datas[1].data.product_list = datas[1].data.product_list.map(function(value) {
            value.goodsId = value.goods_list[0].goods_id;
            value.url = helpers.urlFormat(`/product/pro_${value.product_id}_
                ${value.goodsId}/${value.cn_alphabet}.html`);
            return value;
        });
        res.render('verify', {
            count: datas[0].data,
            goods: datas[1].data.product_list,
            isverify: isverify
        });
    }).catch(next);
};

exports.detail = (req, res) => {
    res.render('detail', {
        hashead: false
    });
};