Authored by yyq

code 公共处理方法

@@ -13,8 +13,6 @@ const sign = require(`${global.library}/sign`); @@ -13,8 +13,6 @@ const sign = require(`${global.library}/sign`);
13 13
14 const serviceApi = new ServiceAPI(); 14 const serviceApi = new ServiceAPI();
15 15
16 -const log = require(`${global.library}/logger`);  
17 -  
18 /** 16 /**
19 * 获取菜单 17 * 获取菜单
20 * @param undefined 18 * @param undefined
@@ -179,14 +177,12 @@ const getSubNav = (data, type) => { @@ -179,14 +177,12 @@ const getSubNav = (data, type) => {
179 */ 177 */
180 const setHeaderData = (resData, type) => ( 178 const setHeaderData = (resData, type) => (
181 { 179 {
182 - headerData: {  
183 header: true, 180 header: true,
184 headType: type, 181 headType: type,
185 yohoGroup: getMenuData(), 182 yohoGroup: getMenuData(),
186 navbars: resData ? getNavBar(resData, type) : [], 183 navbars: resData ? getNavBar(resData, type) : [],
187 subNav: resData ? getSubNav(resData, type) : [] 184 subNav: resData ? getSubNav(resData, type) : []
188 } 185 }
189 - }  
190 ); 186 );
191 187
192 188
@@ -204,12 +200,12 @@ exports.requestHeaderData = (type, parentId) => { @@ -204,12 +200,12 @@ exports.requestHeaderData = (type, parentId) => {
204 200
205 type = type || 'boys'; 201 type = type || 'boys';
206 202
207 - return serviceApi.get('operations/api/v6/category/getCategory', data, true).then(res => {  
208 - if (res && res.code === 200) {  
209 - return setHeaderData(res.data, type);  
210 - } else {  
211 - log.error('获取头部信息的接口返回状态码 不是 200');  
212 - return {};  
213 - } 203 + return serviceApi.get('operations/api/v6/category/getCategory', data, {
  204 + cache: true,
  205 + code: 200
  206 + }).then(res => {
  207 + return {
  208 + headerData: res ? setHeaderData(res.data, type) : {}
  209 + };
214 }); 210 });
215 }; 211 };
@@ -55,9 +55,28 @@ class Http { @@ -55,9 +55,28 @@ class Http {
55 } 55 }
56 56
57 /** 57 /**
  58 + * 处理接口返回状态码
  59 + */
  60 + _handleDataCode(data, code, url) {
  61 + let result = {};
  62 +
  63 + code = code || 200;
  64 + if (_.toNumber(data.code) === _.toNumber(code)) {
  65 + _.unset(data, 'code');
  66 + _.forEach(data, (value, key) => {
  67 + _.set(result, key, value);
  68 + });
  69 + } else {
  70 + log.error(`API: ${url} return code not ${code}`);
  71 + }
  72 + return result;
  73 + }
  74 +
  75 +
  76 + /**
58 * 调用接口 77 * 调用接口
59 */ 78 */
60 - _requestFromAPI(options, cacheOption, reqId) { 79 + _requestFromAPI(options, param, reqId) {
61 const timer = new Timer(); 80 const timer = new Timer();
62 const method = options.method || 'get'; 81 const method = options.method || 'get';
63 82
@@ -71,9 +90,15 @@ class Http { @@ -71,9 +90,15 @@ class Http {
71 return Promise.reject(API_BAD_RETSULT); 90 return Promise.reject(API_BAD_RETSULT);
72 } 91 }
73 92
  93 + // 处理返回数据状态码
  94 + if (param && param.code) {
  95 + result = this._handleDataCode(result, param.code, options.url);
  96 + }
  97 +
74 // 写缓存, 否则返回 Slave 缓存服务器的数据 98 // 写缓存, 否则返回 Slave 缓存服务器的数据
75 - if (config.useCache && cacheOption) {  
76 - const cacheTime = _.isNumber(cacheOption) ? cacheOption : 60; 99 + if (options.method === 'get' && config.useCache &&
  100 + param && param.cache) {
  101 + const cacheTime = _.isNumber(param.cache) ? param.cache : 60;
77 const catchErr = (err) => { 102 const catchErr = (err) => {
78 log.error(`cache: ${err.toString()}`); 103 log.error(`cache: ${err.toString()}`);
79 }; 104 };
@@ -92,7 +117,7 @@ class Http { @@ -92,7 +117,7 @@ class Http {
92 log.error(`API: ${options.url}?${qs.stringify(options.qs)}`); 117 log.error(`API: ${options.url}?${qs.stringify(options.qs)}`);
93 118
94 // 使用缓存的时候,读取二级缓存 119 // 使用缓存的时候,读取二级缓存
95 - if (config.useCache && cacheOption) { 120 + if (config.useCache && param && param.cache) {
96 return this._requestFromCache(options, true); 121 return this._requestFromCache(options, true);
97 } 122 }
98 return Promise.resolve(API_CALL_FAIL); 123 return Promise.resolve(API_CALL_FAIL);
@@ -103,9 +128,10 @@ class Http { @@ -103,9 +128,10 @@ class Http {
103 * 读取缓存 128 * 读取缓存
104 * @param {[object]} options 129 * @param {[object]} options
105 * @param {[boolean]} slave true: 读取二级缓存 130 * @param {[boolean]} slave true: 读取二级缓存
  131 + * @param {[object]} param 请求API处理参数
106 * @return {[type]} 132 * @return {[type]}
107 */ 133 */
108 - _requestFromCache(options, slave) { 134 + _requestFromCache(options, slave, param) {
109 const reqId = this._getReqId(options); 135 const reqId = this._getReqId(options);
110 const getCache = slave ? cache.getFromSlave : cache.get; 136 const getCache = slave ? cache.getFromSlave : cache.get;
111 137
@@ -122,14 +148,14 @@ class Http { @@ -122,14 +148,14 @@ class Http {
122 148
123 // 读取缓存失败,并且不是二级缓存的时候,调用 API 149 // 读取缓存失败,并且不是二级缓存的时候,调用 API
124 if (!slave) { 150 if (!slave) {
125 - return this._requestFromAPI(options, true, reqId); 151 + return this._requestFromAPI(options, param, reqId);
126 } 152 }
127 }).catch(() => { 153 }).catch(() => {
128 log.error(slave ? SLAVE_CACHE_FAIL : MASTER_CACHE_FAIL); 154 log.error(slave ? SLAVE_CACHE_FAIL : MASTER_CACHE_FAIL);
129 155
130 // 读取缓存失败,并且不是二级缓存的时候,调用 API 156 // 读取缓存失败,并且不是二级缓存的时候,调用 API
131 if (!slave) { 157 if (!slave) {
132 - return this._requestFromAPI(options, true, reqId); 158 + return this._requestFromAPI(options, param, reqId);
133 } 159 }
134 160
135 return Promise.resolve(API_CALL_FAIL); 161 return Promise.resolve(API_CALL_FAIL);
@@ -140,10 +166,10 @@ class Http { @@ -140,10 +166,10 @@ class Http {
140 * 使用 get 请求获取接口 166 * 使用 get 请求获取接口
141 * @param {[string]} url 167 * @param {[string]} url
142 * @param {[object]} data 168 * @param {[object]} data
143 - * @param {[bool or number]} cacheOption 使用数字时,数字表示缓存时间 169 + * @param {[object]} param 数据处理参数
144 * @return {[type]} 170 * @return {[type]}
145 */ 171 */
146 - get(url, data, cacheOption) { 172 + get(url, data, param) {
147 const options = { 173 const options = {
148 url: `${this.ApiUrl}${url}`, 174 url: `${this.ApiUrl}${url}`,
149 qs: data.client_secret ? data : sign.apiSign(data), 175 qs: data.client_secret ? data : sign.apiSign(data),
@@ -153,19 +179,21 @@ class Http { @@ -153,19 +179,21 @@ class Http {
153 }; 179 };
154 180
155 // 从缓存获取数据 181 // 从缓存获取数据
156 - if (config.useCache && cacheOption) {  
157 - return this._requestFromCache(options); 182 + if (config.useCache && param && param.catch) {
  183 + return this._requestFromCache(options, false, param);
158 } 184 }
159 185
160 - return this._requestFromAPI(options, cacheOption); 186 + return this._requestFromAPI(options, param);
161 } 187 }
162 188
163 /** 189 /**
164 - * post  
165 - * @param url String  
166 - * @param data Obejct 190 + * 使用 post 请求获取接口
  191 + * @param {[string]} url
  192 + * @param {[object]} data
  193 + * @param {[object]} param 数据处理参数
  194 + * @return {[type]}
167 */ 195 */
168 - post(url, data) { 196 + post(url, data, param) {
169 const options = { 197 const options = {
170 url: `${this.ApiUrl}${url}`, 198 url: `${this.ApiUrl}${url}`,
171 form: data.client_secret ? data : sign.apiSign(data), 199 form: data.client_secret ? data : sign.apiSign(data),
@@ -174,7 +202,7 @@ class Http { @@ -174,7 +202,7 @@ class Http {
174 timeout: 3000 202 timeout: 3000
175 }; 203 };
176 204
177 - return this._requestFromAPI(options); 205 + return this._requestFromAPI(options, param);
178 } 206 }
179 207
180 all(list) { 208 all(list) {