完成基本接口

main
expressgy 2 years ago
parent 1d7aa0e790
commit 475de2eebb
  1. 13
      Database/index.js
  2. 10
      app.js
  3. BIN
      fileStorage/16762068728143c6ccd311ca.jpg
  4. 1
      package.json
  5. 83
      pnpm-lock.yaml
  6. 87
      routes/container.js
  7. 36
      routes/fileStorage.js
  8. 22
      routes/menu.js

@ -0,0 +1,13 @@
const mysql = require('mysql2/promise');
async function initSQL() {
const connection = await mysql.createConnection({
host: 'localhost',
user: 'root',
database: 'rgvofficial',
password: 'root'
});
global.SQL = connection
}
module.exports = initSQL;

@ -9,6 +9,12 @@ const {koaBody} = require('koa-body')// 支持form-data,支持文件,不
const index = require('./routes/index') const index = require('./routes/index')
const users = require('./routes/users') const users = require('./routes/users')
const fileStorage = require('./routes/fileStorage') const fileStorage = require('./routes/fileStorage')
const menu = require('./routes/menu')
const container = require('./routes/container')
const initSQL = require('./Database/index');
initSQL()
// error handler // error handler
onerror(app) onerror(app)
@ -48,10 +54,14 @@ app.use(koaBody({
app.use(index.routes(), index.allowedMethods()) app.use(index.routes(), index.allowedMethods())
app.use(users.routes(), users.allowedMethods()) app.use(users.routes(), users.allowedMethods())
app.use(fileStorage.routes(), fileStorage.allowedMethods()) app.use(fileStorage.routes(), fileStorage.allowedMethods())
app.use(menu.routes(), menu.allowedMethods())
app.use(container.routes(), container.allowedMethods())
global.dirname = __dirname
// error-handling // error-handling
app.on('error', (err, ctx) => { app.on('error', (err, ctx) => {
console.error('server error', err, ctx) console.error('server error', err, ctx)
}); });
module.exports = app module.exports = app

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

@ -19,6 +19,7 @@
"koa-router": "^7.4.0", "koa-router": "^7.4.0",
"koa-static": "^5.0.0", "koa-static": "^5.0.0",
"koa-views": "^6.2.0", "koa-views": "^6.2.0",
"mysql2": "^3.1.2",
"pug": "^2.0.3" "pug": "^2.0.3"
}, },
"devDependencies": { "devDependencies": {

@ -11,6 +11,7 @@ specifiers:
koa-router: ^7.4.0 koa-router: ^7.4.0
koa-static: ^5.0.0 koa-static: ^5.0.0
koa-views: ^6.2.0 koa-views: ^6.2.0
mysql2: ^3.1.2
nodemon: ^1.19.1 nodemon: ^1.19.1
pug: ^2.0.3 pug: ^2.0.3
@ -25,6 +26,7 @@ dependencies:
koa-router: registry.npmmirror.com/koa-router/7.4.0 koa-router: registry.npmmirror.com/koa-router/7.4.0
koa-static: registry.npmmirror.com/koa-static/5.0.0 koa-static: registry.npmmirror.com/koa-static/5.0.0
koa-views: registry.npmmirror.com/koa-views/6.3.1_pug@2.0.4 koa-views: registry.npmmirror.com/koa-views/6.3.1_pug@2.0.4
mysql2: registry.npmmirror.com/mysql2/3.1.2
pug: registry.npmmirror.com/pug/2.0.4 pug: registry.npmmirror.com/pug/2.0.4
devDependencies: devDependencies:
@ -1109,6 +1111,13 @@ packages:
version: 1.0.0 version: 1.0.0
dev: false dev: false
registry.npmmirror.com/denque/2.1.0:
resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/denque/-/denque-2.1.0.tgz}
name: denque
version: 2.1.0
engines: {node: '>=0.10'}
dev: false
registry.npmmirror.com/depd/1.1.2: registry.npmmirror.com/depd/1.1.2:
resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz} resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz}
name: depd name: depd
@ -1354,6 +1363,14 @@ packages:
version: 1.1.1 version: 1.1.1
dev: false dev: false
registry.npmmirror.com/generate-function/2.3.1:
resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/generate-function/-/generate-function-2.3.1.tgz}
name: generate-function
version: 2.3.1
dependencies:
is-property: registry.npmmirror.com/is-property/1.0.2
dev: false
registry.npmmirror.com/get-intrinsic/1.2.0: registry.npmmirror.com/get-intrinsic/1.2.0:
resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz} resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz}
name: get-intrinsic name: get-intrinsic
@ -1585,6 +1602,15 @@ packages:
safer-buffer: registry.npmmirror.com/safer-buffer/2.1.2 safer-buffer: registry.npmmirror.com/safer-buffer/2.1.2
dev: false dev: false
registry.npmmirror.com/iconv-lite/0.6.3:
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz}
name: iconv-lite
version: 0.6.3
engines: {node: '>=0.10.0'}
dependencies:
safer-buffer: registry.npmmirror.com/safer-buffer/2.1.2
dev: false
registry.npmmirror.com/ignore-by-default/1.0.1: registry.npmmirror.com/ignore-by-default/1.0.1:
resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz} resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz}
name: ignore-by-default name: ignore-by-default
@ -1848,6 +1874,12 @@ packages:
version: 2.2.2 version: 2.2.2
dev: false dev: false
registry.npmmirror.com/is-property/1.0.2:
resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-property/-/is-property-1.0.2.tgz}
name: is-property
version: 1.0.2
dev: false
registry.npmmirror.com/is-redirect/1.0.0: registry.npmmirror.com/is-redirect/1.0.0:
resolution: {integrity: sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-redirect/-/is-redirect-1.0.0.tgz} resolution: {integrity: sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-redirect/-/is-redirect-1.0.0.tgz}
name: is-redirect name: is-redirect
@ -2249,6 +2281,12 @@ packages:
version: 4.17.21 version: 4.17.21
dev: false dev: false
registry.npmmirror.com/long/5.2.1:
resolution: {integrity: sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/long/-/long-5.2.1.tgz}
name: long
version: 5.2.1
dev: false
registry.npmmirror.com/longest/1.0.1: registry.npmmirror.com/longest/1.0.1:
resolution: {integrity: sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/longest/-/longest-1.0.1.tgz} resolution: {integrity: sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/longest/-/longest-1.0.1.tgz}
name: longest name: longest
@ -2271,6 +2309,13 @@ packages:
pseudomap: registry.npmmirror.com/pseudomap/1.0.2 pseudomap: registry.npmmirror.com/pseudomap/1.0.2
yallist: registry.npmmirror.com/yallist/2.1.2 yallist: registry.npmmirror.com/yallist/2.1.2
registry.npmmirror.com/lru-cache/7.14.1:
resolution: {integrity: sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/lru-cache/-/lru-cache-7.14.1.tgz}
name: lru-cache
version: 7.14.1
engines: {node: '>=12'}
dev: false
registry.npmmirror.com/make-dir/1.3.0: registry.npmmirror.com/make-dir/1.3.0:
resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/make-dir/-/make-dir-1.3.0.tgz} resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/make-dir/-/make-dir-1.3.0.tgz}
name: make-dir name: make-dir
@ -2400,6 +2445,22 @@ packages:
name: ms name: ms
version: 2.1.3 version: 2.1.3
registry.npmmirror.com/mysql2/3.1.2:
resolution: {integrity: sha512-NXz6sUvHSEOKz1jv3koSga7eb2dHrwD/mnPmqbbZzMRvjQcSpb0Eh0ectWyYt1U60CLlEbjoA3XYjjbbReRF5Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mysql2/-/mysql2-3.1.2.tgz}
name: mysql2
version: 3.1.2
engines: {node: '>= 8.0'}
dependencies:
denque: registry.npmmirror.com/denque/2.1.0
generate-function: registry.npmmirror.com/generate-function/2.3.1
iconv-lite: registry.npmmirror.com/iconv-lite/0.6.3
long: registry.npmmirror.com/long/5.2.1
lru-cache: registry.npmmirror.com/lru-cache/7.14.1
named-placeholders: registry.npmmirror.com/named-placeholders/1.1.3
seq-queue: registry.npmmirror.com/seq-queue/0.0.5
sqlstring: registry.npmmirror.com/sqlstring/2.3.3
dev: false
registry.npmmirror.com/mz/2.7.0: registry.npmmirror.com/mz/2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz} resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz}
name: mz name: mz
@ -2410,6 +2471,15 @@ packages:
thenify-all: registry.npmmirror.com/thenify-all/1.6.0 thenify-all: registry.npmmirror.com/thenify-all/1.6.0
dev: false dev: false
registry.npmmirror.com/named-placeholders/1.1.3:
resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/named-placeholders/-/named-placeholders-1.1.3.tgz}
name: named-placeholders
version: 1.1.3
engines: {node: '>=12.0.0'}
dependencies:
lru-cache: registry.npmmirror.com/lru-cache/7.14.1
dev: false
registry.npmmirror.com/nan/2.17.0: registry.npmmirror.com/nan/2.17.0:
resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nan/-/nan-2.17.0.tgz} resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nan/-/nan-2.17.0.tgz}
name: nan name: nan
@ -3036,6 +3106,12 @@ packages:
version: 5.7.1 version: 5.7.1
hasBin: true hasBin: true
registry.npmmirror.com/seq-queue/0.0.5:
resolution: {integrity: sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/seq-queue/-/seq-queue-0.0.5.tgz}
name: seq-queue
version: 0.0.5
dev: false
registry.npmmirror.com/set-value/2.0.1: registry.npmmirror.com/set-value/2.0.1:
resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz} resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz}
name: set-value name: set-value
@ -3179,6 +3255,13 @@ packages:
extend-shallow: registry.npmmirror.com/extend-shallow/3.0.2 extend-shallow: registry.npmmirror.com/extend-shallow/3.0.2
dev: true dev: true
registry.npmmirror.com/sqlstring/2.3.3:
resolution: {integrity: sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/sqlstring/-/sqlstring-2.3.3.tgz}
name: sqlstring
version: 2.3.3
engines: {node: '>= 0.6'}
dev: false
registry.npmmirror.com/static-extend/0.1.2: registry.npmmirror.com/static-extend/0.1.2:
resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz} resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz}
name: static-extend name: static-extend

@ -0,0 +1,87 @@
const router = require('koa-router')()
// 全局路由
router.prefix('/container')
router.get('/', async (ctx, next) => {
const arg = ctx.request.query
if (!Object.keys(arg).includes('menuId')) {
ctx.body = {
data: {},
state: false,
message: '缺少MenuId'
}
return
}
const [rows, fields] = await global.SQL.execute('SELECT * FROM `container` WHERE `isdelete` = 0 AND `menuId` = ?', [arg.menuId]);
ctx.body = {
data: rows,
state: true,
message: '获取内容成功'
}
})
router.delete('/', async (ctx, next) => {
const arg = ctx.request.query
console.log(arg)
if (!Object.keys(arg).includes('id')) {
ctx.body = {
data: {},
state: false,
message: '缺少id'
}
return
}
const [rows, fields] = await global.SQL.execute('UPDATE container SET isdelete = 1 WHERE `id` = ?', [arg.id]);
ctx.body = {
data: rows,
state: true,
message: '删除内容成功'
}
})
router.put('/', async (ctx, next) => {
const arg = ctx.request.body
const field = ['id', 'name', 'rank', 'config', 'body']
const noField = []
field.map(item => {
if (!Object.keys(arg).includes(item)) noField.push(item)
})
if (noField.length != 0) {
ctx.body = {
data: {},
state: false,
message: '缺少' + noField
}
return
}
const [rows, fields] = await global.SQL.execute('UPDATE container SET name = ? , rank = ? , config = ? , body = ? WHERE id = ?', [arg.name, arg.rank, arg.config, arg.body, Number(arg.id)]);
ctx.body = ctx.body = {
data: rows,
state: true,
message: '更新成功'
}
})
router.post('/createContainer', async (ctx, next) => {
const arg = ctx.request.body
const field = ['menuId', 'name', 'rank', 'config', 'body']
const noField = []
field.map(item => {
if (!Object.keys(arg).includes(item)) noField.push(item)
})
if (noField.length != 0) {
ctx.body = {
data: {},
state: false,
message: '缺少' + noField
}
return
}
const createTime = new Date().getTime()
const [rows, fields] = await global.SQL.execute('INSERT INTO container (menuid, name, rank, config, body, createTime) VALUES (?, ?, ?, ?, ?, ?)', [arg.menuId, arg.name, arg.rank, arg.config, arg.body, createTime]);
ctx.body = ctx.body = {
data: rows,
state: true,
message: '创建成功'
}
})
module.exports = router

@ -39,19 +39,41 @@ router.post('/putfile', async (ctx) => {
status:'error', status:'error',
}; };
} }
console.log(file.newFilename)
console.log(arg.md5)
const md5 = await readFileMd5(file.filepath) const md5 = await readFileMd5(file.filepath)
console.log(md5)
if(md5 == arg.md5){
const createTime = new Date().getTime()
const [rows, fields] = await global.SQL.execute('SELECT * FROM `file` WHERE `md5` = ?', [arg.md5]);
let filename = createTime.toString() + parseInt(Math.random() * 10000000000000).toString(16) +'.'+ file.newFilename.split('.').slice(-1)
if(rows.length == 0){
await global.SQL.execute('INSERT INTO `file` (md5, filename, createTime, filesize) VALUES (?, ?, ?, ?)', [arg.md5, filename, createTime, file.size]);
const reader = fs.createReadStream(file.filepath); // 创建可读流
const upStream = fs.createWriteStream(global.dirname + '/fileStorage/' + filename); // 创建可写流
reader.pipe(upStream); // 可读流通过管道写入可写流
}else{
filename = rows[0].filename
}
return ctx.body = {
message:'上传成功',
state: true,
data:{
md5,
filename
}
};
}else{
return ctx.body = {
message:'文件损坏',
state:false,
};
}
// const file = ctx.request.files.file; // 获取上传文件 // const file = ctx.request.files.file; // 获取上传文件
// const reader = fs.createReadStream(file.filepath); // 创建可读流 // const reader = fs.createReadStream(file.filepath); // 创建可读流
// const upStream = fs.createWriteStream('./StaticFile_Backup/' + ctx.request.body.dirname + '/' + ctx.request.body.key); // 创建可写流 // const upStream = fs.createWriteStream('./StaticFile_Backup/' + ctx.request.body.dirname + '/' + ctx.request.body.key); // 创建可写流
// reader.pipe(upStream); // 可读流通过管道写入可写流 // reader.pipe(upStream); // 可读流通过管道写入可写流
return ctx.body = {
message:'上传成功',
status:'ok',
data:{
md5
}
};
}); });
router.get('/string', async (ctx, next) => { router.get('/string', async (ctx, next) => {

@ -0,0 +1,22 @@
const router = require('koa-router')()
// 全局路由
router.prefix('/menu')
router.get('/getMenu', async (ctx, next) => {
const [rows, fields] = await global.SQL.execute('SELECT * FROM `menu` WHERE `isdelete` = 0');
ctx.body = rows
})
router.delete('/deleteMenu', async (ctx, next) => {
const [rows, fields] = await global.SQL.execute('SELECT * FROM `menu` WHERE `isdelete` = 0');
ctx.body = rows
})
router.put('/updateMenu', async (ctx, next) => {
const [rows, fields] = await global.SQL.execute('SELECT * FROM `menu` WHERE `isdelete` = 0');
ctx.body = rows
})
router.post('/createMenu', async (ctx, next) => {
const [rows, fields] = await global.SQL.execute('SELECT * FROM `menu` WHERE `isdelete` = 0');
ctx.body = rows
})
module.exports = router
Loading…
Cancel
Save