You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
md5file/routes/menu.js

124 lines
3.6 KiB

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 = {
data: rows,
state: true,
message: '获取内容成功'
}
})
router.delete('/deleteMenu', async (ctx, next) => {
const arg = ctx.request.query;
if(!arg.id){
ctx.body = {
data: {},
state: false,
message: '缺少id'
}
return
}
const [rows, fields] = await global.SQL.execute('UPDATE menu SET isdelete = 1 WHERE `id` = ?', [arg.id]);
ctx.body = {
data: rows,
state: true,
message: '删除菜单成功'
}
})
router.put('/updateMenu', async (ctx, next) => {
const arg = ctx.request.body;
const field = ['name', 'route', 'rank', 'remarks', 'father', 'icon']
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 menu SET name = ? , rank = ? , remarks = ? , route = ?, icon = ? WHERE id = ?', [arg.name, arg.rank, arg.remarks, arg.route, arg.icon, Number(arg.id)]);
ctx.body = {
data: rows,
state: true,
message: '更新成功'
}
})
router.put('/changeMenuItemRank', async (ctx, next) => {
const arg = ctx.request.body;
const field = ['rankArr']
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
}
arg.rankArr = JSON.parse(arg.rankArr)
const a = arg.rankArr.map(item => {
return `WHEN ${item.id} THEN ${item.rank}`
}).join(' ')
const b = arg.rankArr.map(item => item.id)
const SQL = `UPDATE menu SET rank = CASE id ${a} END WHERE id IN (${b})`
// console.log(SQL)
try{
const [rows, fields] = await global.SQL.execute(SQL);
ctx.body = {
data: rows,
state: true,
message: '更新成功'
}
}catch (e) {
console.error(e)
}
})
router.post('/createMneuItem', async (ctx, next) => {
const arg = ctx.request.body;
const field = ['name', 'route', 'rank', 'remarks', 'father', 'icon']
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 [checket, checketFields] = await global.SQL.execute('SELECT * FROM `menu` WHERE `isdelete` = 0 AND `route` = ?', [arg.route]);
if(checket.length != 0){
ctx.body = {
data: {},
state: false,
message: '路由标志已存在:' + arg.route
}
return
}
const createTime = new Date().getTime()
const [rows, fields] = await global.SQL.execute('INSERT INTO menu (name, rank, route, father, remarks, createTime) VALUES (?, ?, ?, ?, ?, ?)', [arg.name, arg.rank, arg.route, arg.father, arg.remarks, createTime])
ctx.body = {
data: rows,
state: true,
message: '创建成功'
}
})
module.exports = router