SysRoleController.java 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. package com.ruoyi.web.controller.system;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import com.ruoyi.common.annotation.Log;
  5. import com.ruoyi.common.constant.UserConstants;
  6. import com.ruoyi.common.core.controller.BaseController;
  7. import com.ruoyi.common.core.domain.PageQuery;
  8. import com.ruoyi.common.core.domain.R;
  9. import com.ruoyi.common.core.domain.entity.SysDept;
  10. import com.ruoyi.common.core.domain.entity.SysRole;
  11. import com.ruoyi.common.core.domain.entity.SysUser;
  12. import com.ruoyi.common.core.domain.model.LoginUser;
  13. import com.ruoyi.common.core.page.TableDataInfo;
  14. import com.ruoyi.common.enums.BusinessType;
  15. import com.ruoyi.common.helper.LoginHelper;
  16. import com.ruoyi.common.utils.poi.ExcelUtil;
  17. import com.ruoyi.system.domain.SysUserRole;
  18. import com.ruoyi.system.service.ISysDeptService;
  19. import com.ruoyi.system.service.ISysRoleService;
  20. import com.ruoyi.system.service.ISysUserService;
  21. import com.ruoyi.system.service.SysPermissionService;
  22. import lombok.RequiredArgsConstructor;
  23. import org.springframework.validation.annotation.Validated;
  24. import org.springframework.web.bind.annotation.*;
  25. import javax.servlet.http.HttpServletResponse;
  26. import java.util.HashMap;
  27. import java.util.List;
  28. import java.util.Map;
  29. /**
  30. * 角色信息
  31. *
  32. * @author Lion Li
  33. */
  34. @Validated
  35. @RequiredArgsConstructor
  36. @RestController
  37. @RequestMapping("/system/role")
  38. public class SysRoleController extends BaseController {
  39. private final ISysRoleService roleService;
  40. private final ISysUserService userService;
  41. private final ISysDeptService deptService;
  42. private final SysPermissionService permissionService;
  43. /**
  44. * 获取角色信息列表
  45. */
  46. @SaCheckPermission("system:role:list")
  47. @GetMapping("/list")
  48. public TableDataInfo<SysRole> list(SysRole role, PageQuery pageQuery) {
  49. return roleService.selectPageRoleList(role, pageQuery);
  50. }
  51. /**
  52. * 导出角色信息列表
  53. */
  54. @Log(title = "角色管理", businessType = BusinessType.EXPORT)
  55. @SaCheckPermission("system:role:export")
  56. @PostMapping("/export")
  57. public void export(SysRole role, HttpServletResponse response) {
  58. List<SysRole> list = roleService.selectRoleList(role);
  59. ExcelUtil.exportExcel(list, "角色数据", SysRole.class, response);
  60. }
  61. /**
  62. * 根据角色编号获取详细信息
  63. *
  64. * @param roleId 角色ID
  65. */
  66. @SaCheckPermission("system:role:query")
  67. @GetMapping(value = "/{roleId}")
  68. public R<SysRole> getInfo(@PathVariable Long roleId) {
  69. roleService.checkRoleDataScope(roleId);
  70. return R.ok(roleService.selectRoleById(roleId));
  71. }
  72. /**
  73. * 新增角色
  74. */
  75. @SaCheckPermission("system:role:add")
  76. @Log(title = "角色管理", businessType = BusinessType.INSERT)
  77. @PostMapping
  78. public R<Void> add(@Validated @RequestBody SysRole role) {
  79. if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) {
  80. return R.fail("新增角色'" + role.getRoleName() + "'失败,角色名称已存在");
  81. } else if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role))) {
  82. return R.fail("新增角色'" + role.getRoleName() + "'失败,角色权限已存在");
  83. }
  84. return toAjax(roleService.insertRole(role));
  85. }
  86. /**
  87. * 修改保存角色
  88. */
  89. @SaCheckPermission("system:role:edit")
  90. @Log(title = "角色管理", businessType = BusinessType.UPDATE)
  91. @PutMapping
  92. public R<Void> edit(@Validated @RequestBody SysRole role) {
  93. roleService.checkRoleAllowed(role);
  94. roleService.checkRoleDataScope(role.getRoleId());
  95. if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) {
  96. return R.fail("修改角色'" + role.getRoleName() + "'失败,角色名称已存在");
  97. } else if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role))) {
  98. return R.fail("修改角色'" + role.getRoleName() + "'失败,角色权限已存在");
  99. }
  100. if (roleService.updateRole(role) > 0) {
  101. // 更新缓存用户权限
  102. LoginUser loginUser = getLoginUser();
  103. SysUser sysUser = userService.selectUserById(loginUser.getUserId());
  104. if (ObjectUtil.isNotNull(sysUser) && !LoginHelper.isAdmin()) {
  105. loginUser.setMenuPermission(permissionService.getMenuPermission(sysUser));
  106. LoginHelper.setLoginUser(loginUser);
  107. }
  108. return R.ok();
  109. }
  110. return R.fail("修改角色'" + role.getRoleName() + "'失败,请联系管理员");
  111. }
  112. /**
  113. * 修改保存数据权限
  114. */
  115. @SaCheckPermission("system:role:edit")
  116. @Log(title = "角色管理", businessType = BusinessType.UPDATE)
  117. @PutMapping("/dataScope")
  118. public R<Void> dataScope(@RequestBody SysRole role) {
  119. roleService.checkRoleAllowed(role);
  120. roleService.checkRoleDataScope(role.getRoleId());
  121. return toAjax(roleService.authDataScope(role));
  122. }
  123. /**
  124. * 状态修改
  125. */
  126. @SaCheckPermission("system:role:edit")
  127. @Log(title = "角色管理", businessType = BusinessType.UPDATE)
  128. @PutMapping("/changeStatus")
  129. public R<Void> changeStatus(@RequestBody SysRole role) {
  130. roleService.checkRoleAllowed(role);
  131. roleService.checkRoleDataScope(role.getRoleId());
  132. return toAjax(roleService.updateRoleStatus(role));
  133. }
  134. /**
  135. * 删除角色
  136. *
  137. * @param roleIds 角色ID串
  138. */
  139. @SaCheckPermission("system:role:remove")
  140. @Log(title = "角色管理", businessType = BusinessType.DELETE)
  141. @DeleteMapping("/{roleIds}")
  142. public R<Void> remove(@PathVariable Long[] roleIds) {
  143. return toAjax(roleService.deleteRoleByIds(roleIds));
  144. }
  145. /**
  146. * 获取角色选择框列表
  147. */
  148. @SaCheckPermission("system:role:query")
  149. @GetMapping("/optionselect")
  150. public R<List<SysRole>> optionselect() {
  151. return R.ok(roleService.selectRoleAll());
  152. }
  153. /**
  154. * 查询已分配用户角色列表
  155. */
  156. @SaCheckPermission("system:role:list")
  157. @GetMapping("/authUser/allocatedList")
  158. public TableDataInfo<SysUser> allocatedList(SysUser user, PageQuery pageQuery) {
  159. return userService.selectAllocatedList(user, pageQuery);
  160. }
  161. /**
  162. * 查询未分配用户角色列表
  163. */
  164. @SaCheckPermission("system:role:list")
  165. @GetMapping("/authUser/unallocatedList")
  166. public TableDataInfo<SysUser> unallocatedList(SysUser user, PageQuery pageQuery) {
  167. return userService.selectUnallocatedList(user, pageQuery);
  168. }
  169. /**
  170. * 取消授权用户
  171. */
  172. @SaCheckPermission("system:role:edit")
  173. @Log(title = "角色管理", businessType = BusinessType.GRANT)
  174. @PutMapping("/authUser/cancel")
  175. public R<Void> cancelAuthUser(@RequestBody SysUserRole userRole) {
  176. return toAjax(roleService.deleteAuthUser(userRole));
  177. }
  178. /**
  179. * 批量取消授权用户
  180. *
  181. * @param roleId 角色ID
  182. * @param userIds 用户ID串
  183. */
  184. @SaCheckPermission("system:role:edit")
  185. @Log(title = "角色管理", businessType = BusinessType.GRANT)
  186. @PutMapping("/authUser/cancelAll")
  187. public R<Void> cancelAuthUserAll(Long roleId, Long[] userIds) {
  188. return toAjax(roleService.deleteAuthUsers(roleId, userIds));
  189. }
  190. /**
  191. * 批量选择用户授权
  192. *
  193. * @param roleId 角色ID
  194. * @param userIds 用户ID串
  195. */
  196. @SaCheckPermission("system:role:edit")
  197. @Log(title = "角色管理", businessType = BusinessType.GRANT)
  198. @PutMapping("/authUser/selectAll")
  199. public R<Void> selectAuthUserAll(Long roleId, Long[] userIds) {
  200. roleService.checkRoleDataScope(roleId);
  201. return toAjax(roleService.insertAuthUsers(roleId, userIds));
  202. }
  203. /**
  204. * 获取对应角色部门树列表
  205. *
  206. * @param roleId 角色ID
  207. */
  208. @SaCheckPermission("system:role:list")
  209. @GetMapping(value = "/deptTree/{roleId}")
  210. public R<Map<String, Object>> roleDeptTreeselect(@PathVariable("roleId") Long roleId) {
  211. Map<String, Object> ajax = new HashMap<>();
  212. ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
  213. ajax.put("depts", deptService.selectDeptTreeList(new SysDept()));
  214. return R.ok(ajax);
  215. }
  216. }