| package com.aps.system.controller; | 
|   | 
| import java.util.List; | 
| import jakarta.servlet.http.HttpServletResponse; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.validation.annotation.Validated; | 
| import org.springframework.web.bind.annotation.DeleteMapping; | 
| import org.springframework.web.bind.annotation.GetMapping; | 
| import org.springframework.web.bind.annotation.PathVariable; | 
| import org.springframework.web.bind.annotation.PostMapping; | 
| import org.springframework.web.bind.annotation.PutMapping; | 
| import org.springframework.web.bind.annotation.RequestBody; | 
| import org.springframework.web.bind.annotation.RequestMapping; | 
| import org.springframework.web.bind.annotation.RestController; | 
| import com.aps.common.core.utils.poi.ExcelUtil; | 
| import com.aps.common.core.web.controller.BaseController; | 
| import com.aps.common.core.web.domain.AjaxResult; | 
| import com.aps.common.core.web.page.TableDataInfo; | 
| import com.aps.common.log.annotation.Log; | 
| import com.aps.common.log.enums.BusinessType; | 
| import com.aps.common.security.annotation.RequiresPermissions; | 
| import com.aps.common.security.utils.SecurityUtils; | 
| import com.aps.system.api.domain.SysDept; | 
| import com.aps.system.api.domain.SysRole; | 
| import com.aps.system.api.domain.SysUser; | 
| import com.aps.system.domain.SysUserRole; | 
| import com.aps.system.service.ISysDeptService; | 
| import com.aps.system.service.ISysRoleService; | 
| import com.aps.system.service.ISysUserService; | 
|   | 
| /** | 
|  * 角色信息 | 
|  *  | 
|  * @author ruoyi | 
|  */ | 
| @RestController | 
| @RequestMapping("/role") | 
| public class SysRoleController extends BaseController | 
| { | 
|     @Autowired | 
|     private ISysRoleService roleService; | 
|   | 
|     @Autowired | 
|     private ISysUserService userService; | 
|   | 
|     @Autowired | 
|     private ISysDeptService deptService; | 
|   | 
|     @RequiresPermissions("system:role:list") | 
|     @GetMapping("/list") | 
|     public TableDataInfo list(SysRole role) | 
|     { | 
|         startPage(); | 
|         List<SysRole> list = roleService.selectRoleList(role); | 
|         return getDataTable(list); | 
|     } | 
|   | 
|     @Log(title = "角色管理", businessType = BusinessType.EXPORT) | 
|     @RequiresPermissions("system:role:export") | 
|     @PostMapping("/export") | 
|     public void export(HttpServletResponse response, SysRole role) | 
|     { | 
|         List<SysRole> list = roleService.selectRoleList(role); | 
|         ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class); | 
|         util.exportExcel(response, list, "角色数据"); | 
|     } | 
|   | 
|     /** | 
|      * 根据角色编号获取详细信息 | 
|      */ | 
|     @RequiresPermissions("system:role:query") | 
|     @GetMapping(value = "/{roleId}") | 
|     public AjaxResult getInfo(@PathVariable Long roleId) | 
|     { | 
|         roleService.checkRoleDataScope(roleId); | 
|         return success(roleService.selectRoleById(roleId)); | 
|     } | 
|   | 
|     /** | 
|      * 新增角色 | 
|      */ | 
|     @RequiresPermissions("system:role:add") | 
|     @Log(title = "角色管理", businessType = BusinessType.INSERT) | 
|     @PostMapping | 
|     public AjaxResult add(@Validated @RequestBody SysRole role) | 
|     { | 
|         if (!roleService.checkRoleNameUnique(role)) | 
|         { | 
|             return error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在"); | 
|         } | 
|         else if (!roleService.checkRoleKeyUnique(role)) | 
|         { | 
|             return error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在"); | 
|         } | 
|         role.setCreateBy(SecurityUtils.getUsername()); | 
|         return toAjax(roleService.insertRole(role)); | 
|   | 
|     } | 
|   | 
|     /** | 
|      * 修改保存角色 | 
|      */ | 
|     @RequiresPermissions("system:role:edit") | 
|     @Log(title = "角色管理", businessType = BusinessType.UPDATE) | 
|     @PutMapping | 
|     public AjaxResult edit(@Validated @RequestBody SysRole role) | 
|     { | 
|         roleService.checkRoleAllowed(role); | 
|         roleService.checkRoleDataScope(role.getRoleId()); | 
|         if (!roleService.checkRoleNameUnique(role)) | 
|         { | 
|             return error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在"); | 
|         } | 
|         else if (!roleService.checkRoleKeyUnique(role)) | 
|         { | 
|             return error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在"); | 
|         } | 
|         role.setUpdateBy(SecurityUtils.getUsername()); | 
|         return toAjax(roleService.updateRole(role)); | 
|     } | 
|   | 
|     /** | 
|      * 修改保存数据权限 | 
|      */ | 
|     @RequiresPermissions("system:role:edit") | 
|     @Log(title = "角色管理", businessType = BusinessType.UPDATE) | 
|     @PutMapping("/dataScope") | 
|     public AjaxResult dataScope(@RequestBody SysRole role) | 
|     { | 
|         roleService.checkRoleAllowed(role); | 
|         roleService.checkRoleDataScope(role.getRoleId()); | 
|         return toAjax(roleService.authDataScope(role)); | 
|     } | 
|   | 
|     /** | 
|      * 状态修改 | 
|      */ | 
|     @RequiresPermissions("system:role:edit") | 
|     @Log(title = "角色管理", businessType = BusinessType.UPDATE) | 
|     @PutMapping("/changeStatus") | 
|     public AjaxResult changeStatus(@RequestBody SysRole role) | 
|     { | 
|         roleService.checkRoleAllowed(role); | 
|         roleService.checkRoleDataScope(role.getRoleId()); | 
|         role.setUpdateBy(SecurityUtils.getUsername()); | 
|         return toAjax(roleService.updateRoleStatus(role)); | 
|     } | 
|   | 
|     /** | 
|      * 删除角色 | 
|      */ | 
|     @RequiresPermissions("system:role:remove") | 
|     @Log(title = "角色管理", businessType = BusinessType.DELETE) | 
|     @DeleteMapping("/{roleIds}") | 
|     public AjaxResult remove(@PathVariable Long[] roleIds) | 
|     { | 
|         return toAjax(roleService.deleteRoleByIds(roleIds)); | 
|     } | 
|   | 
|     /** | 
|      * 获取角色选择框列表 | 
|      */ | 
|     @RequiresPermissions("system:role:query") | 
|     @GetMapping("/optionselect") | 
|     public AjaxResult optionselect() | 
|     { | 
|         return success(roleService.selectRoleAll()); | 
|     } | 
|     /** | 
|      * 查询已分配用户角色列表 | 
|      */ | 
|     @RequiresPermissions("system:role:list") | 
|     @GetMapping("/authUser/allocatedList") | 
|     public TableDataInfo allocatedList(SysUser user) | 
|     { | 
|         startPage(); | 
|         List<SysUser> list = userService.selectAllocatedList(user); | 
|         return getDataTable(list); | 
|     } | 
|   | 
|     /** | 
|      * 查询未分配用户角色列表 | 
|      */ | 
|     @RequiresPermissions("system:role:list") | 
|     @GetMapping("/authUser/unallocatedList") | 
|     public TableDataInfo unallocatedList(SysUser user) | 
|     { | 
|         startPage(); | 
|         List<SysUser> list = userService.selectUnallocatedList(user); | 
|         return getDataTable(list); | 
|     } | 
|   | 
|     /** | 
|      * 取消授权用户 | 
|      */ | 
|     @RequiresPermissions("system:role:edit") | 
|     @Log(title = "角色管理", businessType = BusinessType.GRANT) | 
|     @PutMapping("/authUser/cancel") | 
|     public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole) | 
|     { | 
|         return toAjax(roleService.deleteAuthUser(userRole)); | 
|     } | 
|   | 
|     /** | 
|      * 批量取消授权用户 | 
|      */ | 
|     @RequiresPermissions("system:role:edit") | 
|     @Log(title = "角色管理", businessType = BusinessType.GRANT) | 
|     @PutMapping("/authUser/cancelAll") | 
|     public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds) | 
|     { | 
|         return toAjax(roleService.deleteAuthUsers(roleId, userIds)); | 
|     } | 
|   | 
|     /** | 
|      * 批量选择用户授权 | 
|      */ | 
|     @RequiresPermissions("system:role:edit") | 
|     @Log(title = "角色管理", businessType = BusinessType.GRANT) | 
|     @PutMapping("/authUser/selectAll") | 
|     public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds) | 
|     { | 
|         roleService.checkRoleDataScope(roleId); | 
|         return toAjax(roleService.insertAuthUsers(roleId, userIds)); | 
|     } | 
|   | 
|     /** | 
|      * 获取对应角色部门树列表 | 
|      */ | 
|     @RequiresPermissions("system:role:query") | 
|     @GetMapping(value = "/deptTree/{roleId}") | 
|     public AjaxResult deptTree(@PathVariable("roleId") Long roleId) | 
|     { | 
|         AjaxResult ajax = AjaxResult.success(); | 
|         ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId)); | 
|         ajax.put("depts", deptService.selectDeptTreeList(new SysDept())); | 
|         return ajax; | 
|     } | 
| } |