sale.js 10 KB
/*
 * @Author: Targaryen
 * @Date:   2016-05-19 10:20:08
 * @Last Modified by:   Targaryen
 * @Last Modified time: 2016-06-01 18:28:12
 */

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

/**
 * 获取Sale首页商品列表数据 仅 Ajax 调用 Controller 调用
 * @return {[type]} [description]
 */
exports.getSaleGoodsData = (params) => {

    return api.all([
        saleApi.getSaleGoodsList(params),
        saleApi.getUserProfile(params.uid)
    ]).then(result => {
        let finalResult = {};

        if (result[0].code === 200) {
            finalResult.goods = productProcess.processProductList(result[0].data.product_list);
            switch (params.saleType) {
                case '1':
                    finalResult.goods.push({
                        thumb: 'http://img10.static.yhbimg.com/product/2014/01/15/11/01fa01614784f6239760f1b749663016f1.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/90',
                        url: 'http://localhost:6002/product/sale/breakingYards'
                    });
                    break;
                case '2':
                    finalResult.goods.push({
                        thumb: 'http://img10.static.yhbimg.com/product/2014/01/15/11/01fa01614784f6239760f1b749663016f1.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/90',
                        url: 'http://localhost:6002/product/sale/vip'
                    });
                    break;
                default:
                    break;
            }
        }

        // 处理 VIP 商品数据
        if (result[1].code === 200 && parseInt(params.saleType, 10) === 2) {
            _.forEach(finalResult.goods, (value, key) => {

                switch (result[1].curLevel) {
                    case '1':
                        finalResult.goods[key].vipPrice = value.vip1_price;
                        finalResult.goods[key].vip1 = true;
                        break;
                    case '2':
                        finalResult.goods[key].vipPrice = value.vip2_price;
                        finalResult.goods[key].vip2 = true;
                        break;
                    case '3':
                        finalResult.goods[key].vipPrice = value.vip3_price;
                        finalResult.goods[key].vip3 = true;
                        break;
                    default:
                        finalResult.goods[key].vipPrice = value.vip_price;
                        finalResult.goods[key].vip = true;
                        break;
                }

            });
        }
        return finalResult;
    });
};

/**
 * 获取 Sale 首页数据 Controller 调用
 * @return {[type]} [description]
 */
exports.getSaleIndexData = () => {

    return api.all([
        saleApi.getSaleActivityList(),
        saleApi.getSaleBannerList('7c2b77093421efa8ae9302c91460db73')
    ]).then(result => {
        var finalResult = {};

        if (result[0].code === 200) {
            finalResult.brandSale = saleHandler.handleSaleActivityData(result[0].data);
        }

        if (result[1].code === 200) {
            finalResult.topBanner = saleHandler.handleSaleBannerData(result[1].data);
            finalResult.activityEnter = saleHandler.handleSaleBannerSmallData(result[1].data);
        }

        finalResult.saleCategory = saleHandler.handleSaleCategoryData();

        return finalResult;
    });
};

/**
 * 获取 VIP 会员专享和新降价专区数据 Controller 调用
 * @return {[type]} [description]
 */
exports.getSaleOthersData = (params) => {

    let promiseObject;

    // cCode 是资源位代码,根据页面不同传不同的 CODE,目前一样,待处理
    // saleType: 1表示断码区,2表示会员专区,3 折扣专区,4表示奥莱
    let cCode;

    if (!_.isEmpty(params) && params.saleType === 2) {
        cCode = '7c2b77093421efa8ae9302c91460db73';
        promiseObject = [
            saleApi.getSaleGoodsList(params),
            saleApi.getSaleBannerList(cCode),
            saleApi.getLeftContentList(),
            saleApi.getUserProfile(params.uid)
        ];
    } else {
        cCode = '7c2b77093421efa8ae9302c91460db73';
        promiseObject = [
            saleApi.getSaleGoodsList(params),
            saleApi.getSaleBannerList(cCode),
            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 = saleHandler.handleSaleFilterData(result[0].data.filter, params);
            }

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

            if (!_.isEmpty(params) && params.saleType === 2) {
                finalResult.saleTitle = {};

                finalResult.saleTitle.name = '所有商品';
                finalResult.saleTitle.count = finalResult.totalCount;
            }
        }

        // 获取焦点图数据
        if (result[1].code === 200) {
            finalResult.topBanner = saleHandler.handleSaleBannerData(result[1].data);
        }

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

        // 处理 VIP 商品数据
        if (result[3].code === 200 && parseInt(params.saleType, 10) === 2) {
            _.forEach(finalResult.goods, (value, key) => {

                switch (result[3].curLevel) {
                    case '1':
                        finalResult.goods[key].vipPrice = value.vip1_price;
                        finalResult.goods[key].vip1 = true;
                        break;
                    case '2':
                        finalResult.goods[key].vipPrice = value.vip2_price;
                        finalResult.goods[key].vip2 = true;
                        break;
                    case '3':
                        finalResult.goods[key].vipPrice = value.vip3_price;
                        finalResult.goods[key].vip3 = true;
                        break;
                    default:
                        finalResult.goods[key].vipPrice = value.vip_price;
                        finalResult.goods[key].vip = true;
                        break;
                }

            });
        }

        return finalResult;
    });
};

/**
 * 获取折扣专场数据 Controller 调用
 * @return {[type]} [description]
 */
exports.getSaleDiscountData = (params) => {
    return api.all([
        saleApi.getSaleGoodsList(params),
        saleApi.getSaleBannerList('7c2b77093421efa8ae9302c91460db73'),
        saleApi.getSaleActivityList(params)
    ]).then(result => {
        let finalResult = {};

        // 处理商品数据,顶部分类
        if (result[0].code === 200) {
            finalResult.saleList = {};
            finalResult.saleList.goods = productProcess.processProductList(result[0].data.product_list);
            finalResult.leftContent = saleHandler.handleSaleSortData(result[0].data.filter.group_sort, params);
            finalResult.totalCount = result[0].data.total;
            finalResult.pager = saleHandler.handleSalePagerData(result[0].data.total, params);
        }

        // 处理焦点图数据
        if (result[1].code === 200) {
            finalResult.topBanner = saleHandler.handleSaleBannerData(result[1].data);
        }

        // 处理折扣专场标题数据
        if (result[2].code === 200) {
            if (_.size(result[2].data) === 1) {
                finalResult.saleTitle = saleHandler.handleDiscountTitleData(result[2].data[0]);
            }
        }

        return finalResult;
    });
};

/**
 * 获取断码区数据 Controller 调用
 * @param  {[type]} params [description]
 * @return {[type]}        [description]
 */
exports.getSalebreakingYardsData = (params) => {
    return api.all([
        saleApi.getSaleGoodsList(params),
        saleApi.getSalebreakingYardsSortList(),
        saleApi.getSaleBannerList('7c2b77093421efa8ae9302c91460db73'),
        saleApi.getLeftContentList()
    ]).then(result => {
        let finalResult = {};

        if (result[0].code === 200 && result[1].code === 200) {
            finalResult.goods = productProcess.processProductList(result[0].data.product_list);

            // 这边整合了尺码数据处理
            finalResult.filters = saleHandler.handleSaleFilterData(
                Object.assign(result[0].data.filter, { size: result[1].data }),
                params);

            finalResult.opts = saleHandler.handleSaleOptsData(params, result[0].data.total);
            finalResult.totalCount = result[0].data.total;
            finalResult.pager = saleHandler.handleSalePagerData(result[0].data.total, params);
        }

        if (result[2].code === 200) {
            finalResult.topBanner = saleHandler.handleSaleBannerData(result[2].data);
        }

        if (result[3].code === 200) {
            if (params.gender === '2,3') {
                finalResult.leftContent = saleHandler.handleSaleSortData(result[3].data.girl, params);
            } else {
                finalResult.leftContent = saleHandler.handleSaleSortData(result[3].data.boy, params);
            }

        }

        return finalResult;
    });
};