list.js 2.11 KB
/*
 * @Author: Targaryen
 * @Date:   2016-06-02 15:11:15
 * @Last Modified by:   Targaryen
 * @Last Modified time: 2016-06-06 11:02:32
 */

'use strict';
const library = '../../../library';
const utils = '../../../utils';
const API = require(`${library}/api`).API;
const api = new API();
const saleApi = require('./sale-api');
const productProcess = require(`${utils}/product-process`);
const _ = require('lodash');
const publicHandler = require('./public-handler');

/**
 * 获取商品列表商品数据 Controller 调用
 * @param  {[type]} params [常规参数]
 * @param  {[type]} extra  [左侧列表额外要拼接的参数]
 * @return {[type]}        [description]
 */
exports.getSaleOthersData = (params, extra) => {

    let promiseObject = [
        saleApi.getSaleGoodsList(params),
        saleApi.getLeftContentList()
    ];

    return api.all(promiseObject).then(result => {
        let finalResult = {};

        // 获取商品数据和顶部筛选条件
        if (result[0].code === 200) {
            finalResult.goods = productProcess.processProductList(result[0].data.product_list);
            if (!_.isEmpty(result[0].data.filter)) {
                finalResult.filters = publicHandler.handleSaleFilterData(result[0].data.filter, params);
            }

            // 处理排序数据
            finalResult.opts = publicHandler.handleSaleOptsData(params, result[0].data.total);
            finalResult.totalCount = result[0].data.total;
            finalResult.pager = publicHandler.handleSalePagerData(result[0].data.total, params);
        }

        // 获取左侧类目数据
        if (result[1].code === 200) {
            if (params.gender === '2,3') {
                finalResult.leftContent = publicHandler.handleSaleSortData(
                    result[1].data.girl,
                    params,
                    extra
                );
            } else {
                finalResult.leftContent = publicHandler.handleSaleSortData(
                    result[1].data.boy,
                    params,
                    extra
                );
            }
        }

        return finalResult;
    });
};