/** * 列表、搜索相关api调用 */ 'use strict'; const api = global.yoho.API; const helpers = global.yoho.helpers; 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 = JSON.stringify(standards); // } // let _gender; // if (obj.yh_channel) { switch (obj.yh_channel) { case 'men': obj.yh_channel = '301'; break; case 'women': obj.yh_channel = '302'; break; default: obj.yh_channel = '303'; 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}); }, getSuggest(params) { return api.get('', _.assign({ method: 'app.search.fuzzy' }, params), {code: 200}).then(result => { let list = result.data || []; let suggest = []; _.forEach(list, function(value) { suggest.push({ href: helpers.urlFormat('/product/query', {query: value.keyword}), keyword: value.keyword, count: value.count }); }); return suggest; }); } }; module.exports = Search;