index.js 4.63 KB
'use strict';
const api = global.yoho.API;
const serviceAPI = global.yoho.ServiceAPI;
const Promise = require('bluebird');
const co = Promise.coroutine;
const _ = require('lodash');
const helpers = global.yoho.helpers;

/**
 * 查询用户信息
 *
 * @param int uid 用户ID
 * @return Object 个人详情数据
 */
const _getUserProfileData = (uid) => {
    return api.get('', {
        uid: uid,
        method: 'app.passport.profile'
    }).then(result => {
        return result.data;
    });
};

/**
 * 个人中心页面收藏及订单等的数目数据
 *
 * @param int uid 用户ID
 * @return Object 处理之后的数据
 */
const _getInfoNumData = (uid) => {
    return api.all([api.get('', {
        uid: uid,
        method: 'app.home.getInfoNum' // 收藏及订单数目数据
    }), api.get('', {
        uid: uid,
        method: 'app.address.gethidden' // 用户地址的数据
    })]).then(data => {
        let res = {
            wait_pay_num: 0,
            wait_cargo_num: 0,
            send_cargo_num: 0,
            refund_exchange_num: 0,
            product_favorite_total: 0,
            brand_favorite_total: 0,
            yoho_coin_num: 0
        };

        if (data[0].data) {
            for (let k in data[0].data) {
                if (res[k] !== undefined) {
                    res[k] = data[0].data[k] ? data[0].data[k] : "";
                    if (k !== 'yoho_coin_num' && res[k] > 99) {
                        res[k] = '99+';
                    }
                }
            }
        }
        if (data[1].data) {
            res = _.merge(res, {
                address_num: data[1].data.length ? data[1].data.length : ""
            });
        }
        return res;
    })
};


/**
 * 个人中心主页数据
 *
 * @param int uid 用户ID
 * @return Object 处理之后的数据
 */
exports.getUserHomeData = (uid) => {
    return Promise.all([_getUserProfileData(uid), _getInfoNumData(uid)]);
};

/**
 * 处理用户收藏的商品数据
 *
 * @param int uid 用户ID
 * @param int page 第几页
 * @param int limit 限制读取的数目,默认10
 * @return array 处理之后的收藏的商品数据
 */
exports.getFavProductData = (uid, page, limit) => {
    return api.get('', {
        method: 'app.favorite.product',
        uid: uid,
        page: page,
        limit: limit
    }).then(result => {
        return result.data;
    });
};

/**
 * 处理用户收藏的品牌数据
 *
 * @param int uid 用户ID
 * @param string gender 性别 1,3表示男,2,3表示女,1,2,3表示全部
 * @param int page 第几页
 * @param int limit 限制读取的数目
 * @return array 处理之后的收藏的品牌数据
 */
exports.getFavBrandData = (uid, gender, page, limit) => {
    return api.get('', {
        method: 'app.favorite.brand',
        uid: uid,
        gender: gender,
        page: page,
        limit: limit
    }).then(result => {
        return result.data;
    })
}

/**
 * 取消收藏的商品/品牌数据
 *
 * @param int uid 用户ID
 * @param int favId 要取消的收藏id
 * @param string type 取消类型(brand:品牌,product:商品)
 * @return array 接口返回的数据
 */
exports.favoriteDelete = (uid, favId, type) => {
    return api.get('', {
        method: 'app.favorite.cancel',
        uid: uid,
        type: type,
        fav_id: favId
    });
}

/**
 * 帮助中心列表页
 *
 * @param data
 *
 */
exports.getHelpInfo = (data) => {
    var defaultParam = {
            method: 'app.help.li'
        },
        infoData = Object.assign(defaultParam, data);

    return api.get('', infoData).then(result => {
        const helpData = result.data;
        const formatData = [];

        helpData = helpData || [];
        _.forEach(helpData, (item) => {
            formatData.push({
                name: item.caption,
                code: item.code,
                url: helpers.urlFormat('/home/helpDetail', {
                    code: item.code,
                    caption: item.caption,
                })
            });
        });
        return formatData;
    });
};

/**
 * 帮助中心详情页
 *
 * @param data
 */
exports.getHelpDetail = (data) => {
    var defaultParam = {
            method: 'app.help.detail',
            return_type: 'html'
        },
        detailData = Object.assign(defaultParam, data);

    return api.get('', detailData).then(result => {
        return result;
    });
};

/**
 * 保存意见反馈数据
 *
 * @param data
 */
exports.saveFeedback = (data) => {
    return serviceAPI.post('/suggest/api/v1/suggest/saveSuggest', data).then(result => {
        return {
            code: result.code,
            message: result.message
        };

        // 参考接口数据
    });
};