brand.js 6.25 KB
/**
 * Created by PhpStorm.
 * User: Targaryen
 * Date: 2016/7/19
 * Time: 13:51
 */
'use strict';
const api = global.yoho.API;
const helpers = global.yoho.helpers;
const brandApi = require('./brand-api');
const logger = global.yoho.logger;
const _ = require('lodash');

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

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

        _.forEach(value, (subValue) => {
            brands.push({
                name: subValue.brand_name,

                // link: helpers.urlFormat('/brand', {domain: subValue.brand_domain}),
                link: '/brand?domain=' + subValue.brand_domain,
                logo: subValue.brand_ico
            });
        });

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

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

    return dest;
};

/**
 * 获取品牌店铺数据
 * @param params
 * @returns {*|Promise.<TResult>}
 */
const getBrandData = params => {
    let finalResult = {};

    return api.all([
        brandApi.getBrandInfoByDomain({domain: params.domain})
    ]).then(result => {

        if (result[0].code === 200) {

            /* 品牌有店铺 */
            if (result[0].data.shop_id) {
                return api.all([
                    brandApi.getShopInfoData({
                        shopId: result[0].data.shop_id,
                        uid: params.uid
                    })
                ]).then(subResult => {
                    if (subResult[0].code === 200) {

                        /* TODO 判断是否是使用 BLK 模板,不使用 BLK 模板的就直接返回 */
                        if (subResult[0].data.shop_template_type === '2') {
                            Object.assign(finalResult, {

                                /* TODO 背景图取资源位,接口未开发 */
                                brandBg: 'http://7xwj52.com1.z0.glb.clouddn.com/brandbg.jpg',

                                /* TODO 是否显示店铺 LOGO,接口未开发 */
                                showBrandLogo: false,
                                brandLogo: subResult[0].data.shop_logo,
                                brandName: subResult[0].data.shop_name,
                                brandIntro: subResult[0].data.shop_intro,
                                showMore: false
                            });
                            return finalResult;
                        } else {
                            logger.info('no BLK template');
                        }
                    } else {
                        logger.error('getShopInfoData api code no 200');
                    }
                });
            } else {
                logger.info('brand has no shop');
            }
        } else {
            logger.error('getBrandOriginData api code no 200');
        }
    });
};

/**
 * 获取品牌店铺商品数据
 * @param params
 * @returns {*|Promise.<TResult>}
 */
const getBrandShopGoodsData = params => {
    let finalResult = {};

    return api.all([brandApi.getBrandShopGoodsOriginData(params)]).then(result => {

    });
};

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

    return api.all([brandApi.getBrandListOriginData(params)]).then(result => {
        if (result[0].code === 200 && result[0].data.all_list) {
            Object.assign(finalResult, handleBrandList(result[0].data.all_list));
        } else {
            logger.error('getBrandListOriginData api code no 200 or allList is null');
        }

        return finalResult;
    });
};

/**
 * 获取全部分类数据
 * @param params
 * @returns {*|Promise.<TResult>}
 */
const getCateListData = params => {
    let finalResult = [];
    let item = {};
    let oneClass = [];
    let subitem = {};
    let genderArr = {boy: '1,3', girl: '2,3', kids: '1,2,3', lifestyle: '1,2,3'};

    return brandApi.getCateListData(params).then(result => {

        if (result.code !== 200) {
            return [];
        }

        _.forEach(result.data, (category, categorykey) => {
            oneClass = {name: categorykey, ca: []};

            _.forEach(category, (cate) => {
                item = {
                    id: cate.category_id,
                    name: cate.category_name,
                    sort: cate.relation_parameter.sort,
                    sub: []
                };
                if (_.isEmpty(cate.sub)) {
                    item.url = helpers.urlFormat('/', {
                        sort: item.sort,
                        sort_name: item.name,
                        gender: genderArr[categorykey]
                    }, 'list');
                    oneClass.ca.push(item);
                    return true;// equal continue;
                }

                // 有子分类的,首先添加一级分类
                item.sub.push({
                    id: item.id,
                    name: '全部' + item.name,
                    sort: item.sort,
                    url: helpers.urlFormat('/', {
                        sort: item.sort,
                        sort_name: item.name,
                        gender: genderArr[categorykey]
                    }, 'list'),
                    sub: []
                });

                _.forEach(cate.sub, (sub) => {
                    subitem = {
                        id: sub.category_id,
                        name: sub.category_name,
                        sort: sub.relation_parameter.sort,
                        url: ''
                    };
                    subitem.url = helpers.urlFormat('/', {
                        sort: subitem.sort,
                        sort_name: subitem.name,
                        gender: genderArr[categorykey]
                    }, 'list');
                    item.sub.push(subitem);
                });

                oneClass.ca.push(item);
            });

            finalResult.push(oneClass);
        });

        return finalResult;
    });
};

module.exports = {
    getBrandData,
    getBrandShopGoodsData,
    getBrandListData,
    getCateListData
};