index.js 9.01 KB
/**
 * Created by PhpStorm.
 * User: Targaryen
 * Date: 2016/8/10
 * Time: 13:43
 */

'use strict';

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

/**
 * 个人详情数据
 */
const _userData = (params) => {
    if (params.uid) {
        return api.get('', {
            method: 'app.passport.profile',
            uid: params.uid
        }, {code: 200});
    }
};

/**
 * 获取个人中心公告有关数据
 */
const _noticeData = () => {
    return api.get('', {
        method: 'app.resources.getNotices'
    }, {code: 200});
};

/**
 * 收藏数量接口
 * @param params
 * @returns {*|Promise.<TResult>}
 */
const _favoriteData = (params) => {
    if (params.uid) {
        return singleAPI.get('brower', {
            method: 'app.favorite.getFavoriteCount',
            uid: params.uid
        }, {code: 200});
    }
};

/**
 * 个人中心页面优惠券,收藏的商品等的数目数据
 */
const _infoNum = (params) => {
    if (params.uid) {
        return api.get('', {
            method: 'app.home.getInfoNum',
            uid: params.uid,
            udid: params.udid
        }, {code: 200});
    }
};

/**
 * 个人中心首页
 * @param params
 * @returns {function()}
 */
const index = (params) => {
    let finalResult = {
        myIndexPage: true,
        showDownloadApp: true,
        navHome: true,
        pageFooter: true,
        refundExchangeNum: 0,
        commentTotal: 0,
        cartUrl: helpers.urlFormat('/cart/index/index'),
        signinUrl: helpers.urlFormat('/signin.html', {refer: helpers.urlFormat('/home')})
    };

    return api.all([
        _userData(params),
        _noticeData(),
        _favoriteData(params),
        _infoNum(params)
    ]).then(result => {
        if (result[0] && result[0].data) {
            Object.assign(finalResult, {
                profileName: result[0].data.profile_name,
                headIco: result[0].data.head_ico,
                vipInfo: result[0].data.vip_info
            });
        }

        if (result[1] && result[1].data) {
            Object.assign(finalResult, {
                notice: result[1].data.list
            });
        }

        if (result[2] && result[2].data) {
            Object.assign(finalResult, {
                productFavoriteTotal: result[2].data.product_favorite_total
            });
        }

        if (result[3] && result[3].data) {
            Object.assign(finalResult, {
                sendCargoNum: result[3].data.send_cargo_num,
                waitCargoNum: result[3].data.wait_cargo_num,
                waitPayNum: result[3].data.wait_pay_num,
                yohoCoinNum: result[3].data.yoho_coin_num,
                inboxTotal: result[3].data.inbox_total,
                couponNum: result[3].data.coupon_num,
                brandFavoriteTotal: result[3].data.brand_favorite_total,
                productBrowse: result[3].data.product_browse
            });
        }


        return camelCase(finalResult);
    });
};

/**
 * 个人基本资料
 * @param params
 */
const myDetails = (params) => {
    return api.get('', {
        method: 'app.passport.profile',
        uid: params.uid
    }, {code: 200}).then((result) => {
        result = camelCase(result);
        if (result.data) {
            return result.data;

                // {
                //     nickname: result.data.nickname,
                //     gender: result.data.gender,
                //     birthday: result.data.birthday,
                //     headIco: result.data.headIco,
                //     vipInfo: {
                //                 curLevel: result.data.vipInfo.curLevel
                //             }
                // }
        }

        // return finalResult;
    });
};



/**
 * 浏览记录
 * @param params
 */
const recordContent = (uid, udid, page, limit) => {

    return api.get('', {
        method: 'app.browse.product',
        uid: uid,
        limit: limit,
        page: page
    }, {code: 200}).then((result) => {

        let resu = {};

        if (result && result.code === 200) {

            let list = result;

            if (!result || page === '1' && result.data.total === 0) {
                resu.walkwayUrl = helpers.urlFormat('/product/new');
                resu.noRecord = true;

                return resu;
            }

            if (list.data && list.data.product_list) {
                resu = {
                    browseRecord: []
                };

                _.forEach(list.data.product_list, function(val) {
                    let obj = {
                        productList: []
                    };

                    obj = _.assign(obj, {
                        product_name: val.product_name,
                        product_skn: val.product_skn,
                        storage: val.storage,
                        image: val.image,
                        link: '/product/show_' + val.product_skn + '.html',
                        sales_price: val.sales_price,
                        market_price: (val.market_price - val.sales_price) > 0 ? val.market_price : false,
                        invalidGoods: val.status === 0
                    });

                    resu.browseRecord.push(obj);
                });
            }

            return resu;
        }
    });
};

/**
 * 删除浏览记录
 * @param params
 */
const delRecord = (uid, skn) => {
    return api.get('', {
        method: 'app.browse.delete',
        uid: uid,
        skn: skn
    });
};

/**
 * 会员等级
 * @param params
 */
const getGradeGrade = (channel, uid) => {
    return api.get('', {
        method: 'app.passport.vip',
        uid: uid,
        channel: channel || 1
    }, {code: 200});
};

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

const getGrade = (channel, uid) => {

    return api.all([
        getGradeGrade(channel, uid),
        getGradeUser(channel, uid)
    ]).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/preferential'),
                costGap: upg
            });

            if (result[0].data.next_need_cost === 0) {
                // 当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;
    });
};

/**
 * 会员特权列表页
 * @param params
 */

const getPreferential = (uid, channel) => {

    return api.get('', {
        method: 'app.passport.getPrivilege',
        uid: uid,
        channel: channel || 1
    }, {code: 200}).then((result) => {

        let obj = {};

        let resu = {
            privilege: []
        };

        _.forEach(result.data, function(val) {

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

            resu.privilege.push(obj);

        });

        return resu;

    });
};

module.exports = {
    index,
    myDetails,
    recordContent,
    delRecord,
    getGrade,
    getPreferential
};