outlets-handler.js 3.32 KB
'use strict';
// const library = '../../../library';

// const helpers = require(`${library}/helpers`);
const _ = require('lodash');
const camelCase = require('../../../library/camel-case');

/**
 * NL2R图片轮播
 */
const nl2r = (data) => {
    const result = {
        left: [],
        right: []
    };

    // 左侧
    _.forEach(data.left, (value) => {
        result.left.push({
            img: value.src,
            url: value.url
        });
    });

    // 右侧
    _.forEach(data.right, (value) => {
        result.right.push({
            img: value.src,
            url: value.url
        });
    });
    return result;
};

/**
 * 热门分类
 */
const hotCategory = (data) => {
    return {
        hotCategory: {
            name: data.name,
            list: data.menuNav.list,
            blocks: data.menuNav.blocks,
            brands: data.imgs.slice(0, 1),
            types: data.imgs.slice(1, 7)
        }
    };
};

/**
 * 分类导航
 */
const categoryNavigation = (data) => {
    const goodsMenu = {
        title: '最新折扣',
        menuList: [],
        more: 'http://list.yohobuy.com/?msort=3&misort=26'
    };
    
    _.forEach(data, (value) => {
        goodsMenu.menuList.push({
            cur: false,
            url: value.url,
            name: value.categoryName
        });
    });
    return {
        goodsBoard: {
            oodsMenu: goodsMenu,
            sort: {
                sortType: [{
                    name: '最新',
                    active: true,
                    hasSortOrient: {
                        active: true,
                        desc: true
                    }
                }, {
                    name: '折扣',
                    active: false,
                    hasSortOrient: {
                        active: false,
                        desc: true
                    }
                }, {
                    name: '价格',
                    active: false,
                    hasSortOrient: {
                        active: true,
                        desc: true
                    }
                }]
            }}
    };
};


/**
 * 处理楼层数据
 * @param  {[array]} list
 * @return {[array]}
 */
exports.processFloor = (list) => {
    const formatData = [];
    let floorData;

    list = list || [];
    list = camelCase(list);

    // 格式化数据
    _.forEach(list, (floor) => {
        switch (floor.templateName) {
            case 'NL2R':
                floorData = nl2r(floor.data);
                break;
            case 'hotCategory':
                floorData = hotCategory(floor.data);
                break;
            case 'categoryNavigation':
                floorData = categoryNavigation(floor.data);
                break;
            default:
                floorData = floor.data;
                break;

        }
        Object.assign(formatData, floorData);
    });
    return formatData;
};

/**
 * 组织嗨购数据
 */
exports.formatActivityData = (data) => {
    let high = {
        name: '限时嗨购',
        imgHot: []
    };

    _.forEach(data, (value) => {
        high.imgHot.push({
            url: value.webUrl,
            img: value.coverUrl,
            logo: value.logoUrl,
            name: value.title,
            price: value.promotionName,
            count: value.endTime
        });
    });
    return high;
};