编辑用户信息

由于用户的角色信息可能比较多,难以判断我们到底删除了哪些,添加了哪些,所以一开始就先山删除该用户的所有角色,再充型给该用户赋角色。

SysUserController

    /**
     * 修改管理员信息
     * @param sysUser 管理员对象
     * @return
     */
    @ApiOperation("修改管理员信息")
    @PutMapping
    @PreAuthorize("hasAuthority('sys:user:update')")
    public Result<String> modifySysUserInfo(@RequestBody SysUser sysUser) {
        Integer count = sysUserService.modifySysUserInfo(sysUser);
        return Result.handle(count>0);
    }

SysUserServiceImpl

    /**
     * 修改管理员信息
     *  1.删除原有的管理员与角色关系记录
     *  2.添加新的管理员与角色关系记录
     *  3.修改管理员信息
     * @param sysUser
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Integer modifySysUserInfo(SysUser sysUser) {
        // 获取管理员标识
        Long userId = sysUser.getUserId();
        // 删除原有的管理员与角色关系记录
        sysUserRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>()
                .eq(SysUserRole::getUserId,userId)
        );
        // 添加管理员与角色关系记录
        // 获取管理员的角色id集合
        List<Long> roleIdList = sysUser.getRoleIdList();
        // 判断是否有值
        if (CollectionUtil.isNotEmpty(roleIdList) && roleIdList.size() != 0) {
            // 创建管理员与角色关系的集合
            List<SysUserRole> sysUserRoleList = new ArrayList<>();
            // 循环遍历角色id集合
            roleIdList.forEach(roleId -> {
                // 创建管理员与角色的关系
                SysUserRole sysUserRole = new SysUserRole();
                sysUserRole.setUserId(userId);
                sysUserRole.setRoleId(roleId);
                    /*// 新增管理员与角色的关系
                    注意:不建议在循环中操作数据库,大家尽量需要避免在循环中操作数据库
                    sysUserRoleMapper.insert(sysUserRole);*/
                sysUserRoleList.add(sysUserRole);
            });
            // 批量添加管理员与角色的关系
            sysUserRoleService.saveBatch(sysUserRoleList);
        }
        // 修改管理员信息
        // 获取新密码(如果有值:说明管理员修改了密码,如果没有值:说明原密码不变)
        String newPassword = sysUser.getPassword();
        // 判断是否有值
        if (StringUtils.hasText(newPassword)) {
            // 有值:说明需要修改原密码
            sysUser.setPassword(passwordEncoder.encode(newPassword));
        }
        return sysUserMapper.updateById(sysUser);
    }

在spring boot的配置文件bootstrap.yml修改全局字段策略:更新时字段不能为空

mybatis-plus.global-config.db-config.update-strategy=not_null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值