const serviceApi = global.yoho.ServiceAPI; const ufoAPI = global.yoho.UfoAPI; const logger = global.yoho.logger; const checkParams = require('../../utils/check-params'); const apiMaps = require('../../config/api-map'); module.exports = async(req, res, next) => { const apiInfo = apiMaps[req.path]; if (!apiInfo) { return next(); } let baseParams; if (!apiInfo.service) { baseParams = { uid: (req.user && req.user.uid) ? { toString: () => { return req.user.uid || 0; }, sessionKey: req.user.sessionKey, appSessionType: req.user.appSessionType } : 0, method: apiInfo.api }; } try { const reqParams = Object.assign({}, req.query, req.body, baseParams); const params = checkParams.getParams(reqParams, apiInfo); const cache = req.method.toLowerCase() !== 'get' ? false : apiInfo.cache; let method = req.method.toLowerCase() === 'post' ? 'post' : 'get'; let result; let apiCtx = req.ctx(global.yoho.BaseModel); if (apiInfo.service) { result = await apiCtx.get({ api: serviceApi, url: apiInfo.api, data: params, param: { cache: cache, } }); } else if (apiInfo.ufo) { result = await apiCtx[method]({ api: ufoAPI, url: apiInfo.path || '', data: params, param: { cache: cache } }); } else { result = await apiCtx[method]({ data: params, url: apiInfo.path || '', param: { cache: cache } }); } if (result) { return res.json(result); } return res.json({ code: 400 }); } catch (error) { logger.error(error); return res.json({ code: error.code || 500, message: error.message || '服务器错误' }); } };