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); } }