using System.ComponentModel.DataAnnotations;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;
using Dlhis.Sys.Menu.Services;
using Dlhis.Sys.Menu.Response;
using Dlhis.Sys.Menu.Request;
using Dlhis.Entity.Sys.Enums;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
namespace Dlhis.Sys.Menu.Controllers;
///
/// 菜单
///
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class MenusController : ControllerBase
{
private readonly IMenuService _menuService;
public MenusController(IMenuService menuService)
{
_menuService = menuService;
}
///
/// 菜单列表
///
/// 菜单平台类型 PlatformEnumType
///
[HttpGet("list")]
public async Task> GetListAsync([EnumDataType(typeof(PlatformEnumType))] PlatformEnumType platform = PlatformEnumType.PCAdmin)
{
return await _menuService.GetListAsync(platform);
}
///
/// 保存菜单
///
///
///
[Authorize(Roles = "admin")]
[HttpPost]
[Transactional]
public async Task Save(SaveMenuRequest request)
{
await _menuService.SaveMenuAsync(request);
}
///
/// 分配权限
///
///
///
[HttpPost("assign")]
public async Task AssignmentAsync(MenuPermissionAssignmentRequest request)
{
await _menuService.AssignmentAsync(request);
}
///
/// 当前类型的权限分配
///
/// 权限分配类型 AssignTypeEnumType
/// 类型对应的唯一值
///
[HttpGet("assignments")]
public async Task> GetAssignmentsAsync(
[EnumDataType(typeof(AssignTypeEnumType))] AssignTypeEnumType uniqueType,
[Required] string uniqueValue)
{
return await _menuService.GetAssignmentCodesAsync(uniqueType, uniqueValue);
}
///
/// 获取我的所有权限
///
///
[HttpGet("assignments/all")]
public async Task> GetAllAssignmentsAsync()
{
return await _menuService.GetAllAssignmentPermissionsAsync();
}
///
/// 获取我的菜单
///
///
[HttpGet("my")]
public async Task> GetCurrentMenusAsync()
{
return await _menuService.GetCurrentMenusAsync();
}
///
/// 重置所有路由
///
///
///
[Authorize(Roles = "admin")]
[HttpPost("reset")]
[Transactional]
public async Task ResetAsync(List request)
{
await _menuService.ResetAsync(request);
}
}