From b8ac23dcfd8a7f751b4a4f89f999d02ac36d50b5 Mon Sep 17 00:00:00 2001 From: aixianling Date: Fri, 30 Dec 2022 16:03:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E7=AB=AF=E6=90=AD=E5=BB=BA=E8=B5=B7?= =?UTF-8?q?=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/app.js | 11 +++---- server/app/controller/custom.js | 12 ++++++++ server/app/controller/home.js | 9 ------ server/app/middleware/errorHandler.js | 19 ++++++++++++ server/app/router.js | 11 +++++-- server/app/service/db.js | 15 +++++++--- server/config/config.default.js | 43 ++++++++++++++++----------- server/package.json | 3 +- 8 files changed, 85 insertions(+), 38 deletions(-) create mode 100644 server/app/controller/custom.js delete mode 100644 server/app/controller/home.js create mode 100644 server/app/middleware/errorHandler.js diff --git a/server/app.js b/server/app.js index 04300ea..8c9be3a 100644 --- a/server/app.js +++ b/server/app.js @@ -1,6 +1,7 @@ -module.exports = app => { - app.beforeStart(async () => { - const mysqlConfig = await app.configCenter.fetch("mysql") - app.database = app.mysql.createInstance(mysqlConfig) - }) +module.exports = () => { + // app.beforeStart(async () => { + // console.log(app.config) + // const mysqlConfig = await app.configCenter.fetch("mysql") + // app.database = app.mysql.createInstance(mysqlConfig) + // }) } diff --git a/server/app/controller/custom.js b/server/app/controller/custom.js new file mode 100644 index 0000000..5c8e7f7 --- /dev/null +++ b/server/app/controller/custom.js @@ -0,0 +1,12 @@ +const Controller = require("egg").Controller + +class Custom extends Controller { + async list() { + const {ctx: {query}} = this + const result = await this.service.db.list("node_custom_config", query) + this.ctx.status = 200 + this.ctx.body = result + } +} + +module.exports = Custom diff --git a/server/app/controller/home.js b/server/app/controller/home.js deleted file mode 100644 index 812cb90..0000000 --- a/server/app/controller/home.js +++ /dev/null @@ -1,9 +0,0 @@ -const Controller = require('egg').Controller; - -class HomeController extends Controller { - async index() { - this.ctx.body = 'Hello world'; - } -} - -module.exports = HomeController; diff --git a/server/app/middleware/errorHandler.js b/server/app/middleware/errorHandler.js new file mode 100644 index 0000000..0bacc2e --- /dev/null +++ b/server/app/middleware/errorHandler.js @@ -0,0 +1,19 @@ +module.exports = () => async function errorHandler(ctx, next) { + try { + await next(); + } catch (err) { + ctx.app.emit('error', err, ctx); + const status = err.status || 500; + // 生产环境时 500 错误的详细错误内容不返回给客户端,因为可能包含敏感信息 + const error = + status === 500 && ctx.app.config.env === 'prod' + ? 'Internal Server Error' + : err.message; + // 从 error 对象上读出各个属性,设置到响应中 + ctx.body = {error}; + if (status === 422) { + ctx.body.detail = err.errors; + } + ctx.status = status; + } +} diff --git a/server/app/router.js b/server/app/router.js index 33f41cf..474003b 100644 --- a/server/app/router.js +++ b/server/app/router.js @@ -1,4 +1,11 @@ module.exports = (app) => { - const { router, controller } = app; - router.get('/', controller.home.index); + const {router, controller} = app; + console.log('启动接口...') + for (const file in controller) { + for (const item in controller[file]) { + console.log(`初始化接口:/${file}/${item}`) + router.post(`/api/${file}/${item}`, controller[file][item]) + } + } + console.log("接口初始化完毕") }; diff --git a/server/app/service/db.js b/server/app/service/db.js index 87f1ddf..f1f83b5 100644 --- a/server/app/service/db.js +++ b/server/app/service/db.js @@ -1,30 +1,37 @@ const Service = require("egg").Service +const {v4: uuid} = require("uuid"); class DbService extends Service { async addOrUpdate(table, form) { let result if (!form.id) {//创建 + form.id = uuid() result = await this.app.mysql.insert(table, form) } else {//更新 result = await this.app.mysql.update(table, form) } - return result === 1 + return result === 1 ? {code: 0, data: form.id} : {code: 1, data: null} } async delete(table, id) { await this.app.mysql.delete(table, {id}) + return {code: 0, data: null} } async detail(table, id) { - return await this.app.mysql.get(table, {id}) + const data = await this.app.mysql.get(table, {id}) + return {code: 0, data} } async list(table, params = {}) { - return await this.app.mysql.select(table, { + let {current = 0} = params + const records = await this.app.mysql.select(table, { where: params, limit: params?.size || 10, // 返回数据量 - offset: Math.max(params?.current - 1, 0), // 数据偏移量 + offset: Math.max(--current, 0), // 数据偏移量 }) + const total = (await this.app.mysql.select(table, {where: params}))?.length || 0 + return {code: 0, data: {records, total}} } } diff --git a/server/config/config.default.js b/server/config/config.default.js index 0fafc20..59c1f34 100644 --- a/server/config/config.default.js +++ b/server/config/config.default.js @@ -1,19 +1,28 @@ -exports.keys = "kubbo and flora" -exports.mysql = { - client: { - // host - host: '192.168.1.87', - // 端口号 - port: '3306', - // 用户名 - user: 'root', - // 密码 - password: 'Cwy@2019', - // 数据库名 - database: 'dvcp_oms_dev', +module.exports = { + keys: "kubbo&flora", + middleware: ['errorHandler'], + errorHandler: {match: '/api'}, + mysql: { + client: { + // host + host: '192.168.1.87', + // 端口号 + port: '3306', + // 用户名 + user: 'root', + // 密码 + password: 'Cwy@2019', + // 数据库名 + database: 'dvcp_oms_dev', + }, + // 是否加载到 app 上,默认开启 + app: true, + // 是否加载到 agent 上,默认关闭 + agent: false, }, - // 是否加载到 app 上,默认开启 - app: true, - // 是否加载到 agent 上,默认关闭 - agent: false, + security: { + csrf: { + enable: false + } + } } diff --git a/server/package.json b/server/package.json index d0f77f9..5942604 100644 --- a/server/package.json +++ b/server/package.json @@ -13,7 +13,8 @@ "license": "ISC", "dependencies": { "egg": "^3.9.2", - "egg-mysql": "^3.3.0" + "egg-mysql": "^3.3.0", + "uuid": "^9.0.0" }, "devDependencies": { "egg-bin": "^5.9.0"