'use strict'; const routerMethod = require('../../config/routerMethod'); const routerMondel = require('../../config/routerMondel'); const moment = require('moment'); module.exports = () => { return async function errorHandler(ctx, next) { let jsons = { }; const { url, method, body } = ctx.request; let mondel = ''; let methods = ''; // token const str = ctx.request.header.authorization; const token = str.substring(7); const decode = ctx.app.jwt.verify(token, ctx.app.config.secret); const date = moment().format('YYYY-MM-DD HH:mm:ss'); if (url.indexOf('power') === -1 && method !== 'GET') { const str = url.split('/'); for (let i = 0; i < str.length; i++) { const e = str[i]; if (e !== '' && e !== 'api') { if (e === 'create' || e === 'update' || e === 'delete' || e === 'upload') { methods = routerMethod[e]; if (e === 'delete') { break; } } else { mondel = routerMondel[e]; } } } jsons = { mondel, method: methods, data: body }; } try { if (method !== 'GET' && url.indexOf('power') === -1) { jsons.result = '成功'; jsons.userName = decode.userName; jsons.acct = decode.acct; jsons.date = date; await ctx.service.log.create(jsons); } await next(); } catch (err) { if (method !== 'GET' && url.indexOf('power') === -1) { jsons.result = '失败'; jsons.userName = decode.userName; jsons.acct = decode.acct; jsons.date = date; await ctx.service.log.create(jsons); } const { message } = err; let json = { errcode: -1001, errmsg: message, }; if (err.code !== 'ERR_ASSERTION') { json = JSON.parse(message); } ctx.body = json; ctx.status = 400; } }; };