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;
///
/// 菜单控制器
///
[ApiController]
public class MenuController : ControllerBase
{
private readonly IMenuService _menuService;
private readonly AppDbContext _context;
public MenuController(IMenuService menuService, AppDbContext context)
{
_menuService = menuService;
_context = context;
}
///
/// 获取用户菜单(adminSystem 前端使用的路由)
///
[Authorize]
[HttpGet("api/v3/system/menus/simple")]
public async Task>>> GetUserMenus()
{
var userIdClaim = User.FindFirst("userId")?.Value;
if (string.IsNullOrEmpty(userIdClaim) || !int.TryParse(userIdClaim, out var userId))
{
return Ok(ApiResponse>.Fail(401, "无效的用户"));
}
var menus = await _menuService.GetUserMenusAsync(userId);
return Ok(ApiResponse>.Success(menus));
}
///
/// 获取所有菜单列表
///
[Authorize]
[HttpGet("api/menu/list")]
public async Task>>> GetAllMenus()
{
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