diff --git a/backend-csharp/AmtScanner.Api/Controllers/MenuController.cs b/backend-csharp/AmtScanner.Api/Controllers/MenuController.cs
index 31cde47..9cbaf51 100644
--- a/backend-csharp/AmtScanner.Api/Controllers/MenuController.cs
+++ b/backend-csharp/AmtScanner.Api/Controllers/MenuController.cs
@@ -1,7 +1,9 @@
+using AmtScanner.Api.Data;
using AmtScanner.Api.Models;
using AmtScanner.Api.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
namespace AmtScanner.Api.Controllers;
@@ -12,10 +14,12 @@ namespace AmtScanner.Api.Controllers;
public class MenuController : ControllerBase
{
private readonly IMenuService _menuService;
+ private readonly AppDbContext _context;
- public MenuController(IMenuService menuService)
+ public MenuController(IMenuService menuService, AppDbContext context)
{
_menuService = menuService;
+ _context = context;
}
///
@@ -45,4 +49,195 @@ public class MenuController : ControllerBase
var menus = await _menuService.GetAllMenusAsync();
return Ok(ApiResponse>.Success(menus));
}
+
+ ///
+ /// 创建菜单
+ ///
+ [Authorize]
+ [HttpPost("api/menu")]
+ public async Task>> CreateMenu([FromBody] CreateMenuRequest request)
+ {
+ var menu = new Menu
+ {
+ ParentId = request.ParentId,
+ Name = request.Name,
+ Path = request.Path,
+ Component = request.Component,
+ Title = request.Title,
+ Icon = request.Icon,
+ Sort = request.Sort,
+ IsHide = request.IsHide,
+ KeepAlive = request.KeepAlive,
+ Link = request.Link,
+ IsIframe = request.IsIframe,
+ Roles = request.Roles != null ? string.Join(",", request.Roles) : null
+ };
+
+ _context.Menus.Add(menu);
+ await _context.SaveChangesAsync();
+
+ return Ok(ApiResponse
public bool IsIframe { get; set; } = false;
+ ///
+ /// 是否系统内置菜单(不可删除)
+ ///
+ public bool IsSystem { get; set; } = false;
+
///
/// 是否隐藏标签页
///