index.js 6.49 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) => {
    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) => {
    return singleAPI.get('brower', {
        method: 'app.favorite.getFavoriteCount',
        uid: params.uid
    }, {code: 200});
};

/**
 * 个人中心页面优惠券,收藏的商品等的数目数据
 */
const _infoNum = (params) => {
    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 || 6228593,
        channel: channel || 1
    }, {code: 200});
};

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

const getGrade = (channel, uid) => {

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

        let resu = {
            vipGrade: []
        };
        
        if (result[0] && result[0].data) {
            resu = {
                vipGrade: [
                    {
                        costOfThisYear: result[0].data.current_year_cost,
                        sumCost: result[0].data.current_total_cost,
                        vip1: true,
                        name: '1111'
                    }
                ]
            };
        }
        return resu;
    });
};


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