const menuService = require('../service/menu.service'); const pageService = require('../service/pages.service'); const util = require('../utils/util'); module.exports = { async list(ctx) { const { name, status, projectId } = ctx.request.body; if (!util.isNumber(projectId)) { return ctx.throw(400, 'projectId不合法'); } const list = await menuService.list(name, status, projectId); util.success(ctx, { list }); }, async create(ctx) { const { userId, userName } = util.decodeToken(ctx); const { projectId, name, type, isCreate } = ctx.request.body; if (projectId === 0) { return ctx.throw(400, '请先创建项目'); } if (!util.isNumber(projectId)) { return ctx.throw(400, 'projectId不合法'); } if (!name) { return ctx.throw(400, '菜单名称不能为空'); } try { let pageId = 0; // 只有菜单和页面类型支持自动创建页面 if (type !== 2 && isCreate === 1) { const res = await pageService.createPage(name, userId, userName, '', '', projectId); pageId = res.insertId || 0; } await menuService.create({ ...ctx.request.body, pageId, userId, userName }); util.success(ctx); } catch (error) { util.fail(ctx, error.message); } }, async delete(ctx) { const { id, projectId } = ctx.request.body; if (!util.isNumber(projectId)) { return ctx.throw(400, '项目ID不合法'); } if (!util.isNotEmpty(id)) { return ctx.throw(400, '菜单ID不能为空'); } await menuService.deleteMenuById(id, projectId); util.success(ctx); }, async update(ctx) { const { id, name } = ctx.request.body; if (!util.isNotEmpty(id)) { return ctx.throw(400, '菜单ID不能为空'); } if (!name) { return ctx.throw(400, '菜单名称不能为空'); } await menuService.update(ctx.request.body); util.success(ctx); }, async copy(ctx) { const { userId, userName } = util.decodeToken(ctx); const { id } = ctx.request.body; if (!util.isNotEmpty(id)) { return ctx.throw(400, '菜单ID不能为空'); } const [menuInfo] = await menuService.getMenuInfoById(id); if (!menuInfo) { return ctx.throw(400, '菜单ID不存在'); } await menuService.create({ ...menuInfo, name: `${menuInfo.name}-副本`, userId, userName, }); util.success(ctx); }, };