ソースを参照

修改统一错误处理 文件路径配置

asd123a20 3 年 前
コミット
80aa5f1ac8

+ 9 - 56
app/middleware/error_handler.js

@@ -1,72 +1,25 @@
 '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 };
-    }
+    const { method } = ctx.request;
     try {
+      await next();
       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 res = await ctx.service.log.init();
+        res.result = '成功';
+        await ctx.service.log.create(res);
       }
-      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 res = await ctx.service.log.init();
+        res.result = '失败';
+        await ctx.service.log.create(res);
       }
       const { message } = err;
-      let json = {
+      const json = {
         errcode: -1001,
         errmsg: message,
       };
-      if (err.code !== 'ERR_ASSERTION') {
-        json = JSON.parse(message);
-      }
       ctx.body = json;
       ctx.status = 400;
     }

+ 0 - 1
app/middleware/jwt.js

@@ -9,7 +9,6 @@ module.exports = options => {
         // 解码token
         decode = ctx.app.jwt.verify(token, options.secret);
       } catch (error) {
-        console.log(error, 11111);
         ctx.status = 401;
         ctx.body = {
           errmsg: error.message,

+ 5 - 5
app/service/adminUser.js

@@ -21,7 +21,7 @@ class adminUserService extends Service {
       return { errmsg: '', errcode: 0, res };
     } catch (error) {
       console.log(error);
-      throw new Error({ errcode: -2001, errmsg: '添加失败' });
+      throw new Error('添加失败');
     }
   }
   async update({ userName, phone, _id, roleList, state }) {
@@ -32,7 +32,7 @@ class adminUserService extends Service {
       return { errmsg: '', errcode: 0 };
     } catch (error) {
       console.log(error);
-      throw new Error({ errcode: -2001, errmsg: '修改失败' });
+      throw new Error('修改失败');
     }
   }
   async pwdUpdate({ password, _id, confirmPwd }) {
@@ -50,7 +50,7 @@ class adminUserService extends Service {
       await model.findByIdAndUpdate(_id, { password: pwd });
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '修改失败' });
+      throw new Error('修改失败');
     }
   }
   async del({ id }) {
@@ -60,7 +60,7 @@ class adminUserService extends Service {
       await model.findById(id).remove();
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '删除失败' });
+      throw new Error('删除失败');
     }
   }
   async query({ skip, limit, userName, state, acct }) {
@@ -79,7 +79,7 @@ class adminUserService extends Service {
       }
       return { errmsg: '', errcode: 0, data: res, total: total.length };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '查询失败' });
+      throw new Error('查询失败');
     }
   }
 }

+ 1 - 1
app/service/banner.js

@@ -68,7 +68,7 @@ class BannerService extends Service {
       }
       return { errmsg: '', errcode: 0, data: res, total: total.length };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '查询失败' });
+      throw new Error('查询失败');
     }
   }
 }

+ 3 - 3
app/service/configuration.js

@@ -11,7 +11,7 @@ class ConfigurationService extends Service {
       await model.create({ name, describe, company, phone, address, mail, postcode, record, createAt, path });
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '添加失败' });
+      throw new Error('添加失败');
     }
   }
   async update({ name, describe, company, phone, address, mail, postcode, record, _id, path }) {
@@ -21,7 +21,7 @@ class ConfigurationService extends Service {
       await model.findById(_id).update({ name, describe, company, phone, address, mail, postcode, record, path });
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '修改失败' });
+      throw new Error('修改失败');
     }
   }
   async query() {
@@ -30,7 +30,7 @@ class ConfigurationService extends Service {
       const res = await model.find();
       return { errmsg: '', errcode: 0, data: res[0] };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '查询失败' });
+      throw new Error('查询失败');
     }
   }
 }

+ 6 - 6
app/service/content.js

@@ -18,7 +18,7 @@ class ContentService extends Service {
       await model.create({ title, slug, thumbnail, annex, content, istop, menus, createAt, year, date, annexname, term, hits: 0 });
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '添加失败' });
+      throw new Error('添加失败');
     }
   }
   async update({ title, thumbnail, annex, content, istop, menus, date, annexname, term, _id }) {
@@ -32,7 +32,7 @@ class ContentService extends Service {
       await model.findById(_id).update({ title, slug, thumbnail, annex, content, istop, menus, year, date, annexname, term });
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '修改失败' });
+      throw new Error('修改失败');
     }
   }
   async del({ id }) {
@@ -42,7 +42,7 @@ class ContentService extends Service {
       await model.findById(id).remove();
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '删除失败' });
+      throw new Error('删除失败');
     }
   }
   async details({ id }) {
@@ -57,7 +57,7 @@ class ContentService extends Service {
       }
       return { errmsg: '', errcode: 0, data: res };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '删除失败' });
+      throw new Error('删除失败');
     }
   }
   async query({ skip, limit, title, code }) {
@@ -78,7 +78,7 @@ class ContentService extends Service {
       }
       return { errmsg: '', errcode: 0, data: res, total: total.length };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '查询失败' });
+      throw new Error('查询失败');
     }
   }
   // 数据库添加过滤数据方法
@@ -94,7 +94,7 @@ class ContentService extends Service {
       }
       return { errmsg: '', errcode: 0, res };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '删除失败' });
+      throw new Error('删除失败');
     }
   }
 }

+ 10 - 10
app/service/files.js

@@ -18,7 +18,7 @@ class FilesService extends Service {
       await model.create({ name, path, type, createAt });
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '添加失败' });
+      throw new Error('添加失败');
     }
   }
   async update({ name, path, id }) {
@@ -28,7 +28,7 @@ class FilesService extends Service {
       await model.findById(id).update({ name, path });
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '修改失败' });
+      throw new Error('修改失败');
     }
   }
   async del({ id }) {
@@ -43,7 +43,7 @@ class FilesService extends Service {
       await model.findById(id).remove();
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '删除失败' });
+      throw new Error('删除失败');
     }
   }
   async query({ skip, limit, type, name }) {
@@ -62,7 +62,7 @@ class FilesService extends Service {
       }
       return { errmsg: '', errcode: 0, data: res, total: total.length };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '查询失败' });
+      throw new Error('查询失败');
     }
   }
   async upload() {
@@ -74,11 +74,11 @@ class FilesService extends Service {
       const index = filename.indexOf('.');
       const fileType = filename.slice(index, filename.length);
       const uuid = uuidv1();
-      const filepath = `/filespath/${type === 'files' ? 'files' : 'resource'}/${uuid}${fileType}`;
-      const paths = path.join(`${this.app.config.filespath}${filepath}`);
+      // const filepath = `/filespath/${type === 'files' ? 'files' : 'resource'}/${uuid}${fileType}`;
+      // const paths = path.join(`${this.app.config.filespath}${filepath}`);
 
-      // const filepath = `/public/${type === 'files' ? 'files' : 'resource'}/${uuid}${fileType}`;
-      // const paths = path.join(this.app.baseDir, `/app${filepath}`);
+      const filepath = `/public/${type === 'files' ? 'files' : 'resource'}/${uuid}${fileType}`;
+      const paths = path.join(this.app.baseDir, `/app${filepath}`);
       // 存储
       const result = await new Promise((resolve, reject) => {
         const remoteFileStream = fs.createWriteStream(paths);
@@ -97,12 +97,12 @@ class FilesService extends Service {
         });
       });
       if (!result) {
-        throw new Error({ errcode: -2001, errmsg: '上传失败' });
+        throw new Error('上传失败');
       }
       await this.ctx.service.files.create({ name: filename, path: filepath, type });
       return { errmsg: '', errcode: 0, data: { name: filename, path: filepath } };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '上传失败' });
+      throw new Error('上传失败');
     }
   }
 }

+ 4 - 5
app/service/link.js

@@ -14,8 +14,7 @@ class LinkService extends Service {
       await model.create({ name, path, links, createAt });
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      console.log(error);
-      throw new Error({ errcode: -2001, errmsg: '添加失败' });
+      throw new Error('添加失败');
     }
   }
   async update({ name, path, _id, links }) {
@@ -25,7 +24,7 @@ class LinkService extends Service {
       await model.findById(_id).update({ name, path, links });
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '修改失败' });
+      throw new Error('修改失败');
     }
   }
   async del({ id }) {
@@ -35,7 +34,7 @@ class LinkService extends Service {
       await model.findById(id).remove();
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '删除失败' });
+      throw new Error('删除失败');
     }
   }
   async query({ skip, limit, name }) {
@@ -52,7 +51,7 @@ class LinkService extends Service {
       }
       return { errmsg: '', errcode: 0, data: res, total: total.length };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '查询失败' });
+      throw new Error('查询失败');
     }
   }
 }

+ 41 - 3
app/service/log.js

@@ -3,6 +3,8 @@
 const Service = require('egg').Service;
 const assert = require('assert');
 const moment = require('moment');
+const routerMethod = require('../../config/routerMethod');
+const routerMondel = require('../../config/routerMondel');
 class LogService extends Service {
   async create({ mondel, method, data, result, userName, acct, date }) {
     assert(mondel, '模块不存在');
@@ -18,7 +20,7 @@ class LogService extends Service {
       await model.create({ data, method, createAt, mondel, result, userName, acct, date });
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '添加失败' });
+      throw new Error('添加失败');
     }
   }
   async del({ id }) {
@@ -28,7 +30,7 @@ class LogService extends Service {
       await model.findById(id).remove();
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '删除失败' });
+      throw new Error('删除失败');
     }
   }
   async query({ skip, limit, mondel, method, result }) {
@@ -48,7 +50,43 @@ class LogService extends Service {
       return { errmsg: '', errcode: 0, data: res, total: total.length };
     } catch (error) {
       console.log(error);
-      throw new Error({ errcode: -2001, errmsg: '查询失败' });
+      throw new Error('查询失败');
+    }
+  }
+  async init() {
+    const { ctx } = this;
+    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];
+          }
+        }
+      }
+      return { mondel, method: methods, data: body, acct: decode.acct, userName: decode.userName, date };
     }
   }
 }

+ 4 - 4
app/service/menu.js

@@ -19,7 +19,7 @@ class MenuService extends Service {
       await model.create({ name, code, createAt, state, type, uri, en, sort: Number(sort), pages });
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '添加失败' });
+      throw new Error('添加失败');
     }
   }
   async update({ name, state, _id, uri, en, sort, pages }) {
@@ -29,7 +29,7 @@ class MenuService extends Service {
       await model.findById(_id).update({ name, state, uri, en, sort: Number(sort), pages });
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '修改失败' });
+      throw new Error('修改失败');
     }
   }
   async del({ id }) {
@@ -63,7 +63,7 @@ class MenuService extends Service {
       await model.findById(id).remove();
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '删除失败' });
+      throw new Error('删除失败');
     }
   }
   // 新增排序
@@ -84,7 +84,7 @@ class MenuService extends Service {
       }
       return { errmsg: '', errcode: 0, data: res, total: total.length };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '查询失败' });
+      throw new Error('查询失败');
     }
   }
 }

+ 6 - 6
app/service/page.js

@@ -17,7 +17,7 @@ class PageService extends Service {
       await model.create({ title, slug, date, annex, content, istop, createAt, annexname });
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '添加失败' });
+      throw new Error('添加失败');
     }
   }
   async update({ title, annex, content, istop, _id, annexname, date }) {
@@ -30,7 +30,7 @@ class PageService extends Service {
       await model.findById(_id).update({ title, date, slug, annex, content, istop, annexname });
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '修改失败' });
+      throw new Error('修改失败');
     }
   }
   async del({ id }) {
@@ -46,7 +46,7 @@ class PageService extends Service {
       await model.findById(id).remove();
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '删除失败' });
+      throw new Error('删除失败');
     }
   }
   async details({ id }) {
@@ -56,7 +56,7 @@ class PageService extends Service {
       const res = await model.findById(id);
       return { errmsg: '', errcode: 0, data: res };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '删除失败' });
+      throw new Error('删除失败');
     }
   }
   async detailscode({ code }) {
@@ -66,7 +66,7 @@ class PageService extends Service {
       const res = await model.find({ menu: code });
       return { errmsg: '', errcode: 0, data: res };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '删除失败' });
+      throw new Error('删除失败');
     }
   }
   async query({ skip, limit, title }) {
@@ -83,7 +83,7 @@ class PageService extends Service {
       }
       return { errmsg: '', errcode: 0, data: res, total: total.length };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '查询失败' });
+      throw new Error('查询失败');
     }
   }
 }

+ 2 - 3
app/service/power.js

@@ -26,8 +26,7 @@ class UserService extends Service {
       const token = this.app.jwt.sign({ acct: userInfo.acct, userName: userInfo.userName, id: userInfo._id }, this.app.config.jwt.secret);
       return { errmsg: '', errcode: 0, token, userInfo: { acct: userInfo.acct, userName: userInfo.userName, id: userInfo._id } };
     } catch (error) {
-      console.log(error);
-      throw new Error({ errcode: -2001, errmsg: '登录失败' });
+      throw new Error('登录失败');
     }
   }
   async getUserMenu() {
@@ -59,7 +58,7 @@ class UserService extends Service {
 
       return { errcode: 0, errmsg: '', data: menulist };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '登录失败' });
+      throw new Error('登录失败');
     }
   }
 }

+ 4 - 5
app/service/role.js

@@ -18,7 +18,7 @@ class RoleService extends Service {
       await model.create({ name, code, createAt, state });
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '添加失败' });
+      throw new Error('添加失败');
     }
   }
   async update({ name, state, _id, adminMenuList }) {
@@ -28,7 +28,7 @@ class RoleService extends Service {
       await model.findById(_id).update({ name, state, adminMenuList });
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '修改失败' });
+      throw new Error('修改失败');
     }
   }
   async del({ id }) {
@@ -48,7 +48,7 @@ class RoleService extends Service {
       await model.findById(id).remove();
       return { errmsg: '', errcode: 0 };
     } catch (error) {
-      throw new Error({ errcode: -2001, errmsg: '删除失败' });
+      throw new Error('删除失败');
     }
   }
   async query({ skip, limit, name, code, state }) {
@@ -67,8 +67,7 @@ class RoleService extends Service {
       }
       return { errmsg: '', errcode: 0, data: res, total: total.length };
     } catch (error) {
-      console.log(error);
-      throw new Error({ errcode: -2001, errmsg: '查询失败' });
+      throw new Error('查询失败');
     }
   }
 }

+ 19 - 12
config/config.default.js

@@ -48,23 +48,30 @@ module.exports = appInfo => {
     secret: '123456',
   };
   config.userSecret = '123456';
-  config.filespath = '/home/cms';
+  config.filespath = '/user/local/jjzh';
   // 数据库配置
+  // config.mongoose = {
+  //   url: 'mongodb://172.17.116.7:27018/cms',
+  //   options: {
+  //     user: 'root',
+  //     pass: 'cms@cc-lotus',
+  //     authSource: 'admin',
+  //     useNewUrlParser: true,
+  //     useCreateIndex: true,
+  //     useUnifiedTopology: true,
+  //   },
+  // };
   config.mongoose = {
-    url: 'mongodb://172.17.116.7:27018/cms',
+    url: 'mongodb://127.0.0.1:27017/example',
     options: {
-      user: 'root',
-      pass: 'cms@cc-lotus',
-      authSource: 'admin',
-      useNewUrlParser: true,
-      useCreateIndex: true,
-      useUnifiedTopology: true,
+      // user: 'root',
+      // pass: 'cms@cc-lotus',
+      // authSource: 'admin',
+      // useNewUrlParser: true,
+      // useCreateIndex: true,
+      // useUnifiedTopology: true,
     },
   };
-  // config.mongoose = {
-  //   url: 'mongodb://127.0.0.1:27017/example',
-  //   options: {},
-  // };
   // 异常捕获 路由拦截
   config.middleware = [ 'errorHandler' ];
   config.errorHandler = {

+ 17 - 0
ecosystem.config.js

@@ -0,0 +1,17 @@
+'use strict';
+
+const app = 'skyserve';
+module.exports = {
+  apps: [{
+    name: app, // 应用名称
+    script: './server.js', // 实际启动脚本
+    out: `./logs/${app}.log`,
+    error: `./logs/${app}.err`,
+    watch: [ // 监控变化的目录,一旦变化,自动重启
+      'app', 'config',
+    ],
+    env: {
+      NODE_ENV: 'production', // 环境参数,当前指定为生产环境
+    },
+  }],
+};