'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 = ''; let decode = {}; const { AdminUser: model } = ctx.model; const date = moment().format('YYYY-MM-DD HH:mm:ss'); if (method !== 'GET') { // token const tokenstr = ctx.request.header.authorization; if (tokenstr) { const token = tokenstr.substring(7); decode = ctx.app.jwt.verify(token, ctx.app.config.secret); } else { const { acct } = ctx.request.body; const res = await model.find({ acct }); decode = res[0]; } 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' || e === 'login') { methods = routerMethod[e]; if (e === 'delete') { break; } } else { mondel = routerMondel[e]; } } } jsons = { mondel, method: methods, data: body }; } try { if (method !== 'GET') { jsons.result = '成功'; if (decode) { jsons.userName = decode.userName; jsons.acct = decode.acct; } jsons.date = date; await ctx.service.log.create(jsons); } await next(); } catch (err) { if (method !== 'GET') { jsons.result = '失败'; if (decode) { 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; } }; };