outlets.js 3.76 KB
/*
 * @Author: Targaryen
 * @Date:   2016-05-30 16:20:03
 * @Last Modified by:   Targaryen
 * @Last Modified time: 2016-06-02 15:57:38
 */

'use strict';
const library = '../../../library';
const utils = '../../../utils';
const API = require(`${library}/api`).API;
const api = new API();
const saleApi = require('./sale-api');
const outletsProcess = require('./outlets-handler');
const outletsApi = require('./outlets-api');
const productProcess = require(`${utils}/product-process`);

// 奥莱频道资源码
const channelCode = {
    index: 'e0565dad65fb8da1f39bc1ac83fc8346',
    boys: '2af513637dc5feeec7f6f8b52989b24b',
    girls: 'd1b56b56c3a12dc1f2f83958680a0911',
    kids: '0fd7ad594940f9ec5a03697317cf6521',
    lifestyle: 'b3d3f55a26f130ac2b516b9fb3823711'
};

/**
 * 获取奥莱首页数据
 * @param  {[type]} origin [description]
 * @return {[type]}        [description]
 */
exports.getOutletsIndexData = (params) => {
    return api.all([
        outletsApi.getChannelResouceData({ content_code: channelCode.index }),
        outletsApi.getOutletsActivityOrigin(params), // 获取限时活动列表
        outletsApi.getOutletsActivityOrigin(params), // 获取即将结束列表
        outletsApi.getOutletsTrendData(params), // 获取潮流速递商品数据
        saleApi.getSaleGoodsList(params) // 获取底部商品数据
    ]).then(result => {
        let finalResult = {};

        // 处理资源位数据
        if (result[0].code === 200) {
            finalResult = Object.assign(finalResult,
                outletsProcess.handleOutletsBannersData(result[0].data, params));
        }

        // 处理限时嗨购列表数据
        if (result[1].code === 200) {
            finalResult.limitedBuy = Object.assign(finalResult.limitedBuy,
                outletsProcess.handleOutletsActivityData(result[1].data));
        }

        // 处理即将结束列表数据
        if (result[2].code === 200) {
            finalResult.nearOver = outletsProcess.handleOutletsActivityData(result[2].data);
        }

        // 处理潮品推荐数据
        if (result[3].code === 200) {
            finalResult.limitedBuy.extra.trendGood = outletsProcess.handleOutletstrendGoodData(result[3].data);
        }

        // 处理底部商品数据
        if (result[4].code === 200) {
            finalResult.goodsBoard.list = productProcess.processProductList(result[4].data.product_list);
        }

        return finalResult;
    });
};

/**
 * 获取奥莱频道页面数据
 * @param  {[object]} gender
 * @return {[type]}
 */
exports.getOutletsChannelData = (params) => {
    let channelData = {};

    return api.all([
        outletsApi.getChannelResouceData({ content_code: channelCode[params.channel] }),
        outletsApi.getOutletsActivityOrigin({ platform: 2, size: 0, type: 1 }),
        saleApi.getSaleGoodsList(params)
    ]).then(result => {
        // 资源楼层
        if (result[0].code === 200) {
            Object.assign(channelData, outletsProcess.processFloor(result[0].data.list));
        }

        // 限时嗨购
        if (result[1].code === 200) {
            Object.assign(channelData, { flashSale: outletsProcess.formatActivityData(result[1].data) });
        }

        // 商品列表
        if (result[2].code === 200) {
            channelData.goodsBoard.list = productProcess.processProductList(result[2].data.product_list);
        }
        return channelData;
    });
};

/**
 * 获取奥莱活动页面数据
 * @param  {[object]}
 * @return {[type]}
 */
exports.getOutletsSpecialData = (params) => {
    return api.all([
        outletsApi.getOutletsActivityOrigin({
            id: params.id
        })
    ]).then(result => {
        if (result[0].code === 200) {
            return outletsProcess.handleOutletsSpecilData(result[0].data[0]);
        }
    });
};