package com.usky.controller.sys; import com.usky.constant.Constant; import com.usky.entity.sys.SysRoleDTO; import com.usky.entity.sys.SysUserRoleDTO; import com.usky.entity.sys.vo.SysDeptVO; import com.usky.entity.sys.vo.SysRoleVO; import com.usky.service.sys.RoleService; import com.usky.service.sys.user.UserService; import com.usky.utils.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; /** * @author laowo * @version v1.0 * @date 2021/8/27 14:37 * @description TODO **/ import java.util.List; @Api(tags = "系统-角色管理") @RestController @RequestMapping("sys/role") public class RoleController { private String prefix = "system/role"; @Autowired private RoleService roleService; @Autowired private UserService userService; @RequiresPermissions("system:role:view") @GetMapping() @ApiOperation(value = "页面权限") public String role() { return prefix + "/role"; } @ApiOperation(value = "角色查询-分页") @PostMapping("list") @RequiresPermissions("system:role:list") @ApiImplicitParams({ @ApiImplicitParam(name = "roleName", value = "角色名称", required = false, paramType = "query"), @ApiImplicitParam(name = "status", value = "角色状态 0正常 1 停用", required = false, paramType = "query"), @ApiImplicitParam(name = "startTime", value = "开始时间", required = false, paramType = "query"), @ApiImplicitParam(name = "endTime", value = "结束时间", required = false, paramType = "query"), @ApiImplicitParam(name = "pageSize", value = "页数据条数", required = false, paramType = "query"), @ApiImplicitParam(name = "pageNo", value = "当前页", required = false, paramType = "query"), }) public Page list( @RequestParam(value = "roleName", required = false) String roleName, @RequestParam(value = "status", required = false) String status, @RequestParam(value = "startTime", required = false) String startTime, @RequestParam(value = "endTime", required = false) String endTime, @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo) { Page data = roleService.list(new SysDeptVO(), roleName, status, startTime, endTime, pageSize, pageNo); return data; } @ApiOperation(value = "角色查询-全部") @PostMapping("listAll") @RequiresPermissions("system:role:list") public Result> list() { List roleVOList = roleService.querRoleList(new SysRoleVO()); return Result.OK(roleVOList); } /** * 新增保存角色 */ @ApiOperation(value = "角色新增") @RequiresPermissions("system:role:add") @PostMapping("/add") @ResponseBody @ApiImplicitParams({ @ApiImplicitParam(name = "roleName", value = "角色名称", required = true, paramType = "query"), @ApiImplicitParam(name = "menuIds", value = "菜单组", required = false, paramType = "query"), @ApiImplicitParam(name = "deptIds", value = "部门", required = false, paramType = "query"), @ApiImplicitParam(name = "roleKey", value = "角色权限字符", required = true, paramType = "query"), @ApiImplicitParam(name = "roleSort", value = "排序", required = true, paramType = "query"), @ApiImplicitParam(name = "dataScope", value = "数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4本部门及以下数据权限)", required = true, paramType = "query"), @ApiImplicitParam(name = "status", value = "角色状态(0正常 1停用)", required = true, paramType = "query"), @ApiImplicitParam(name = "remark", value = "备注", required = false, paramType = "query"), }) public Result addSave( @RequestParam("roleName") String roleName, @RequestParam(value = "menuIds", required = false) Integer[] menuIds, @RequestParam(value = "deptIds", required = false) Integer[] deptIds, @RequestParam("roleKey") String roleKey, @RequestParam("roleSort") Integer roleSort, @RequestParam("dataScope") String dataScope, @RequestParam("status") String status, @RequestParam(value = "remark", required = false) String remark ) { //新增角色名称校验 SysRoleVO roleVO = new SysRoleVO(); roleVO.setRoleName(roleName); roleVO.setRoleKey(roleKey); roleVO.setRoleSort(roleSort); roleVO.setDataScope(dataScope); roleVO.setStatus(status); roleVO.setRemark(remark); roleVO.setMenuIds(menuIds); roleVO.setDeptIds(deptIds); SysRoleDTO roleDTO = roleService.queryRoleByName(roleVO); if (roleDTO != null) { return Result.error("角色名称不能重复!"); } //权限字符校验 SysRoleDTO roleKeyDto = roleService.queryRoleByKey(roleVO); if (roleKeyDto != null) { return Result.error("权限字符不能重复!"); } AuthorizationUtils.clearAllCachedAuthorizationInfo(); roleService.addRole(roleVO); return Result.OK(); } @ApiOperation(value = "角色信息修改") @RequiresPermissions("system:role:edit") @PostMapping("/edit") @ResponseBody @ApiImplicitParams({ @ApiImplicitParam(name = "roleId", value = "角色id", required = true, paramType = "query"), @ApiImplicitParam(name = "roleName", value = "角色名称", required = true, paramType = "query"), @ApiImplicitParam(name = "menuIds", value = "菜单组", required = false, paramType = "query"), @ApiImplicitParam(name = "deptIds", value = "部门", required = false, paramType = "query"), @ApiImplicitParam(name = "roleKey", value = "角色权限字符", required = true, paramType = "query"), @ApiImplicitParam(name = "roleSort", value = "排序", required = true, paramType = "query"), @ApiImplicitParam(name = "dataScope", value = "数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4本部门及以下数据权限)", required = true, paramType = "query"), @ApiImplicitParam(name = "status", value = "角色状态(0正常 1停用)", required = true, paramType = "query"), @ApiImplicitParam(name = "remark", value = "备注", required = false, paramType = "query"), }) public Result edit( @RequestParam("roleName") String roleName, @RequestParam("roleId") Integer roleId, @RequestParam(value = "menuIds", required = false) Integer[] menuIds, @RequestParam(value = "deptIds", required = false) Integer[] deptIds, @RequestParam("roleKey") String roleKey, @RequestParam("roleSort") Integer roleSort, @RequestParam("dataScope") String dataScope, @RequestParam("status") String status, @RequestParam(value = "remark", required = false) String remark ) { //新增角色名称校验 SysRoleVO roleVO = new SysRoleVO(); roleVO.setRoleName(roleName); roleVO.setRoleKey(roleKey); roleVO.setRoleId(roleId); roleVO.setRoleSort(roleSort); roleVO.setDataScope(dataScope); roleVO.setStatus(status); roleVO.setRemark(remark); roleVO.setMenuIds(menuIds); roleVO.setDeptIds(deptIds); SysRoleDTO roleDTO = roleService.queryRoleByName(roleVO); if (roleDTO != null) { return Result.error("角色名称不能重复!"); } //权限字符校验 SysRoleDTO roleKeyDto = roleService.queryRoleByKey(roleVO); if (roleKeyDto != null) { return Result.error("权限字符不能重复!"); } AuthorizationUtils.clearAllCachedAuthorizationInfo(); roleService.edit(roleVO); return Result.OK(); } @ApiOperation(value = "角色删除") @RequiresPermissions("system:role:remove") @PostMapping("/remove") @ResponseBody @ApiImplicitParams({ @ApiImplicitParam(name = "roleId", value = "角色id", required = true, paramType = "query")}) public Result remove(@RequestParam("roleId") Integer roleId) { List sysUserRoleDTOS = userService.queryUserByRoleId(roleId); if (ListUtil.isNotBlank(sysUserRoleDTOS)) { return Result.error("角色已被分配无法删除"); } userService.remove(roleId); return Result.OK(); } }