SysRoleController.java 8.7 KB

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