using Attribute; using Common; using Dto; using Enums; using Extensions; using Filters; using Infrastructure; using Infrastructure.Model; using Mapster; using Microsoft.AspNetCore.Mvc; using Middleware; using Model; using Model.Base; using Services; namespace Controllers { /// /// 角色信息 /// [Verify] [Route("system/role")] [ApiExplorerSettings(GroupName = "sys")] public class SysRoleController : BaseController { private readonly ISysRoleService sysRoleService; private readonly ISysMenuService sysMenuService; public SysRoleController( ISysRoleService sysRoleService, ISysMenuService sysMenuService) { this.sysRoleService = sysRoleService; this.sysMenuService = sysMenuService; } /// /// 获取系统角色管理 /// /// [ActionPermissionFilter(Permission = "system:role:list")] [HttpGet("list")] public IActionResult List([FromQuery] SysRole role, [FromQuery] PagerInfo pager) { var list = sysRoleService.SelectRoleList(role, pager); return SUCCESS(list, TIME_FORMAT_FULL); } /// /// 获取所有角色列表 /// /// [HttpGet("/v1/skb/sysServer/role/list")] public IActionResult AllList() { return SUCCESS(sysRoleService.GetList(), TIME_FORMAT_FULL); } /// /// 根据角色编号获取详细信息 /// /// /// [HttpGet("{roleId}")] public IActionResult GetInfo(long roleId = 0) { var info = sysRoleService.SelectRoleById(roleId); return SUCCESS(info, TIME_FORMAT_FULL); } /// /// 添加角色 /// /// /// [HttpPost] [ActionPermissionFilter(Permission = "system:role:add")] [Log(Title = "角色管理", BusinessType = BusinessType.INSERT)] [Route("edit")] public IActionResult RoleAdd([FromBody] SysRoleDto dto) { if (dto == null) return ToResponse(ApiResult.Error(101, "请求参数错误")); SysRole sysRoleDto = dto.Adapt(); if (UserConstants.NOT_UNIQUE.Equals(sysRoleService.CheckRoleKeyUnique(sysRoleDto))) { return ToResponse(ApiResult.Error((int)ResultCode.CUSTOM_ERROR, $"新增角色'{sysRoleDto.RoleName}'失败,角色权限已存在")); } sysRoleDto.CreateBy = HttpContext.GetName(); long roleId = sysRoleService.InsertRole(sysRoleDto); return ToResponse(roleId); } /// /// 修改角色 /// /// /// [HttpPut] [ActionPermissionFilter(Permission = "system:role:edit")] [Log(Title = "角色管理", BusinessType = BusinessType.UPDATE)] [Route("edit")] public IActionResult RoleEdit([FromBody] SysRoleDto dto) { if (dto == null || dto.RoleId <= 0 || string.IsNullOrEmpty(dto.RoleKey)) { return ToResponse(ApiResult.Error(101, "请求参数错误")); } SysRole sysRoleDto = dto.Adapt(); sysRoleService.CheckRoleAllowed(sysRoleDto); var info = sysRoleService.SelectRoleById(sysRoleDto.RoleId); if (info != null && info.RoleCode != sysRoleDto.RoleCode) { if (UserConstants.NOT_UNIQUE.Equals(sysRoleService.CheckRoleKeyUnique(sysRoleDto))) { return ToResponse(ApiResult.Error($"编辑角色'{sysRoleDto.RoleName}'失败,角色权限已存在")); } } sysRoleDto.UpdateBy = HttpContext.GetName(); int upResult = sysRoleService.UpdateRole(sysRoleDto); if (upResult > 0) { return SUCCESS(upResult); } return ToResponse(ApiResult.Error($"修改角色'{sysRoleDto.RoleName}'失败,请联系管理员")); } /// /// 根据角色分配菜单 /// /// /// [HttpPut("dataScope")] [ActionPermissionFilter(Permission = "system:role:authorize")] [Log(Title = "角色管理", BusinessType = BusinessType.UPDATE)] public IActionResult DataScope([FromBody] SysRoleDto sysRoleDto) { if (sysRoleDto == null || sysRoleDto.RoleId <= 0) return ToResponse(ApiResult.Error(101, "请求参数错误")); SysRole sysRole = sysRoleDto.Adapt(); sysRoleDto.CreateBy = HttpContext.GetName(); sysRoleService.CheckRoleAllowed(sysRole); bool result = sysRoleService.AuthDataScope(sysRoleDto); return SUCCESS(result); } /// /// 角色删除 /// /// /// [HttpDelete("{roleId}")] [Log(Title = "角色管理", BusinessType = BusinessType.DELETE)] [ActionPermissionFilter(Permission = "system:role:remove")] public IActionResult Remove(string roleId) { long[] roleIds = Tools.SpitLongArrary(roleId); int result = sysRoleService.DeleteRoleByRoleId(roleIds); return ToResponse(result); } /// /// 修改角色状态 /// /// 角色对象 /// [HttpPut("changeStatus")] [Log(Title = "修改角色状态", BusinessType = BusinessType.UPDATE)] [ActionPermissionFilter(Permission = "system:role:edit")] public IActionResult ChangeStatus([FromBody] SysRole roleDto) { sysRoleService.CheckRoleAllowed(roleDto); int result = sysRoleService.UpdateRoleStatus(roleDto); return ToResponse(result); } /// /// 角色导出 /// /// [Log(BusinessType = BusinessType.EXPORT, IsSaveResponseData = false, Title = "角色导出")] [HttpGet("export")] [ActionPermissionFilter(Permission = "system:role:export")] public IActionResult Export() { var list = sysRoleService.SelectRoleAll(); string sFileName = ExportExcel(list, "sysrole", "角色"); return SUCCESS(new { path = "/export/" + sFileName, fileName = sFileName }); } /// /// 导出角色菜单 /// /// /// [Log(BusinessType = BusinessType.EXPORT, IsSaveResponseData = false, Title = "角色菜单导出")] [HttpGet("exportRoleMenu")] [ActionPermissionFilter(Permission = "system:role:export")] public IActionResult ExportRoleMenu(int roleId) { MenuQueryDto dto = new() { DelFlag = "0", MenuTypeIds = "M,C,F" }; var list = sysMenuService.SelectRoleMenuListByRole(dto, roleId); var result = ExportExcelMini(list, roleId.ToString(), "角色菜单"); return ExportExcel(result.Item2, result.Item1); } } }