bundle.js 2.71 KB
/**
 * Created by targaryen on 2016/11/28.
 */
'use strict';
const utils = '../../../utils';
const _ = require('lodash');
const api = global.yoho.API;
const helpers = global.yoho.helpers;
const productProcess = require(`${utils}/product-process`);

/**
 * 从接口获取套装数据
 * @private
 */
const getBundleBySkn = (productSkn) => {
    return api.get('', {
        method: 'app.query.bundleSkn',
        product_skn: productSkn
    }, {cache: false}).then(result => {
        return result;
    });
};

/**
 * 套装详情页数据
 * @param params
 * @returns {*}
 */
const detail = (params, isApp) => {
    if (!params.skn && !params.bundle_skn) {
        return Promise.resolve({});
    }
    let bundleIndex = (params.index || 1);

    --bundleIndex;
    return getBundleBySkn(params.skn || params.bundle_skn).then(result => {
        if (_.has(result, `data[${bundleIndex}]`)) {
            let shareInfo = _.get(result, 'data[0].shareInfo', {});

            return {
                bundleDatas: _.map(result.data, (bundle, index) => {
                    let query = {bundle_skn: params.skn ||
                            params.bundle_skn, productId: params.productId, index: index + 1};

                    if (isApp) {
                        query.app_version = isApp;
                    }
                    return {
                        selected: index === bundleIndex,
                        title: _.get(bundle, 'bundleInfo.tabName') || '',
                        href: helpers.urlFormat('/product/bundle/detail', query),
                    };
                }),
                shareInfo: {
                    imgUrl: `http:${helpers.image(shareInfo.imgUrl, 300, 300)}`,
                    subTitle: encodeURIComponent(shareInfo.subTitle),
                    title: encodeURIComponent(shareInfo.title),
                    url: shareInfo.url
                },
                bundleInfo: _.get(result, `data[${bundleIndex}].bundleInfo`, {}),
                productList: productProcess.processProductList(_.get(result, `data[${bundleIndex}].productList`, []))
            };
        }
        return {};
    });
};

/**
 * 套餐加入购物车
 * @param {*} params
 */
const addToCart = (params) => {
    let skuList = params.product_sku_list;
    let finalParams = {
        method: 'app.Shopping.addBundle',
        shopping_key: params.shopping_key,
        activity_id: params.activity_id,
        product_sku_list: skuList
    };

    if (params.uid) {
        Object.assign(finalParams, {
            uid: params.uid
        });
    }

    return api.post('', finalParams, {
        headers: {
            'User-Agent': params.userAgent
        }
    });
};

module.exports = {
    getBundleBySkn,
    detail,
    addToCart
};