grade-new.js 3.78 KB
'use strict';

const api = global.yoho.API;
const helpers = global.yoho.helpers;
const _ = require('lodash');

/**
 * 会员等级
 * @param params
 */

module.exports = class extends global.yoho.BaseModel {
    constructor(ctx) {
        super(ctx);
    }

    getGradeGrade(uid, channel) {
        return api.get('', {
            method: 'app.passport.vip',
            uid: uid,
            channel: channel || 1
        }, {
            code: 200
        });
    }

    getGradeUser(uid, channel) {
        return api.get('', {
            method: 'app.passport.profile',
            uid: uid,
            channel: channel || 1
        }, {
            code: 200
        });
    }

    index(param) {
        if (param.uid) {
            return api.all([
                this.getGradeGrade(param.uid, param.channel),
                this.getGradeUser(param.uid, param.channel)
            ]).then((result) => {

                let resu = {
                    vipGrade: []
                };

                let enp = {};

                let obj = {
                    privilege: []
                };

                if (result[0] && result[0].data) {

                    _.forEach(result[0].data.enjoy_preferential, function(val) {

                        enp = {
                            description: val.description,
                            pic: val.pic,
                            title: val.title
                        };

                        obj.privilege.push(enp);

                    });

                    switch (result[0].data.current_vip_level) {
                        case '0': // 普通会员
                            obj = _.assign(obj, {
                                vip0: true
                            });
                            break;
                        case '1': // 银卡会员
                            obj = _.assign(obj, {
                                vip1: true
                            });
                            break;
                        case '2': // 金卡会员
                            obj = _.assign(obj, {
                                vip2: true
                            });
                            break;
                        case '3': // 白金会员
                            obj = _.assign(obj, {
                                vip3: true
                            });
                            break;
                        default:

                    }

                    let upg = (1 * (result[0].data.upgrade_need_cost)).toFixed(2);

                    obj = _.assign(obj, {
                        costOfThisYear: result[0].data.current_year_cost,
                        sumCost: result[0].data.current_total_cost,
                        allUrl: helpers.urlFormat('/home/privilege'),
                        costGap: upg
                    });

                    if (result[0].data.next_need_cost === 0 || result[0].data.next_need_cost === '') {
                        // 当vip等级升至顶级时,进度条满格
                        obj = _.assign(obj, {
                            percent: 100
                        });
                    } else {

                        let perf = (100 * (result[0].data.current_year_cost /
                            result[0].data.next_need_cost)).toFixed(2);

                        obj = _.assign(obj, {
                            percent: perf
                        });

                    }

                }

                if (result[0] && result[0].data) {
                    obj = _.assign(obj, {
                        name: result[1].data.nickname
                    });
                }

                resu.vipGrade.push(obj);

                return resu;
            });
        } else {
            return Promise.resolve({});
        }
    }
};