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

const _ = require('lodash');

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

/**
 * 图片处理
 * @param {*} moduleData
 */
const _picsHandle = (moduleData) => {
    let pics = [];

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

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

    /**
     * 模块标题
     * @param {*} moduleData
     */
    title(moduleData) {
        return {
            module_type: 'Title',
            text: _.get(moduleData, 'data[0].text', ''),
            isModuleMargin: _.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', ''),
        };
    },

    /**
     * 轮播图
     * @param {*} moduleData
     */
    carouselImage(moduleData) {
        return {
            module_type: 'CarouselImage',
            num: countCarouselImage,
            pics: _picsHandle(moduleData),
            isModuleMargin: _.get(moduleData, 'properties.isModuleMargin', false),
        };
    },

    /**
     * 一张图片
     * @param {*} moduleData
     */
    singleImage(moduleData) {
        return {
            module_type: 'SingleImage',
            pic: _.get(moduleData, 'data[0].pic', ''),
            text: _.get(moduleData, 'data[0].text', ''),
            width: _.get(moduleData, 'properties.width', ''),
            height: _.get(moduleData, 'data[0].text', ''),
            moduleHeight: _.get(moduleData, 'properties.moduleHeight', ''),
            isModuleMargin: _.get(moduleData, 'properties.isModuleMargin', false),
        };
    },

    /**
     * 两张图片
     * @param {*} moduleData
     */
    doubleImage(moduleData) {
        return {
            module_type: 'DoubleImage',
            pics: _picsHandle(moduleData),
            isModuleMargin: _.get(moduleData, 'properties.isModuleMargin', false),
        };
    },

    /**
     * 三张图片
     * @param {*} moduleData
     */
    tripleImage(moduleData) {
        let displayType = _.get(moduleData, 'properties.displayType', 1);

        return {
            module_type: 'TripleImage',
            pics: _picsHandle(moduleData),
            isModuleMargin: _.get(moduleData, 'properties.isModuleMargin', false),
            displayType: parseInt(displayType, 10),
        };
    },

    /**
     * 商品列表
     * @param {*} moduleData
     */
    sknList(moduleData) {
        let skns = '';

        _.forEach(_.get(moduleData, 'data', []), value => {
            skns += value + ',';
        });

        return {
            module_type: 'SknList',
            skns: skns,
        };
    }
};

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

    countCarouselImage = 0;
    _.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
};