update errorManager
This commit is contained in:
parent
2da1836d44
commit
9423428b72
@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"port": 3000,
|
||||||
"db": {
|
"db": {
|
||||||
"mysql": {
|
"mysql": {
|
||||||
"user": "root",
|
"user": "root",
|
||||||
|
@ -0,0 +1,35 @@
|
|||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
class errorManager {
|
||||||
|
constructor(){
|
||||||
|
this.errs = {};
|
||||||
|
this.defLang = 'zh';
|
||||||
|
let err = require(`./language/zh`);
|
||||||
|
this.errs['zh'] = err;
|
||||||
|
}
|
||||||
|
|
||||||
|
getMsg(code, lang = ''){
|
||||||
|
let lng = this.defLang;
|
||||||
|
if(typeof lang == 'string' && lang.trim().length > 0) {
|
||||||
|
let l = lang.split(',');
|
||||||
|
if(l.length > 0){
|
||||||
|
let tmp = l[0].substring(0, 2);
|
||||||
|
if(tmp.trim().length > 0) lng = tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!(lng in this.errs)){
|
||||||
|
try{
|
||||||
|
let errs = require(`./language/${lng}`);
|
||||||
|
this.errs[lng] = errs;
|
||||||
|
}catch(err){
|
||||||
|
lng = this.defLang;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.errs[lng][code] || 'errorCode not found';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = new errorManager();
|
@ -0,0 +1,13 @@
|
|||||||
|
module.exports = {
|
||||||
|
// client error
|
||||||
|
CE0000: '請輸入參數',
|
||||||
|
CE0001: '請輸入帳號',
|
||||||
|
CE0002: '請輸入密碼',
|
||||||
|
CE0003: '使用者帳號或密碼錯誤',
|
||||||
|
|
||||||
|
// server error
|
||||||
|
SE0000: '資料查詢失敗',
|
||||||
|
SE0001: '資料新增失敗',
|
||||||
|
SE0002: '資料更新失敗',
|
||||||
|
SE0003: '資料刪除失敗'
|
||||||
|
}
|
@ -6,12 +6,13 @@ const koaBody = require('koa-body');
|
|||||||
const mysql = require('../../libs/mysql_pool.js');
|
const mysql = require('../../libs/mysql_pool.js');
|
||||||
const so = require('../../libs/storeObject');
|
const so = require('../../libs/storeObject');
|
||||||
const config = require('../../config.json');
|
const config = require('../../config.json');
|
||||||
|
const errorMng = require('./errorManager');
|
||||||
|
|
||||||
// routes
|
// routes
|
||||||
const user_api = require('./user.js');
|
const user_api = require('./user.js');
|
||||||
|
|
||||||
// api response handler
|
// api response handler
|
||||||
router.use(async(c, n) => {
|
router.use(async (c, n) => {
|
||||||
c.db = await mysql.getConn();
|
c.db = await mysql.getConn();
|
||||||
c.syncQuery = (query, param = null) => {
|
c.syncQuery = (query, param = null) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
@ -28,26 +29,39 @@ router.use(async(c, n) => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// console.log(c.headers['accept-language'])
|
||||||
try {
|
try {
|
||||||
await n();
|
await n();
|
||||||
|
c.body = {
|
||||||
|
data: c.body,
|
||||||
|
status: 1
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e);
|
let msg = errorMng.getMsg(e, c.headers['accept-language']);
|
||||||
|
c.body = {
|
||||||
|
errorCode: e,
|
||||||
|
message: msg,
|
||||||
|
servErr: c.serr ? c.serr.toString() : '',
|
||||||
|
status: 0
|
||||||
|
}
|
||||||
|
if(e[0] == 'C' || e[0] == 'c') c.status = 400;
|
||||||
|
if(e[0] == 'S' || e[0] == 's') c.status = 500;
|
||||||
}
|
}
|
||||||
if ('db' in c && typeof c.db == 'object' && 'release' in c.db && typeof c.db.release == 'function') c.db.release();
|
if ('db' in c && typeof c.db == 'object' && 'release' in c.db && typeof c.db.release == 'function') c.db.release();
|
||||||
switch (typeof c.body) {
|
// switch (typeof c.body) {
|
||||||
case 'undefined':
|
// case 'undefined':
|
||||||
c.body = { errorCode: 'ERR9999', status: 0 };
|
// c.body = { errorCode: 'ERR9999', status: 0 };
|
||||||
break;
|
// break;
|
||||||
case 'string':
|
// case 'string':
|
||||||
c.body = { errorCode: c.body, status: 0 };
|
// c.body = { errorCode: c.body, status: 0 };
|
||||||
break;
|
// break;
|
||||||
default:
|
// default:
|
||||||
c.body = {
|
// c.body = {
|
||||||
data: c.body,
|
// data: c.body,
|
||||||
status: 1
|
// status: 1
|
||||||
}
|
// }
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@ -56,10 +70,10 @@ router.all('*', koaBody({
|
|||||||
multipart: true,
|
multipart: true,
|
||||||
// upload file size 10mb
|
// upload file size 10mb
|
||||||
maxFieldSize: 10 * 1024 * 1024
|
maxFieldSize: 10 * 1024 * 1024
|
||||||
}), async(c, n) => { await n(); })
|
}), async (c, n) => { await n(); })
|
||||||
|
|
||||||
router
|
router
|
||||||
.get('/', async(c, n) => {
|
.get('/', async (c, n) => {
|
||||||
c.body = {
|
c.body = {
|
||||||
msg: 'API Endpoint'
|
msg: 'API Endpoint'
|
||||||
};
|
};
|
||||||
|
@ -9,15 +9,15 @@ const mongo = require('../../libs/mongo_model.js');
|
|||||||
router
|
router
|
||||||
.post('/login', async(c, n) => {
|
.post('/login', async(c, n) => {
|
||||||
let arr = c.request.body;
|
let arr = c.request.body;
|
||||||
if (!arr.data) throw 'C_EDATA';
|
if (!arr.data) throw 'CE0000';
|
||||||
if (!arr.data.account) throw 'C_EACCOUNT';
|
if (!arr.data.account) throw 'CE0001';
|
||||||
if (!arr.data.password) throw 'C_EPASSWORD';
|
if (!arr.data.password) throw 'CE0002';
|
||||||
try {
|
try {
|
||||||
let user = await c.syncQuery('select `uid`,`account`,`password`,`name`,`email` from ??.?? where `account` = ?', ['lora', 'user', arr.data.account])
|
let user = await c.syncQuery('select `uid`,`account`,`password`,`name`,`email` from ??.?? where `account` = ?', ['lora', 'user', arr.data.account])
|
||||||
|
|
||||||
if (user.length == 0) throw 'user not exists';
|
if (user.length == 0) throw 'CE0003';
|
||||||
|
|
||||||
if (!crypto.comparePass(arr.data.password, user[0].password)) throw 'password not match';
|
if (!crypto.comparePass(arr.data.password, user[0].password)) throw 'CE0003';
|
||||||
|
|
||||||
delete user[0].password;
|
delete user[0].password;
|
||||||
|
|
||||||
@ -25,7 +25,9 @@ router
|
|||||||
record: user
|
record: user
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
throw 'DB Query Error';
|
if(typeof err == 'string') throw err;
|
||||||
|
c.serr = err;
|
||||||
|
throw 'SE0000';
|
||||||
}
|
}
|
||||||
|
|
||||||
let u = c.body.record[0];
|
let u = c.body.record[0];
|
||||||
|
Loading…
Reference in New Issue
Block a user