SysRoleController.cs 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. using Microsoft.AspNetCore.Mvc;
  2. using ZR.Model;
  3. using ZR.Model.System;
  4. using ZR.Model.System.Dto;
  5. namespace ZR.Admin.WebApi.Controllers.System
  6. {
  7. /// <summary>
  8. /// 角色信息
  9. /// </summary>
  10. [Route("system/role")]
  11. [ApiExplorerSettings(GroupName = "sys")]
  12. public class SysRoleController : BaseController
  13. {
  14. private readonly ISysRoleService sysRoleService;
  15. private readonly ISysMenuService sysMenuService;
  16. public SysRoleController(
  17. ISysRoleService sysRoleService,
  18. ISysMenuService sysMenuService)
  19. {
  20. this.sysRoleService = sysRoleService;
  21. this.sysMenuService = sysMenuService;
  22. }
  23. /// <summary>
  24. /// 获取系统角色管理
  25. /// </summary>
  26. /// <returns></returns>
  27. [ActionPermissionFilter(Permission = "system:role:list")]
  28. [HttpGet("list")]
  29. public IActionResult List([FromQuery] SysRole role, [FromQuery] PagerInfo pager)
  30. {
  31. var list = sysRoleService.SelectRoleList(role, pager);
  32. return SUCCESS(list, TIME_FORMAT_FULL);
  33. }
  34. /// <summary>
  35. /// 根据角色编号获取详细信息
  36. /// </summary>
  37. /// <param name="roleId"></param>
  38. /// <returns></returns>
  39. [HttpGet("{roleId}")]
  40. public IActionResult GetInfo(long roleId = 0)
  41. {
  42. var info = sysRoleService.SelectRoleById(roleId);
  43. return SUCCESS(info, TIME_FORMAT_FULL);
  44. }
  45. /// <summary>
  46. /// 添加角色
  47. /// </summary>
  48. /// <param name="dto"></param>
  49. /// <returns></returns>
  50. [HttpPost]
  51. [ActionPermissionFilter(Permission = "system:role:add")]
  52. [Log(Title = "角色管理", BusinessType = BusinessType.INSERT)]
  53. [Route("edit")]
  54. public IActionResult RoleAdd([FromBody] SysRoleDto dto)
  55. {
  56. if (dto == null) return ToResponse(ApiResult.Error(101, "请求参数错误"));
  57. SysRole sysRoleDto = dto.Adapt<SysRole>();
  58. if (UserConstants.NOT_UNIQUE.Equals(sysRoleService.CheckRoleKeyUnique(sysRoleDto)))
  59. {
  60. return ToResponse(ApiResult.Error((int)ResultCode.CUSTOM_ERROR, $"新增角色'{sysRoleDto.RoleName}'失败,角色权限已存在"));
  61. }
  62. sysRoleDto.Create_by = HttpContext.GetName();
  63. long roleId = sysRoleService.InsertRole(sysRoleDto);
  64. return ToResponse(roleId);
  65. }
  66. /// <summary>
  67. /// 修改角色
  68. /// </summary>
  69. /// <param name="dto"></param>
  70. /// <returns></returns>
  71. [HttpPut]
  72. [ActionPermissionFilter(Permission = "system:role:edit")]
  73. [Log(Title = "角色管理", BusinessType = BusinessType.UPDATE)]
  74. [Route("edit")]
  75. public IActionResult RoleEdit([FromBody] SysRoleDto dto)
  76. {
  77. if (dto == null || dto.RoleId <= 0 || string.IsNullOrEmpty(dto.RoleKey))
  78. {
  79. return ToResponse(ApiResult.Error(101, "请求参数错误"));
  80. }
  81. SysRole sysRoleDto = dto.Adapt<SysRole>();
  82. sysRoleService.CheckRoleAllowed(sysRoleDto);
  83. var info = sysRoleService.SelectRoleById(sysRoleDto.RoleId);
  84. if (info != null && info.RoleKey != sysRoleDto.RoleKey)
  85. {
  86. if (UserConstants.NOT_UNIQUE.Equals(sysRoleService.CheckRoleKeyUnique(sysRoleDto)))
  87. {
  88. return ToResponse(ApiResult.Error($"编辑角色'{sysRoleDto.RoleName}'失败,角色权限已存在"));
  89. }
  90. }
  91. sysRoleDto.Update_by = HttpContext.GetName();
  92. int upResult = sysRoleService.UpdateRole(sysRoleDto);
  93. if (upResult > 0)
  94. {
  95. return SUCCESS(upResult);
  96. }
  97. return ToResponse(ApiResult.Error($"修改角色'{sysRoleDto.RoleName}'失败,请联系管理员"));
  98. }
  99. /// <summary>
  100. /// 根据角色分配菜单
  101. /// </summary>
  102. /// <param name="sysRoleDto"></param>
  103. /// <returns></returns>
  104. [HttpPut("dataScope")]
  105. [ActionPermissionFilter(Permission = "system:role:authorize")]
  106. [Log(Title = "角色管理", BusinessType = BusinessType.UPDATE)]
  107. public IActionResult DataScope([FromBody] SysRoleDto sysRoleDto)
  108. {
  109. if (sysRoleDto == null || sysRoleDto.RoleId <= 0) return ToResponse(ApiResult.Error(101, "请求参数错误"));
  110. SysRole sysRole = sysRoleDto.Adapt<SysRole>();
  111. sysRoleDto.Create_by = HttpContext.GetName();
  112. sysRoleService.CheckRoleAllowed(sysRole);
  113. bool result = sysRoleService.AuthDataScope(sysRoleDto);
  114. return SUCCESS(result);
  115. }
  116. /// <summary>
  117. /// 角色删除
  118. /// </summary>
  119. /// <param name="roleId"></param>
  120. /// <returns></returns>
  121. [HttpDelete("{roleId}")]
  122. [Log(Title = "角色管理", BusinessType = BusinessType.DELETE)]
  123. [ActionPermissionFilter(Permission = "system:role:remove")]
  124. public IActionResult Remove(string roleId)
  125. {
  126. long[] roleIds = Tools.SpitLongArrary(roleId);
  127. int result = sysRoleService.DeleteRoleByRoleId(roleIds);
  128. return ToResponse(result);
  129. }
  130. /// <summary>
  131. /// 修改角色状态
  132. /// </summary>
  133. /// <param name="roleDto">角色对象</param>
  134. /// <returns></returns>
  135. [HttpPut("changeStatus")]
  136. [Log(Title = "修改角色状态", BusinessType = BusinessType.UPDATE)]
  137. [ActionPermissionFilter(Permission = "system:role:edit")]
  138. public IActionResult ChangeStatus([FromBody] SysRole roleDto)
  139. {
  140. sysRoleService.CheckRoleAllowed(roleDto);
  141. int result = sysRoleService.UpdateRoleStatus(roleDto);
  142. return ToResponse(result);
  143. }
  144. /// <summary>
  145. /// 角色导出
  146. /// </summary>
  147. /// <returns></returns>
  148. [Log(BusinessType = BusinessType.EXPORT, IsSaveResponseData = false, Title = "角色导出")]
  149. [HttpGet("export")]
  150. [ActionPermissionFilter(Permission = "system:role:export")]
  151. public IActionResult Export()
  152. {
  153. var list = sysRoleService.SelectRoleAll();
  154. string sFileName = ExportExcel(list, "sysrole", "角色");
  155. return SUCCESS(new { path = "/export/" + sFileName, fileName = sFileName });
  156. }
  157. /// <summary>
  158. /// 导出角色菜单
  159. /// </summary>
  160. /// <param name="roleId"></param>
  161. /// <returns></returns>
  162. [Log(BusinessType = BusinessType.EXPORT, IsSaveResponseData = false, Title = "角色菜单导出")]
  163. [HttpGet("exportRoleMenu")]
  164. [ActionPermissionFilter(Permission = "system:role:export")]
  165. public IActionResult ExportRoleMenu(int roleId)
  166. {
  167. MenuQueryDto dto = new() { Status = "0", MenuTypeIds = "M,C,F" };
  168. var list = sysMenuService.SelectRoleMenuListByRole(dto, roleId);
  169. var result = ExportExcelMini(list, roleId.ToString(), "角色菜单");
  170. return ExportExcel(result.Item2, result.Item1);
  171. }
  172. }
  173. }