进销存系统_用户角色分配(12)

Posted 上善若水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进销存系统_用户角色分配(12)相关的知识,希望对你有一定的参考价值。

一、用户角色分配

1.1、用户角色分配界面原型

  • 添加用户记录
  • 更新用户记录

1.2、用户角色分配实现流程

  • 添加用户-角色分配
  • 更新用户-角色分配
  • 代码

RoleServiceImpl.java

    @Override
    public List<Map<String, Object>> queryAllRoles(Integer userId) {
        return this.baseMapper.queryAllRoles(userId);
    }

UserServiceImpl.java

   /**
     * 保存用户对象
     * @param user 用户对象
     */
    @Override
    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
    public void saveUser(User user) {
        /**
         * 用户名
         *   非空  不可重复
         * 用户密码默认123456
         * 用户默认有效
         */
        AssertUtil.isTrue(StringUtils.isBlank(user.getUsername()),"用户名不能为空!");
        AssertUtil.isTrue(null != this.findUserByUserName(user.getUsername()),"用户名已存在!");
        user.setPassword(passwordEncoder.encode("123456"));
        user.setIsDel(0);
        AssertUtil.isTrue(!(this.save(user)),"用户记录添加失败!");
        // 重新查询用户记录
        user = this.findUserByUserName(user.getUsername());
        /**
         * 给用户分配角色
         */
        relationUserRole(user.getId(),user.getRoleIds());
    }

    private void relationUserRole(Integer userId, String roleIds) {
        /**
         * 核心表 t_user_role
         *    添加时
         *      如果角色记录存在  执行批量添加即可
         *    更新时
         *      如果用户存在原始角色记录
         *         如果存在  直接删除原来用户角色记录即可  重新添加新的用户角色记录
         *         如果不存在  直接执行添加即可
         *
         *
         *  实现思路
         *     首先查询用户原始分配角色
         *        如果存在原始用户角色记录  直接删除原来用户角色记录即可(根据用户id)  然后重新添加新的用户角色记录
         *        如果不存在
         *            直接执行批量添加即可
         */
        int count = userRoleService.count(new QueryWrapper<UserRole>().eq("user_id", userId));
        if(count > 0){
            AssertUtil.isTrue(!(userRoleService.remove(new QueryWrapper<UserRole>().eq("user_id",userId))),"用户角色分配失败!");
        }
        if(StringUtils.isNotBlank(roleIds)){
            /**
             * 1,2,3,4
             */
            List<UserRole> userRoles = new ArrayList<>();
            for (String s : roleIds.split(",")){
                UserRole userRole = new UserRole();
                userRole.setUserId(userId);
                userRole.setRoleId(Integer.parseInt(s));
                userRoles.add(userRole);
            }
            AssertUtil.isTrue(!(userRoleService.saveBatch(userRoles)),"用户角色分配失败!");
        }

    }

    /**
     * 更新用户对象
     * @param user 用户对象
     */
    @Override
    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
    public void updateUser(User user) {
        /**
         * 用户名
         *    非空  不可重复
         */
        AssertUtil.isTrue(StringUtils.isBlank(user.getUsername()),"用户名不能为空!");
        User tempUser = this.findUserByUserName(user.getUsername());
        AssertUtil.isTrue(null != tempUser && !(tempUser.getId().equals(user.getId())),"用户名已存在!");
        relationUserRole(user.getId(),user.getRoleIds());
        AssertUtil.isTrue(!(this.updateById(user)),"用户记录更新失败!");

    }

    @Override
    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
    public void deleteUser(Integer[] ids) {
        AssertUtil.isTrue(null == ids || ids.length == 0,"请选择待删除的记录id!");

        int count = userRoleService.count(new QueryWrapper<UserRole>().in("user_id", Arrays.asList(ids)));
        if(count > 0){
            AssertUtil.isTrue(!(userRoleService.remove(new QueryWrapper<UserRole>().in("user_id",Arrays.asList(ids)))),"用户记录删除失败!");
        }

        List<User> users = new ArrayList<>();
        for (Integer id : ids) {
            User tempUser = this.getById(id);
            tempUser.setIsDel(1);
            users.add(tempUser);
        }
        AssertUtil.isTrue(!(this.updateBatchById(users)),"用户记录删除失败!");
    }

以上是关于进销存系统_用户角色分配(12)的主要内容,如果未能解决你的问题,请参考以下文章

进销存系统_系统权限管理-用户&角色管理

进销存系统_系统权限管理-用户&角色管理

进销存系统_角色和资源管理(13)

进销存系统_菜单管理(14)

进销存系统_用户管理(10)

进销存系统_用户信息更新&密码修改