sale.js 5.24 KB
/*
 * @Author: Targaryen
 * @Date:   2016-05-19 10:20:08
 * @Last Modified by:   Targaryen
 * @Last Modified time: 2016-05-21 14:39:36
 */

'use strict';
const library = '../../../library';
const API = require(`${library}/api`).API;
const sign = require(`${library}/sign`);
const api = new API();
const _ = require('lodash');

/**
 * 处理 sale 首页原始数据
 * @param  {Object} origin [原始数据]
 * @return {Object}        [结果]
 */
const handleSaleIndexData = (origin) => {
    var dest = {};

    dest = origin;
    return dest;
};

/**
 * 处理商品列表数据
 * @param  {[type]} origin [description]
 * @return {[type]}        [description]
 */
const handleSaleGoodsListData = (origin) => {
    var dest = [];


    if (!_.isEmpty(origin)) {

        _.forEach(origin, function(value) {
            let oneGoods = {};

            oneGoods.tags = value.tags;
            oneGoods.thumb = value.default_images;
            oneGoods.url = '/product/pro_' + value.product_id + '_' + value.goods_list[0].goods_id + '/' +
                value.cn_alphabet + '.html';
            oneGoods.goodsList = value.goods_list;
            oneGoods.name = value.product_name;
            oneGoods.brand = {};
            oneGoods.brand.url = value.brand_domain + '.SUB_DOMAIN'; // 待处理
            oneGoods.brand.name = value.brand_name;
            oneGoods.marketPrice = value.market_price;

            dest.push(oneGoods);
        });
    }

    return dest;
};

/**
 * 处理筛选数据
 * @param  {[type]} origin [description]
 * @return {[type]}        [description]
 */
const handleSaleFilterData = (origin) => {
    var dest = {};

    dest.brand = {};
    dest.price = [];
    dest.channel = [];

    dest.opts = {};

    // 处理 品牌 筛选数据
    dest.brand.default = [];
    if (!_.isEmpty(origin.brand)) {
        _.forEach(origin.brand, function(value) {
            let brand = {};

            brand.checked = false;
            brand.href = 'CURRENT_URL/brand=' + value.brand_domain; // 待处理
            brand.name = value.brand_name;

            dest.brand.default.push(brand);
        });
    }

    // 处理 价格 筛选数据
    if (!_.isEmpty(origin.priceRange)) {
        _.forEach(origin.priceRange, function(value, key) {
            let price = {
                checked: false,
                href: 'CURRENT_URL/price=' + key, // 待处理
                name: value
            };

            dest.price.push(price);
        });
    }

    // 处理频道数据
    for (let i = 0; i < 2; i++) {
        dest.channel[i] = {};

        dest.channel[i].checked = false;
    }

    dest.channel[0].name = '男生';
    dest.channel[0].href = 'CURRENT_URL/?gender=1,3';
    dest.channel[1].name = '女生';
    dest.channel[1].href = 'CURRENT_URL/?gender=2,3';

    // 处理 opts 折扣等排序数据
    dest.opts.countPerPage = 60;
    dest.opts.start = 1;
    dest.opts.end = 20;
    dest.opts.sortType = {};

    for (let i = 0; i < 2; i++) {
        dest.opts.sortType[i] = {};

        dest.opts.sortType[i].href = 'CURRENT_URL/?order=s_p_asc';
        dest.opts.sortType[i].name = '价格';

        dest.opts.sortType[i].hasSortOrient = {};
        dest.opts.sortType[i].hasSortOrient.active = {};
        dest.opts.sortType[i].hasSortOrient.active.desc = {};
    }


    return dest;
};

/**
 * 处理分类筛选数据
 * @return {[type]} [description]
 */
const handleSaleSortData = (origin) => {
    var leftContent = {};

    leftContent.allDiscount = {};
    leftContent.allDiscount.list = [];

    _.forEach(origin, function(value) {
        let category = {};

        category.name = value.sort_name;
        leftContent.allDiscount.list.push(category);
    });


    return leftContent;
};

/**
 * 返回商品列表 promise 对象
 * @return {[type]} [description]
 */
const getSaleGoodsList = () => {
    return api.get('', sign.apiSign({
        method: 'app.search.sales',
        limit: 5,
        order: 's_t_desc',
        page: 1,
        productSize: '384x511',
        yh_channel: 1
    }));
};

/**
 * 获取分类信息 promise 对象
 * @return {[type]} [description]
 */
const getSortList = () => {
    return api.get('', sign.apiSign({
        method: 'app.sale.getBreakingSort',
        yh_channel: 1
    }));
};

/**
 * 获取 Sale 首页数据
 * @return {[type]} [description]
 */
exports.getSaleIndexDate = () => {
    return api.get('', sign.apiSign({
        method: 'app.activity.get',
        sort: 2,
        plateform: 2
    })).then(result => {

        return handleSaleIndexData(result);
    });
};

/**
 * 获取页面全部信息
 * @return {[type]} [description]
 */
exports.getSaleData = () => {

    return api.all([getSortList(), getSaleGoodsList()]).then(result => {
        let finalResult = {};

        if (result[0].code === 200) {
            finalResult.leftContent = handleSaleSortData(result[0].data);
        }
        if (result[1].code === 200) {

            if (!_.isEmpty(result[1].data.product_list)) { // 处理商品列表数据
                finalResult.goods = handleSaleGoodsListData(result[1].data.product_list);
            }

            if (!_.isEmpty(result[1].data.filter)) {
                finalResult.filters = handleSaleFilterData(result[1].data.filter);
            }
        }
        return finalResult;
    });
};