menu.controller.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. const menuService = require('../service/menu.service');
  2. const pageService = require('../service/pages.service');
  3. const util = require('../utils/util');
  4. module.exports = {
  5. async list(ctx) {
  6. const { name, status, projectId } = ctx.request.body;
  7. if (!util.isNumber(projectId)) {
  8. return ctx.throw(400, 'projectId不合法');
  9. }
  10. const list = await menuService.list(name, status, projectId);
  11. util.success(ctx, { list });
  12. },
  13. async create(ctx) {
  14. const { userId, userName } = util.decodeToken(ctx);
  15. const { projectId, name, type, isCreate } = ctx.request.body;
  16. if (projectId === 0) {
  17. return ctx.throw(400, '请先创建项目');
  18. }
  19. if (!util.isNumber(projectId)) {
  20. return ctx.throw(400, 'projectId不合法');
  21. }
  22. if (!name) {
  23. return ctx.throw(400, '菜单名称不能为空');
  24. }
  25. try {
  26. let pageId = 0;
  27. // 只有菜单和页面类型支持自动创建页面
  28. if (type !== 2 && isCreate === 1) {
  29. const res = await pageService.createPage(name, userId, userName, '', '', projectId);
  30. pageId = res.insertId || 0;
  31. }
  32. await menuService.create({ ...ctx.request.body, pageId, userId, userName });
  33. util.success(ctx);
  34. } catch (error) {
  35. util.fail(ctx, error.message);
  36. }
  37. },
  38. async delete(ctx) {
  39. const { id, projectId } = ctx.request.body;
  40. if (!util.isNumber(projectId)) {
  41. return ctx.throw(400, '项目ID不合法');
  42. }
  43. if (!util.isNotEmpty(id)) {
  44. return ctx.throw(400, '菜单ID不能为空');
  45. }
  46. await menuService.deleteMenuById(id, projectId);
  47. util.success(ctx);
  48. },
  49. async update(ctx) {
  50. const { id, name } = ctx.request.body;
  51. if (!util.isNotEmpty(id)) {
  52. return ctx.throw(400, '菜单ID不能为空');
  53. }
  54. if (!name) {
  55. return ctx.throw(400, '菜单名称不能为空');
  56. }
  57. await menuService.update(ctx.request.body);
  58. util.success(ctx);
  59. },
  60. async copy(ctx) {
  61. const { userId, userName } = util.decodeToken(ctx);
  62. const { id } = ctx.request.body;
  63. if (!util.isNotEmpty(id)) {
  64. return ctx.throw(400, '菜单ID不能为空');
  65. }
  66. const [menuInfo] = await menuService.getMenuInfoById(id);
  67. if (!menuInfo) {
  68. return ctx.throw(400, '菜单ID不存在');
  69. }
  70. await menuService.create({
  71. ...menuInfo,
  72. name: `${menuInfo.name}-副本`,
  73. userId,
  74. userName,
  75. });
  76. util.success(ctx);
  77. },
  78. };