在点击“编辑”按钮的时候,第一件事是到后端查询该角色的相关信息,返回给前端进行显示。第二部,当用户编辑好信息后,点击"确认"按钮,才会调用后端编写的modify方法。
查询并返回前端代码
前端发送的请求---------【http://localhost/manager-service/sys/role/info/{roleId}】
SysRoleController--注意这里前端发送的是get请求,携带任何参数/info/{roleId}
/**
* 根据标识查询角色详情
* @param roleId 角色标识
* @return
*/
@ApiOperation("根据标识查询角色详情")
@GetMapping("info/{roleId}")
@PreAuthorize("hasAuthority('sys:role:info')")
public Result<SysRole> loadSysRoleInfo(@PathVariable Long roleId) {
SysRole sysRole = sysRoleService.querySysRoleInfoByRoleId(roleId);
return Result.success(sysRole);
}
SysRoleServiceImpl
@Override
public SysRole querySysRoleInfoByRoleId(Long roleId) {
// 根据角色标识查询角色详情
SysRole sysRole = sysRoleMapper.selectById(roleId);
// 根据角色标识查询角色与权限关系集合
List<SysRoleMenu> sysRoleMenuList = sysRoleMenuMapper.selectList(new LambdaQueryWrapper<SysRoleMenu>()
.eq(SysRoleMenu::getRoleId, roleId)
);
// 判断是否有值
if (CollectionUtil.isNotEmpty(sysRoleMenuList) && sysRoleMenuList.size() != 0) {
// 说明角色与权限关系有值
// 从角色与权限关系集合中获取权限id集合
List<Long> menuIdList = sysRoleMenuList.stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList());
sysRole.setMenuIdList(menuIdList);
}
return sysRole;
}
修改信息方法
前端发送的请求---------【http://localhost/manager-service/sys/role】
SysRoleController--注意这里前端发送的是put请求,而且不带任何参数
/**
* 修改角色信息
* @param sysRole 角色对象
* @return
*/
@ApiOperation("修改角色信息")
@PutMapping
@PreAuthorize("hasAuthority('sys:role:update')")
public Result<String> modifySysRole(@RequestBody SysRole sysRole) {
Boolean updated = sysRoleService.modifySysRole(sysRole);
return Result.handle(updated);
}
SysRoleServiceImpl
@Override
@CacheEvict(key = ManagerConstants.SYS_ALL_ROLE_KEY)
@Transactional(rollbackFor = Exception.class)
public Boolean modifySysRole(SysRole sysRole) {
// 获取角色标识
Long roleId = sysRole.getRoleId();
// 删除角色原有的权限集合
sysRoleMenuMapper.delete(new LambdaQueryWrapper<SysRoleMenu>()
.eq(SysRoleMenu::getRoleId, roleId)
);
// 获取角色对应的权限id集合,这个权限集合是从前端传递过来的,是新
List<Long> menuIdList = sysRole.getMenuIdList();
// 创建角色与权限关系集合对象
List<SysRoleMenu> sysRoleMenuList = new ArrayList<>();
// 判断是否有值
if (CollectionUtil.isNotEmpty(menuIdList) && menuIdList.size() != 0) {
// 循环遍历权限id集合
menuIdList.forEach(menuId -> {
// 创建角色与权限关系记录
SysRoleMenu sysRoleMenu = new SysRoleMenu();
sysRoleMenu.setRoleId(roleId);
sysRoleMenu.setMenuId(menuId);
// 收集角色与权限的关系记录
sysRoleMenuList.add(sysRoleMenu);
});
// 批量添加角色与权限关系集合
sysRoleMenuService.saveBatch(sysRoleMenuList);
}
// 更新角色信息
return sysRoleMapper.updateById(sysRole)>0;
}