vip-service.js 2.18 KB
'use strict';

const Promise = require('bluebird');
const co = Promise.coroutine;
const userData = require('./user-data');
const moment = require('moment');
const helpers = global.yoho.helpers;

const vipIndex = (uid)=>{

    return co(function*() {
        let vipInfo = yield userData.getVIPInfoByUid(uid);

        let data = vipInfo.data, proportion = '0%';

        if (+data.next_need_cost !== 0) {
            proportion = data.current_year_cost * 100 / data.next_need_cost;
            proportion = proportion > 100 ? 100 : proportion;
            proportion = proportion + '%';
        }

        let remainDays = Math.ceil(((data.vip_end_time) * 1000 - Date.now()) / 86400000);

        let preferences = [];

        if (data.enjoy_preferential) {
            preferences = data.enjoy_preferential.map(function(item) {
                return {
                    id: item.id,
                    favTxt: item.title,
                    imgType: helpers.https(item.pic),
                    description: item.description
                };
            });
        }
        let isVip = data.current_vip_level > 0 ? true : false;

        let vip = {
            title: data.current_vip_title,
            nextTitle: data.next_vip_title,
            nextLevel: data.next_vip_level,
            yearCost: Number(data.current_year_cost).toFixed(2),
            totalCost: (+data.current_total_cost).toFixed(2),
            list: preferences,
            level: data.current_vip_level,
            platinum: data.upgrade_need_cost > 0 ? false : true,
            nextCost: Number(data.next_need_cost).toFixed(2),
            balan: Number(data.upgrade_need_cost).toFixed(2),
            proportion: proportion,
            vipLevel: data.next_vip_title,
            reach: moment(data.vip_reach_time * 1000).format('YYYY.MM.DD'),
            valid: moment(data.vip_start_time * 1000).format('YYYY.MM.DD'),
            end: moment(data.vip_end_time * 1000).format('YYYY.MM.DD'),
            remainDays: remainDays,
            doubtLevel: isVip,
            commonVip: !isVip,
            morePreferences: helpers.urlFormat('/help/detail', {id: 7})
        };

        return vip;

    })();
};

module.exports = {
    vipIndex
};