redshop-process.js 3.01 KB
/*
 * @Author: Targaryen
 * @Date: 2017-03-23 11:02:31
 * @Last Modified by: Targaryen
 * @Last Modified time: 2017-03-24 10:32:59
 */
/* 红人店铺数据处理 */

const _ = require('lodash');

let countCarouselImage = 0; // 轮播图模块统计

/**
 * 红人店铺楼层数据处理工具
 */
const _tools = {

    /**
     * 模块标题
     * @param {*} moduleData
     */
    title(moduleData) {
        return {
            module_type: 'Title',
            text: _.get(moduleData, 'data[0].text', ''),
            margin: _.get(moduleData, 'properties.isModuleMargin', false)
        };
    },

    /**
     * 视频模块
     * @param {*} moduleData
     */
    video(moduleData) {
        return {
            module_type: 'Video',
            title: _.get(moduleData, 'data[0].text.title', ''),
            content: _.get(moduleData, 'data[0].text.content', ''),
            pic: _.get(moduleData, 'data[0].pic', ''),
        };
    },
    carouselImage(moduleData) {
        let pics = [];

        _.forEach(_.get(moduleData, 'data', []), value => {
            pics.push({
                src: value.pic
            });
        });

        return {
            module_type: 'CarouselImage',
            num: countCarouselImage,
            pics: pics
        };
    },
    singleImage(moduleData) {
        return moduleData;
    },
    doubleImage(moduleData) {
        return moduleData;
    },
    tripleImage(moduleData) {
        return moduleData;
    },
    sknList(moduleData) {
        return moduleData;
    }
};

/**
 * 处理红人店铺楼层
 * @param {*} decoratorsData
 */
const floor = (decoratorsData) => {
    let finalData = [];

    _.forEach(decoratorsData, value => {
        try {
            value.module_data = JSON.parse(value.module_data);
        } catch (error) {
            console.log(error);
        }

        switch (value.module_type) {
            case 'Title':
                finalData.push(_tools.title(value.module_data));
                break;
            case 'Video':
                finalData.push(_tools.video(value.module_data));
                break;
            case 'CarouselImage':
                countCarouselImage++;
                finalData.push(_tools.carouselImage(value.module_data));
                break;
            case 'SingleImage':
                finalData.push(_tools.singleImage(value.module_data));
                break;
            case 'DoubleImage':
                finalData.push(_tools.doubleImage(value.module_data));
                break;
            case 'TripleImage':
                finalData.push(_tools.tripleImage(value.module_data));
                break;
            case 'SknList':
                finalData.push(_tools.sknList(value.module_data));
                break;
            default:
                break;
        }
    });

    return finalData;
};

const shopIntro = (params) => {
    if (params) {
        params.short_intro = _.get(params, 'shop_intro', '').replace(/<.*?>/g, '');
    }

    return params;
};

module.exports = {
    floor,
    shopIntro
};