detail.js 3.44 KB
/**
 *
 * @author: Aiden Xu<aiden.xu@yoho.cn>
 * @date: 2016/07/19
 */
'use strict';

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

/**
 *
 * @param product
 * @returns {*|string}
 * @private
 */
const _procProductImg = (product) => {
    if (product.gender === '2,3' || product.gender === '2' || product.gender === '3') {
        return product.cover_2 || product.images_url || product.cover_1 || '';
    }

    return product.cover_1 || product.images_url || product.cover_2 || '';
};

/**
 *
 * @param list
 * @returns {Array}
 * @private
 */
const _processProduct = (list) => {
    let newRes = [];

    list = list || [];

    list.forEach(item => {
        let defaultGoods = _.find(item.goods_list, {is_default: 'Y'});

        // 无默认商品取商品列表第一个
        if (!defaultGoods) {
            defaultGoods = item.goods_list[0];
        }

        item.default_images = _procProductImg(defaultGoods);
        item.goodsUrl = `${config.siteUrl}/product/pro_${item.product_id}_${defaultGoods.goods_id}/${item.cn_alphabet}.html`; // eslint-disable-line
    });

    _.chunk(list, 5).forEach(item => {
        newRes.push({
            list: item
        });
    });
    return newRes;
};

/**
 * 商品详情
 */
const model = {
    product(params) {
        return api.get('', Object.assign({
            method: 'app.product.data'
        }, params), {
            code: 200
        }).then(result => {

            if (result.data) {
                let storage = 0; // result.storage 的 数值 不可靠,循环累加 库存
                const goodsList = result.data.goods_list;

                if (goodsList) {
                    for (let good of goodsList) {
                        for (let size of good.size_list) {
                            storage += size.storage_number;
                        }
                    }
                }

                result.data.storage = storage;
            }

            return result;
        });
    },
    getVipData(params) {
        return api.get('', {
            method: 'app.passport.vip',
            uid: params.uid
        }, {
            code: 200
        });
    },
    intro(params) {
        return api.get('', Object.assign({
            method: 'h5.product.intro'
        }, params));
    },

    /**
     * 加入购物车接口
     *
     */
    addToCart(params) {
        return api.get('', Object.assign({
            method: 'app.Shopping.add'
        }, params));
    },

    /**
     * 添加收藏/取消收藏
     *
     * @param params
     */
    favorite(params, flag) {
        let method = '';

        if (flag) {
            method = 'app.favorite.add';
        } else {
            method = 'app.favorite.cancel';
        }

        return api.get('', Object.assign({
            method: method
        }, params));
    },

    /**
     * 获取购物车数量
     *
     * @param params
     */
    getCartCount: (params) => {
        return api.get('', Object.assign({
            method: 'app.Shopping.count'
        }, params));
    },

    /**
     * 是否支持退换货
     * @param params
     */
    refundExchange(params) {
        return api.get('', Object.assign({
            method: 'app.product.refundExchange'
        }, params));
    },

    /**
     * 猜你喜欢
     * @param params
     */
    mightLike(params) {
        return api.get('', Object.assign({
            method: 'app.search.newLast7day'
        }, params));
    }
};

module.exports = model;