using Microsoft.AspNetCore.Mvc; using QYZH.InteractiveMagazine.Infrastructure.Middleware; using QYZH.InteractiveMagazine.IService; using QYZH.InteractiveMagazine.Models.Common; using QYZH.InteractiveMagazine.Models.Dto; using QYZH.InteractiveMagazine.Models.Enum; namespace QYZH.InteractiveMagazine.WebApi.Controllers; /// /// 后台权限管理 /// [ApiController] [Route("api/[controller]")] [ApiExplorerSettings(GroupName = nameof(ApiVersionEnum.Platform))] public class PermissionController(IAdminPermissionService adminPermissionService) : BaseController { /// /// 创建菜单 /// [OperationLog(OperationLogActionType.Create, OperationLogTargetType.AdminMenu)] [HttpPost("menus")] public async Task> CreateMenuAsync([FromBody] AdminMenuInput input) { var result = await adminPermissionService.CreateMenuAsync(input); return Success(result); } /// /// 更新菜单 /// [OperationLog(OperationLogActionType.Update, OperationLogTargetType.AdminMenu)] [HttpPut("menus/{id}")] public async Task> UpdateMenuAsync(long id, [FromBody] AdminMenuInput input) { var result = await adminPermissionService.UpdateMenuAsync(id, input); return Success(result); } /// /// 删除菜单 /// [OperationLog(OperationLogActionType.Delete, OperationLogTargetType.AdminMenu)] [HttpDelete("menus/{id}")] public async Task> DeleteMenuAsync(long id) { await adminPermissionService.DeleteMenuAsync(id); return Success(new object()); } /// /// 获取菜单树 /// [HttpPost("menus/tree")] public async Task>> GetMenuTreeAsync([FromBody] AdminMenuQueryInput input) { var result = await adminPermissionService.GetMenuTreeAsync(input); return Success(result); } /// /// 获取当前管理员菜单树 /// [HttpGet("menus/current")] public async Task>> GetCurrentMenuTreeAsync() { var userId = GetCurrentUserId(); BusinessException.ThrowIf(userId == null, "未获取到用户信息", ResultCode.DENY); var result = await adminPermissionService.GetAdminUserMenuTreeAsync(userId!.Value); return Success(result); } /// /// 创建角色 /// [OperationLog(OperationLogActionType.Create, OperationLogTargetType.AdminRole)] [HttpPost("roles")] public async Task> CreateRoleAsync([FromBody] AdminRoleInput input) { var result = await adminPermissionService.CreateRoleAsync(input); return Success(result); } /// /// 更新角色 /// [OperationLog(OperationLogActionType.Update, OperationLogTargetType.AdminRole)] [HttpPut("roles/{id}")] public async Task> UpdateRoleAsync(long id, [FromBody] AdminRoleInput input) { var result = await adminPermissionService.UpdateRoleAsync(id, input); return Success(result); } /// /// 删除角色 /// [OperationLog(OperationLogActionType.Delete, OperationLogTargetType.AdminRole)] [HttpDelete("roles/{id}")] public async Task> DeleteRoleAsync(long id) { await adminPermissionService.DeleteRoleAsync(id); return Success(new object()); } /// /// 获取角色详情 /// [HttpGet("roles/{id}")] public async Task> GetRoleByIdAsync(long id) { var result = await adminPermissionService.GetRoleByIdAsync(id); return Success(result); } /// /// 获取角色分页列表 /// [HttpPost("roles/list")] public async Task>> GetRoleListAsync([FromBody] AdminRoleQueryInput input) { var result = await adminPermissionService.GetRoleListAsync(input); return Success(result); } /// /// 分配角色菜单 /// [OperationLog(OperationLogActionType.Assign, OperationLogTargetType.AdminRole, TargetIdRouteKey = "roleId")] [HttpPut("roles/{roleId}/menus")] public async Task> AssignRoleMenusAsync(long roleId, [FromBody] AssignRoleMenusInput input) { await adminPermissionService.AssignRoleMenusAsync(roleId, input); return Success(new object()); } /// /// 分配管理员角色 /// [OperationLog(OperationLogActionType.Assign, OperationLogTargetType.AdminUser, TargetIdRouteKey = "adminUserId")] [HttpPut("users/{adminUserId}/roles")] public async Task> AssignAdminUserRolesAsync(long adminUserId, [FromBody] AssignAdminUserRolesInput input) { await adminPermissionService.AssignAdminUserRolesAsync(adminUserId, input); return Success(new object()); } }