Showing
1 changed file
with
121 additions
and
9 deletions
@@ -13,6 +13,8 @@ const serviceApi = global.yoho.ServiceAPI; | @@ -13,6 +13,8 @@ const serviceApi = global.yoho.ServiceAPI; | ||
13 | const _ = require('lodash'); | 13 | const _ = require('lodash'); |
14 | const helpers = global.yoho.helpers; | 14 | const helpers = global.yoho.helpers; |
15 | const images = require('../../../utils/images.js'); | 15 | const images = require('../../../utils/images.js'); |
16 | +const cache = global.yoho.cache; | ||
17 | +const logger = global.yoho.logger; | ||
16 | 18 | ||
17 | const getSortByConditionAsync = (condition) => { | 19 | const getSortByConditionAsync = (condition) => { |
18 | return api.get('sortgroup.json', condition); | 20 | return api.get('sortgroup.json', condition); |
@@ -27,6 +29,18 @@ const isFavoriteBrandUrl = '/shops/service/v1/favorite/'; | @@ -27,6 +29,18 @@ const isFavoriteBrandUrl = '/shops/service/v1/favorite/'; | ||
27 | // 根据品牌查询相关文章 | 29 | // 根据品牌查询相关文章 |
28 | const relateArticleUrl = 'guang/service/v2/article/getArticleByBrand'; | 30 | const relateArticleUrl = 'guang/service/v2/article/getArticleByBrand'; |
29 | 31 | ||
32 | +const getSearchCackeKey = params => { | ||
33 | + | ||
34 | + let ks= []; | ||
35 | + _.forEach(params, (val, key) => { | ||
36 | + if(params.hasOwnProperty(key) && !_.includes(['page', 'limit', 'need_filter', 'order'], key)) { | ||
37 | + ks.push(val); | ||
38 | + } | ||
39 | + }); | ||
40 | + | ||
41 | + return ks.join('_'); | ||
42 | +} | ||
43 | + | ||
30 | /** | 44 | /** |
31 | * 获取商品列表 | 45 | * 获取商品列表 |
32 | * @return | 46 | * @return |
@@ -37,11 +51,46 @@ const getProductList = (params) => { | @@ -37,11 +51,46 @@ const getProductList = (params) => { | ||
37 | 51 | ||
38 | // method: 'app.search.li', | 52 | // method: 'app.search.li', |
39 | order: 's_n_desc', | 53 | order: 's_n_desc', |
54 | + need_filter: 'yes', | ||
40 | limit: 60 | 55 | limit: 60 |
41 | }; | 56 | }; |
42 | 57 | ||
43 | Object.assign(finalParams, params); | 58 | Object.assign(finalParams, params); |
44 | - return yohoApi.get('', finalParams); | 59 | + |
60 | + let cKey= getSearchCackeKey(finalParams); | ||
61 | + | ||
62 | + return cache.get(cKey).catch().then(cdata => { | ||
63 | + | ||
64 | + let hasCache= false; | ||
65 | + if(cdata) { | ||
66 | + | ||
67 | + try { | ||
68 | + cdata= JSON.parse(cdata); | ||
69 | + } catch(e) { | ||
70 | + logger.debug('getProductList cache data parse fail.'); | ||
71 | + } | ||
72 | + | ||
73 | + if(cdata.filter && cdata.standard) { | ||
74 | + hasCache= true; | ||
75 | + finalParams.need_filter= 'no'; | ||
76 | + } | ||
77 | + } | ||
78 | + | ||
79 | + return yohoApi.get('', finalParams).then(result => { | ||
80 | + | ||
81 | + if(hasCache && result && result.data) { | ||
82 | + Object.assign(result.data, cdata); | ||
83 | + } else { | ||
84 | + if(result && result.data && result.data.filter) { | ||
85 | + cache.set(cKey, Object.assign({}, { | ||
86 | + filter: result.data.filter, | ||
87 | + standard: result.data.standard | ||
88 | + })); | ||
89 | + } | ||
90 | + } | ||
91 | + return result; | ||
92 | + }); | ||
93 | + }); | ||
45 | }; | 94 | }; |
46 | 95 | ||
47 | /** | 96 | /** |
@@ -57,7 +106,30 @@ const getSortList = (params) => { | @@ -57,7 +106,30 @@ const getSortList = (params) => { | ||
57 | }; | 106 | }; |
58 | 107 | ||
59 | Object.assign(finalParams, params); | 108 | Object.assign(finalParams, params); |
60 | - return yohoApi.get('', finalParams); | 109 | + |
110 | + let cKey= getSearchCackeKey(finalParams); | ||
111 | + | ||
112 | + return cache.get(cKey).catch().then(cdata => { | ||
113 | + | ||
114 | + let cdataObj; | ||
115 | + if(cdata) { | ||
116 | + try { | ||
117 | + cdataObj= JSON.parse(cdata); | ||
118 | + } catch(e) { | ||
119 | + logger.debug('getSortList cache data parse fail.'); | ||
120 | + } | ||
121 | + } | ||
122 | + | ||
123 | + if(cdataObj) { | ||
124 | + return cdataObj; | ||
125 | + } else { | ||
126 | + return yohoApi.get('', finalParams).then(ret => { | ||
127 | + | ||
128 | + cache.set(cKey, ret); | ||
129 | + return ret; | ||
130 | + }); | ||
131 | + } | ||
132 | + }); | ||
61 | }; | 133 | }; |
62 | 134 | ||
63 | /** | 135 | /** |
@@ -150,9 +222,28 @@ const getBrandShop = (query) => { | @@ -150,9 +222,28 @@ const getBrandShop = (query) => { | ||
150 | }; | 222 | }; |
151 | 223 | ||
152 | Object.assign(finalParams, {keyword: query}); | 224 | Object.assign(finalParams, {keyword: query}); |
153 | - return yohoApi.get('', finalParams).then(ret => { | ||
154 | - if (ret && ret.code === 200) { | ||
155 | - return ret.data; | 225 | + |
226 | + let cKey= getSearchCackeKey(finalParams); | ||
227 | + | ||
228 | + return cache.get(cKey).catch().then(cdata => { | ||
229 | + | ||
230 | + let retObj; | ||
231 | + try { | ||
232 | + if(cdata) retObj = JSON.parse(cdata); | ||
233 | + } catch(e) { | ||
234 | + logger.debug('getBrandShop cache data parse fail.'); | ||
235 | + } | ||
236 | + | ||
237 | + if(retObj) { | ||
238 | + return retObj; | ||
239 | + } else { | ||
240 | + return yohoApi.get('', finalParams).then(ret => { | ||
241 | + if (ret && ret.code === 200) { | ||
242 | + | ||
243 | + cache.set(cKey, ret.data); | ||
244 | + return ret.data; | ||
245 | + } | ||
246 | + });return | ||
156 | } | 247 | } |
157 | }); | 248 | }); |
158 | }; | 249 | }; |
@@ -163,12 +254,33 @@ const getBrandShop = (query) => { | @@ -163,12 +254,33 @@ const getBrandShop = (query) => { | ||
163 | */ | 254 | */ |
164 | const getShopsByBrandId = bid => { | 255 | const getShopsByBrandId = bid => { |
165 | 256 | ||
166 | - return yohoApi.get('', { | 257 | + let finalParams= { |
167 | method: 'app.shop.queryShopsByBrandId', | 258 | method: 'app.shop.queryShopsByBrandId', |
168 | brand_id: bid | 259 | brand_id: bid |
169 | - }).then(ret => { | ||
170 | - if (ret && ret.code === 200) { | ||
171 | - return ret.data; | 260 | + } |
261 | + | ||
262 | + let cKey= getSearchCackeKey(finalParams); | ||
263 | + | ||
264 | + return cache.get(cKey).catch().then(cdata => { | ||
265 | + let cdataObj; | ||
266 | + if(cdata) { | ||
267 | + try { | ||
268 | + cdataObj= JSON.parse(cdata); | ||
269 | + } catch(e) { | ||
270 | + logger.debug('getShopsByBrandId cache data parse fail.'); | ||
271 | + } | ||
272 | + } | ||
273 | + | ||
274 | + if(cdataObj) { | ||
275 | + return cdataObj; | ||
276 | + } else { | ||
277 | + return yohoApi.get('', finalParams).then(ret => { | ||
278 | + if (ret && ret.code === 200) { | ||
279 | + | ||
280 | + cache.set(cKey, ret.data); | ||
281 | + return ret.data; | ||
282 | + } | ||
283 | + }); | ||
172 | } | 284 | } |
173 | }); | 285 | }); |
174 | }; | 286 | }; |
-
Please register or login to post a comment