Authored by yyq

sort cache

... ... @@ -18,6 +18,7 @@ const crypto = global.yoho.crypto;
const _ = require('lodash');
const md5 = require('md5');
const redis = global.yoho.redis;
const cache = global.yoho.cache;
// const limitNum = 60; // 商品每页显示数目
const needParams = ['query', 'msort', 'misort', 'category_id', 'gender', 'shelveTime'];
... ... @@ -33,6 +34,20 @@ const positionId = 10;
// 获取分类左侧广告id
const sortAdsId = 79;
const sortCache = {
key: 'global:yoho:category:name:',
get(categoryId) {
if (!categoryId) {
return Promise.resolve(false);
}
return cache.get(this.key + categoryId);
},
set(categoryId, sortName) {
return cache.set(this.key + categoryId, sortName);
}
};
/**
* 获取商品分类列表数据
*/
... ... @@ -58,7 +73,8 @@ function getListData(params, channel) {
let apiMethod = [
headerModel.requestHeaderData(channel, true),
this.searchApi.getSortList({}, channel),
this.searchApi.getProductList(searchParams, 'categoryList')
this.searchApi.getProductList(searchParams, 'categoryList'),
sortCache.get(searchParams.category_id)
];
// 搜索分类介绍和广告
... ... @@ -125,13 +141,13 @@ function getListData(params, channel) {
}
// 分类介绍
if (result[3] && result[3].code === 200) {
finalResult.list.sortIntro = searchHandler.handleSortIntro(result[3].data);
if (result[4] && result[4].code === 200) {
finalResult.list.sortIntro = searchHandler.handleSortIntro(result[4].data);
}
// 分类广告
if (result[4] && result[4].code === 200) {
Object.assign(finalResult.list.leftContent, searchHandler.handleSortAds(result[4].data));
if (result[5] && result[5].code === 200) {
Object.assign(finalResult.list.leftContent, searchHandler.handleSortAds(result[5].data));
}
let sortName;
... ... @@ -150,7 +166,20 @@ function getListData(params, channel) {
}
});
const seo = seoHandler.getListSeo(sortList, checkedList);
let extendParam = {};
if (searchParams.category_id) {
let cacheSortName = result[3];
if (!sortName && cacheSortName) {
sortName = cacheSortName;
extendParam.sort = cacheSortName;
} else if (sortName && sortName !== cacheSortName) {
sortCache.set(searchParams.category_id, sortName);
}
}
const seo = seoHandler.getListSeo(sortList, checkedList, extendParam);
if (sortName) {
return redis.all([
... ...
... ... @@ -85,8 +85,8 @@ const listDefaultTdk = {
* @param checked
* @returns {{title: string, keywords: string, description: string}}
*/
const getListSeo = (sorts, checked) => {
let {brand, channel, color, style, sort} = getSeoCheckedParamsName(sorts, checked);
const getListSeo = (sorts, checked, extend = {}) => {
let {brand, channel, color, style, sort} = Object.assign(getSeoCheckedParamsName(sorts, checked), extend);
if (brand && _.indexOf(brand, '、') > -1) {
brand = '';
... ...