search.js 2.23 KB
/**
 * 列表、搜索相关api调用
 */

'use strict';

const api = global.yoho.API;
const _ = require('lodash');

/**
 * 过滤空参数,不传给api
 * @param obj
 * @returns {*}
 * @private
 */
function _paramHanlde(obj) {
    _.keys(obj).forEach(k => {
        if (obj[k] === null || obj[k] === '') {
            _.unset(obj, k);
        }
    });

    if (obj.price) {
        let prices = obj.price.split(',');

        if (!prices[1]) {
            prices[1] = Number.MAX_SAFE_INTEGER;
            obj.price = prices.join(',');
        }
    }

    if (obj.standard) {
        let standards = obj.standard.split(',');

        obj.standard_id = standards[0];
        obj.standard_value_id = standards[1];
    }

    let _gender;

    if (obj.yh_channel) {
        switch (obj.yh_channel) {
            case 'men':
                _gender = '1,3';
                break;
            case 'women':
                _gender = '2,3';
                break;
            default:
                break;
        }
    }

    if (obj.gender || _gender) {
        obj.gender = obj.gender || _gender;
    }
    return obj;
}

const Search = {

    /**
     * 搜索接口调用
     * @param params
     * @returns {*}
     */
    queryProduct(params) {

        let finalParams = {
            method: 'web.search.search',
            limit: 45,
            need_filter: '1'
        };

        Object.assign(finalParams, _paramHanlde(params));

        return api.get('', finalParams);
    },
    queryProductOfBrand(params) {
        let finalParams = {
            method: 'web.search.search',
            limit: 45
        };

        Object.assign(finalParams, _paramHanlde(params));

        return api.get('', finalParams);
    },
    queryNewProduct(params) {
        let finalParams = {
            method: 'web.search.search',
            limit: 45,
            dayLimit: 1
        };

        Object.assign(finalParams, _paramHanlde(params));

        return api.get('', finalParams);
    },
    queryAllSort(params) {

        params = _.clone(params) || {};

        delete params.msort;
        delete params.misort;

        return api.get('', _.assign({
            method: 'web.regular.groupsort'
        }, params), {code: 200});
    }
};

module.exports = Search;