error_handler.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. 'use strict';
  2. const routerMethod = require('../../config/routerMethod');
  3. const routerMondel = require('../../config/routerMondel');
  4. const moment = require('moment');
  5. module.exports = () => {
  6. return async function errorHandler(ctx, next) {
  7. let jsons = { };
  8. const { url, method, body } = ctx.request;
  9. let mondel = '';
  10. let methods = '';
  11. // token
  12. const str = ctx.request.header.authorization;
  13. const token = str.substring(7);
  14. const decode = ctx.app.jwt.verify(token, ctx.app.config.secret);
  15. const date = moment().format('YYYY-MM-DD HH:mm:ss');
  16. if (url.indexOf('power') === -1 && method !== 'GET') {
  17. const str = url.split('/');
  18. for (let i = 0; i < str.length; i++) {
  19. const e = str[i];
  20. if (e !== '' && e !== 'api') {
  21. if (e === 'create' || e === 'update' || e === 'delete' || e === 'upload') {
  22. methods = routerMethod[e];
  23. if (e === 'delete') {
  24. break;
  25. }
  26. } else {
  27. mondel = routerMondel[e];
  28. }
  29. }
  30. }
  31. jsons = { mondel, method: methods, data: body };
  32. }
  33. try {
  34. if (method !== 'GET' && url.indexOf('power') === -1) {
  35. jsons.result = '成功';
  36. jsons.userName = decode.userName;
  37. jsons.acct = decode.acct;
  38. jsons.date = date;
  39. await ctx.service.log.create(jsons);
  40. }
  41. await next();
  42. } catch (err) {
  43. if (method !== 'GET' && url.indexOf('power') === -1) {
  44. jsons.result = '失败';
  45. jsons.userName = decode.userName;
  46. jsons.acct = decode.acct;
  47. jsons.date = date;
  48. await ctx.service.log.create(jsons);
  49. }
  50. const { message } = err;
  51. let json = {
  52. errcode: -1001,
  53. errmsg: message,
  54. };
  55. if (err.code !== 'ERR_ASSERTION') {
  56. json = JSON.parse(message);
  57. }
  58. ctx.body = json;
  59. ctx.status = 400;
  60. }
  61. };
  62. };