outlets-handler.js 2.21 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, key) => {
        result.left.push({
            img: value.src,
            url: value.url
        });
    })
    //右侧
    _.forEach(data.right, (value, key) => {
        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) => {
    
 }


/**
 * 处理楼层数据
 * @param  {[array]} list
 * @return {[array]}
 */
exports.processFloor = (list) => {
    const formatData = [];
    var 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) => {
    var 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;
 }