修改角色的相关信息

在点击“编辑”按钮的时候,第一件事是到后端查询该角色的相关信息,返回给前端进行显示。第二部,当用户编辑好信息后,点击"确认"按钮,才会调用后端编写的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;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值