RoleController.java 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. package com.usky.controller.sys;
  2. import com.usky.constant.Constant;
  3. import com.usky.entity.sys.SysRoleDTO;
  4. import com.usky.entity.sys.SysUserRoleDTO;
  5. import com.usky.entity.sys.vo.SysDeptVO;
  6. import com.usky.entity.sys.vo.SysRoleVO;
  7. import com.usky.service.sys.RoleService;
  8. import com.usky.service.sys.user.UserService;
  9. import com.usky.utils.*;
  10. import io.swagger.annotations.Api;
  11. import io.swagger.annotations.ApiImplicitParam;
  12. import io.swagger.annotations.ApiImplicitParams;
  13. import io.swagger.annotations.ApiOperation;
  14. import org.apache.shiro.authz.annotation.RequiresPermissions;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.web.bind.annotation.*;
  17. /**
  18. * @author laowo
  19. * @version v1.0
  20. * @date 2021/8/27 14:37
  21. * @description TODO
  22. **/
  23. import java.util.List;
  24. @Api(tags = "系统-角色管理")
  25. @RestController
  26. @RequestMapping("sys/role")
  27. public class RoleController {
  28. private String prefix = "system/role";
  29. @Autowired
  30. private RoleService roleService;
  31. @Autowired
  32. private UserService userService;
  33. @RequiresPermissions("system:role:view")
  34. @GetMapping()
  35. @ApiOperation(value = "页面权限")
  36. public String role() {
  37. return prefix + "/role";
  38. }
  39. @ApiOperation(value = "角色查询-分页")
  40. @PostMapping("list")
  41. @RequiresPermissions("system:role:list")
  42. @ApiImplicitParams({
  43. @ApiImplicitParam(name = "roleName", value = "角色名称", required = false, paramType = "query"),
  44. @ApiImplicitParam(name = "status", value = "角色状态 0正常 1 停用", required = false, paramType = "query"),
  45. @ApiImplicitParam(name = "startTime", value = "开始时间", required = false, paramType = "query"),
  46. @ApiImplicitParam(name = "endTime", value = "结束时间", required = false, paramType = "query"),
  47. @ApiImplicitParam(name = "pageSize", value = "页数据条数", required = false, paramType = "query"),
  48. @ApiImplicitParam(name = "pageNo", value = "当前页", required = false, paramType = "query"),
  49. })
  50. public Page<SysRoleVO> list(
  51. @RequestParam(value = "roleName", required = false) String roleName,
  52. @RequestParam(value = "status", required = false) String status,
  53. @RequestParam(value = "startTime", required = false) String startTime,
  54. @RequestParam(value = "endTime", required = false) String endTime,
  55. @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize,
  56. @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo) {
  57. Page<SysRoleVO> data = roleService.list(new SysDeptVO(), roleName, status, startTime, endTime, pageSize, pageNo);
  58. return data;
  59. }
  60. @ApiOperation(value = "角色查询-全部")
  61. @PostMapping("listAll")
  62. @RequiresPermissions("system:role:list")
  63. public Result<List<SysRoleVO>> list() {
  64. List<SysRoleVO> roleVOList = roleService.querRoleList(new SysRoleVO());
  65. return Result.OK(roleVOList);
  66. }
  67. /**
  68. * 新增保存角色
  69. */
  70. @ApiOperation(value = "角色新增")
  71. @RequiresPermissions("system:role:add")
  72. @PostMapping("/add")
  73. @ResponseBody
  74. @ApiImplicitParams({
  75. @ApiImplicitParam(name = "roleName", value = "角色名称", required = true, paramType = "query"),
  76. @ApiImplicitParam(name = "menuIds", value = "菜单组", required = false, paramType = "query"),
  77. @ApiImplicitParam(name = "deptIds", value = "部门", required = false, paramType = "query"),
  78. @ApiImplicitParam(name = "roleKey", value = "角色权限字符", required = true, paramType = "query"),
  79. @ApiImplicitParam(name = "roleSort", value = "排序", required = true, paramType = "query"),
  80. @ApiImplicitParam(name = "dataScope", value = "数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4本部门及以下数据权限)", required = true, paramType = "query"),
  81. @ApiImplicitParam(name = "status", value = "角色状态(0正常 1停用)", required = true, paramType = "query"),
  82. @ApiImplicitParam(name = "remark", value = "备注", required = false, paramType = "query"),
  83. })
  84. public Result<?> addSave(
  85. @RequestParam("roleName") String roleName,
  86. @RequestParam(value = "menuIds", required = false) Integer[] menuIds,
  87. @RequestParam(value = "deptIds", required = false) Integer[] deptIds,
  88. @RequestParam("roleKey") String roleKey,
  89. @RequestParam("roleSort") Integer roleSort,
  90. @RequestParam("dataScope") String dataScope,
  91. @RequestParam("status") String status,
  92. @RequestParam(value = "remark", required = false) String remark
  93. ) {
  94. //新增角色名称校验
  95. SysRoleVO roleVO = new SysRoleVO();
  96. roleVO.setRoleName(roleName);
  97. roleVO.setRoleKey(roleKey);
  98. roleVO.setRoleSort(roleSort);
  99. roleVO.setDataScope(dataScope);
  100. roleVO.setStatus(status);
  101. roleVO.setRemark(remark);
  102. roleVO.setMenuIds(menuIds);
  103. roleVO.setDeptIds(deptIds);
  104. SysRoleDTO roleDTO = roleService.queryRoleByName(roleVO);
  105. if (roleDTO != null) {
  106. return Result.error("角色名称不能重复!");
  107. }
  108. //权限字符校验
  109. SysRoleDTO roleKeyDto = roleService.queryRoleByKey(roleVO);
  110. if (roleKeyDto != null) {
  111. return Result.error("权限字符不能重复!");
  112. }
  113. AuthorizationUtils.clearAllCachedAuthorizationInfo();
  114. roleService.addRole(roleVO);
  115. return Result.OK();
  116. }
  117. @ApiOperation(value = "角色信息修改")
  118. @RequiresPermissions("system:role:edit")
  119. @PostMapping("/edit")
  120. @ResponseBody
  121. @ApiImplicitParams({
  122. @ApiImplicitParam(name = "roleId", value = "角色id", required = true, paramType = "query"),
  123. @ApiImplicitParam(name = "roleName", value = "角色名称", required = true, paramType = "query"),
  124. @ApiImplicitParam(name = "menuIds", value = "菜单组", required = false, paramType = "query"),
  125. @ApiImplicitParam(name = "deptIds", value = "部门", required = false, paramType = "query"),
  126. @ApiImplicitParam(name = "roleKey", value = "角色权限字符", required = true, paramType = "query"),
  127. @ApiImplicitParam(name = "roleSort", value = "排序", required = true, paramType = "query"),
  128. @ApiImplicitParam(name = "dataScope", value = "数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4本部门及以下数据权限)", required = true, paramType = "query"),
  129. @ApiImplicitParam(name = "status", value = "角色状态(0正常 1停用)", required = true, paramType = "query"),
  130. @ApiImplicitParam(name = "remark", value = "备注", required = false, paramType = "query"),
  131. })
  132. public Result<?> edit(
  133. @RequestParam("roleName") String roleName,
  134. @RequestParam("roleId") Integer roleId,
  135. @RequestParam(value = "menuIds", required = false) Integer[] menuIds,
  136. @RequestParam(value = "deptIds", required = false) Integer[] deptIds,
  137. @RequestParam("roleKey") String roleKey,
  138. @RequestParam("roleSort") Integer roleSort,
  139. @RequestParam("dataScope") String dataScope,
  140. @RequestParam("status") String status,
  141. @RequestParam(value = "remark", required = false) String remark
  142. ) {
  143. //新增角色名称校验
  144. SysRoleVO roleVO = new SysRoleVO();
  145. roleVO.setRoleName(roleName);
  146. roleVO.setRoleKey(roleKey);
  147. roleVO.setRoleId(roleId);
  148. roleVO.setRoleSort(roleSort);
  149. roleVO.setDataScope(dataScope);
  150. roleVO.setStatus(status);
  151. roleVO.setRemark(remark);
  152. roleVO.setMenuIds(menuIds);
  153. roleVO.setDeptIds(deptIds);
  154. SysRoleDTO roleDTO = roleService.queryRoleByName(roleVO);
  155. if (roleDTO != null) {
  156. return Result.error("角色名称不能重复!");
  157. }
  158. //权限字符校验
  159. SysRoleDTO roleKeyDto = roleService.queryRoleByKey(roleVO);
  160. if (roleKeyDto != null) {
  161. return Result.error("权限字符不能重复!");
  162. }
  163. AuthorizationUtils.clearAllCachedAuthorizationInfo();
  164. roleService.edit(roleVO);
  165. return Result.OK();
  166. }
  167. @ApiOperation(value = "角色删除")
  168. @RequiresPermissions("system:role:remove")
  169. @PostMapping("/remove")
  170. @ResponseBody
  171. @ApiImplicitParams({
  172. @ApiImplicitParam(name = "roleId", value = "角色id", required = true, paramType = "query")})
  173. public Result<?> remove(@RequestParam("roleId") Integer roleId) {
  174. List<SysUserRoleDTO> sysUserRoleDTOS = userService.queryUserByRoleId(roleId);
  175. if (ListUtil.isNotBlank(sysUserRoleDTOS)) {
  176. return Result.error("角色已被分配无法删除");
  177. }
  178. userService.remove(roleId);
  179. return Result.OK();
  180. }
  181. }