brands-model.js 5.83 KB

/**
 * 品牌一览 model
 * @author: ghw<hongwei.gao@yoho.cn>
 * @date: 2016/9/29
 */
'use strict';

const Promise = require('bluebird');
const co = Promise.coroutine;
const _ = require('lodash');
const helpers = global.yoho.helpers;
const brandApi = require('./brands-api');
//品牌一览资源位CODE码
const channelCode = {
    boys_brand: '8b16b7baf9a66fbe553a6caa97d2ce2a',
    girls_brand: 'c95ae9e40f0add10549b819f821ad626',
    kids_brand: 'c575c6bfdfa4125fae7d24bbec7119c8',
    lifestyle_brand: '84b7926282fdef92f1039bdcf77c18ba',
    brand_list: 'f0f72b1e8f30e6ad086dfc4401f3a856', //品牌列表资源位CODE码
    brand_plusstar_banner_boys: 'd0149783b8dd2adaf083fd10556c39a9',
    brand_plusstar_banner_girls: 'd0149783b8dd2adaf083fd10556c39a9',
    brand_plusstarindex_boys: 'a833aed63d28457156310e97faa7fa37',//plusstarindex男首资源位
    brand_plusstarindex_girls: '6e4f162be3b3ba44f3bfcf1c38bdb745',//plusstarindex女首资源位
};
const BOYS = 'boys';
const GIRLS = 'girls';
const KIDS = 'kids';
const LIFESTYLE = 'lifestyle';
/**
 * 获取品牌一览资源位&channelType
 *
 * @param string $channelStr
 * @return array
 */
const switchBrandParams = channel => {
    let req = {};

    switch (channel) {

        case BOYS:
            req = {
                channelType: 1,
                brandCode: channelCode.brand_plusstar_banner_boys
            }
            break;
        case GIRLS:
            req = {
                channelType: 2,
                brandCode: channelCode.brand_plusstar_banner_girls
            }
            break;
        case KIDS:
            req = {
                channelType: 3,
                brandCode: channelCode.kids_brand
            }
            break;
        case LIFESTYLE:
            req = {
                channelType: 4,
                brandCode: channelCode.lifestyle_brand
            }
            break;
        default:
            req = {
                channelType: 1,
                brandCode: channelCode.boys_brand
            }
            break;
    }
    return req;
}

/**
 * 获取品牌一览页面,品牌top
 * @param string $channel 频道名称
 */
const getBrandViewTop = channel => {
    return co(function*() {
        let switchParams =  switchBrandParams(channel);

        let res = yield brandApi.getBrandTopData(switchParams.brandCode);

        let result = {},
            brandAds = [],
            brandLogos = [];

        //头部10个品牌小图块 url
        if (res.data[1].data && res.data[1].data.list) {
            _.forEach(res.data[1].data.list, subValue => {
                brandAds.push({
                    name: subValue.name,
                    src: helpers.image(subValue.src, 80, 50, 3),
                    url: helpers.urlFormat(subValue.url)
                })
            });
        }
        //头部品牌图块,广告位
        if (res.data[0].data) {
            _.forEach(res.data[0].data, subValue => {
                let srcUrl;
                //kids lifestyle 第一张图尺寸不同
                if (switchParams.channelType === 1 || switchParams.channelType === 2) {
                    srcUrl = helpers.image(subValue.src, 222, 180, 3);
                }else {
                    srcUrl = (subValue === 0) ? helpers.image(subValue.src,  570, 280, 3) :
                        helpers.image(subValue.src,  280, 280, 3);
                }
                brandLogos.push({
                    name: subValue.title,
                    src: srcUrl,
                    url: helpers.urlFormat(subValue.url)
                })
            });
        }

        //整合brandTop数据结构,boys、girls
        if (switchParams.channelType === 1 || switchParams.channelType === 2) {
            result.isTab = true;
        }
        result.tabHeader = brandLogos;
        result.logos = brandAds;

        return result;
    })();
};
/*
 * 获取品牌一览list
 * @param string $channel 频道名称
 * @param int start  开始位置 1 开始
 * @param int length 取数长度 0 取到最后
 */
const getBrandViewList = (channel, start, length) =>{
    return co(function*() {
        let switchParams =  switchBrandParams(channel);

        let res = yield brandApi.getBrandListData(switchParams.brandCode);

        let result = {},
            navigation = [];

        //品牌list A-Z 0-9
        if (res.data.brands) {
            let listTmp = {};

            _.forEach(res.data.brands, subValue => {
                // if(_.isEmpty(subValue)){
                //     continue;
                // }
                _.forEach(subValue, ssubValue => {
                    //为品牌名称
                    let brandName = ssubValue.brand_name,
                        href;

                    if (switchParams.channelType === 1) {
                        href = helpers.urlFormat(ssubValue.brand_domain) + '?gender=1,3';
                    }else if (switchParams.channelType === 2) {
                        href = helpers.urlFormat(ssubValue.brand_domain) + '?gender=2,3';
                    }else {
                        href = helpers.urlFormat(ssubValue.brand_domain);
                    }

                    listTmp[brandName] = {
                        name: ssubValue.brand_name,
                        key: ssubValue.id,
                        href: href
                    }
                    if (ssubValue.is_hot === 'Y') {
                        listTmp[brandName].hot = 'hot';
                    }

                })
                //按键值排序
            })

        }
        //只取部分数据
        // begin = ($start - 1) ? ($start - 1) : 0;
        // begin = ($begin > 0) ? $begin : 0;
        // result = $length ? array_slice($result, $begin, $length) : array_slice($result, $begin);
        // $result['navigation'] = $navigation;

        return result;
    })();
};
module.exports = {
    getBrandViewTop,
    getBrandViewList
};