brand.js 2.59 KB
/**
 * Created by PhpStorm.
 * User: Targaryen
 * Date: 2016/7/19
 * Time: 13:51
 */
'use strict';

const brandApi = require('./brand-api');
const _ = require('lodash');
const camelCase = global.yoho.camelCase;

/**
 * 处理品牌一览品牌列表数据
 * @param origin
 * @returns {Array}
 */
const handleBrandList = origin => {
    let dest = {
        brandList: [],
        indexList: []
    };

    // 标记是否有数字,有数字先暂存
    let hasNum = false;
    let numTemp = {};

    _.forEach(origin, (value, key) => {
        let brands = [];

        if (key === '0~9') {
            hasNum = true;
            numTemp = origin[key];
        } else {
            _.forEach(value, (subValue) => {
                brands.push({
                    name: subValue.brand_name_en || subValue.brand_name_cn || subValue.brand_name,
                    logo: subValue.brand_ico,
                    domain: subValue.brand_domain
                });
            });

            dest.brandList.push({
                index: key,
                brands: brands
            });

            dest.indexList.push({
                index: key,
                name: key === '0~9' ? '0' : key
            });
        }

    });

    // 商品列表排序一次
    _.sortBy(dest.brandList, o => {
        return o.index.charCodeAt();
    });

    // 字母列表排序一次
    _.sortBy(dest.indexList, o => {
        return o.index.charCodeAt();
    });

    // 如果有数字,单独处理
    if (hasNum) {
        let brands = {};

        _.forEach(numTemp, (subValue) => {
            brands.push({
                name: subValue.brand_name_en || subValue.brand_name_cn || subValue.brand_name,
                logo: subValue.brand_ico,
                domain: subValue.brand_domain
            });
        });
        dest.brandList.push({
            index: '0~9',
            brands: brands
        });

        dest.indexList.push({
            index: '0_9',
            name: '0'
        });
    }

    return dest;
};

/**
 * 获取品牌列表页数据
 * @param params
 */
const getBrandListData = params => {
    let finalResult = {};

    return brandApi.getBrandListOriginData(params).then(result => {
        if (result && result.data) {
            Object.assign(finalResult, handleBrandList(result.data.all_list));
        }

        return finalResult;
    });
};

/**
 * 获取全部分类数据
 * @param params
 * @returns {*|Promise.<TResult>}
 */
const getCateListData = params => {
    return brandApi.getCateListData(params).then(camelCase);
};

module.exports = {
    getBrandListData,
    getCateListData
};