Lambda 表达式应用 权限管理_用户的角色修改

Lambda 表达式应用 权限管理_用户的角色修改

需求

前台发送用户新的角色列表,后台查询出用户原有的角色列表。
1.获取出需增加的角色列表 => 在新角色列表中,但是不在原角色列表中的角色
2.获取出需删除的角色列表 => 在原角色列表中,但是不在新角色列表中的角色

分析

其实是对集合中的元素进行过滤,获取符合条件的元素。

演示代码

package com.mozq.sb.sbmybatis01.coll;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @description:
 * @author: [email protected]
 * @date: 2019/10/18 10:44
 */
public class ListTest {
    public static void main(String[] args) {
        List<Integer> L1 = Arrays.asList(1, 2, 3);
        List<Integer> L2 = Arrays.asList(2, 3, 4);

        //L3 = L1 - (L1 交 L2) 在L1不在L2中的元素
        List<Integer> L3 = L1.stream().filter(e ->!L2.contains(e)).collect(Collectors.toList());
        System.out.println(L3);

        //L4 = L2 - (L1 交 L2) 在L2不在L1集合中的元素
        List<Integer> L4 = L2.stream().filter(e->!L1.contains(e)).collect(Collectors.toList());
        System.out.println(L4);

        //L5 = L1 交 L2 既在L1也在L2集合中的元素
        List<Integer> L5 = L1.stream().filter(e -> L2.contains(e)).collect(Collectors.toList());
        System.out.println(L5);
    }
}

项目代码

@Override
@Transactional
public void updateRolesOfUser(Integer userId, Integer companyId, List<Integer> roleIds) {
    log.info("[为用户修改角色]|入参userId={},companyId={},roleIds={}",userId,companyId,roleIds);
    // [MOZQ_ADD] 检查用户是否是当前砂场的,获取其中属于当前砂厂角色id列表
    List<SysRole> roles = new ArrayList<>();
    if(!roleIds.isEmpty()){
        roles = sysRoleDao.findRolesByRoleIdsAndCompanyIdAndStatus(roleIds, companyId, null);
    }
    List<Integer> checkedRoleIds = roles.stream().map(SysRole::getId).collect(Collectors.toList());
    log.info("[为用户修改角色][检查后属于当前砂厂的角色列表]checkedRoleIds={}",checkedRoleIds);

    //获取用户当前的角色列表
    List<SysRole> rolesOfUser = sysRoleDao.findRolesOfUser(userId, null);
    List<Integer> roleIdsOfUser = new ArrayList<>();
    if(!rolesOfUser.isEmpty()){
        roleIdsOfUser = rolesOfUser.stream().map(SysRole::getId).collect(Collectors.toList());
        log.info("[为用户修改角色][用户当前具有的角色]roleIdsOfUser={}", roleIdsOfUser);
    }
    List<Integer> roleIdsOfUserTemp = roleIdsOfUser;
    //获取真正需要添加的角色列表
    List<Integer> realAddRoleIds = checkedRoleIds.stream().filter(e ->! roleIdsOfUserTemp.contains(e)).collect(Collectors.toList());
    log.info("[为用户修改角色][真正需要添加的角色]realAddRoleIds={}", realAddRoleIds);
    sysUserDao.addRolesToUser(userId,companyId,realAddRoleIds);
    //获取真正需要删除的角色列表
    List<Integer> realDeleteRoIds = roleIdsOfUserTemp.stream().filter(e -> !checkedRoleIds.contains(e)).collect(Collectors.toList());
    log.info("[为用户修改角色][真正需要删除的角色]realDeleteRoIds={}", realDeleteRoIds);
    sysUserDao.deleteRolesFromUser(userId,companyId,realDeleteRoIds);
}

原文地址:https://www.cnblogs.com/mozq/p/11699773.html

时间: 2024-11-09 00:59:53

Lambda 表达式应用 权限管理_用户的角色修改的相关文章

nagios 多用户权限管理---特定用户访问特定主机或服务

nagios 多用户权限管理---特定用户访问特定主机或服务1.nagios安装????????????------------2.添加用户和密码htpasswd?/usr/local/nagios/etc/htpasswd.users?eddy 3.修改配置vim?/usr/local/nagios/etc/cgi.cfguse_authentication=1authorized_for_read_only=eddy 4.添加联系人vi?/usr/local/nagios/etc/objec

java权限管理与用户角色权限设计

java权限管理与用户角色权限设计 实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台计算机都已具备的,如果不建立一个完整的权限检测,那么一个“非法用户”很可能就能通过浏览器轻易访问到B/S系统中的所有功能.因此B/S业务系统都需要有一个或多个权限系统来实现访问权限检测,让经过授权的用户可以正常合法的使用已授权功能,而对那些未经授权的“非法用户”将

Linux权限管理(用户、组、文件管理)

一. Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示. 1. 文件查看类命令cat,tac, head, tail, more, less, ls ,file: -ls : list,列出指定目录下的内容 使用语法:ls [option]- [file]- 参数:-a 显示所有文件,包括隐藏文件: -A 显示除.和..之外的所有文件: -l –long,长葛市列表,即显示文件的详细属性信息: 例:-rw-r--r--. 1 root   root     8957 10月

Linux权限管理及用户与用户组

第一部分:Linux权限管理 一.基本权限 linux权限机制采用UGO模式.其中 u(user)表示所属用户.g(group)表示所属组.o(other)表示除了所属用户.所属组之外的情况. u.g.o 都有读(read).写(write).执行(excute) 三个权限,所以UGO模式是三类九种基本权限. 用命令 ls -l 可列出文件的权限,第一列输出明确了后面的输出(后面一列代表 ugo权限).第一个字母对应的关系: "-"    普通文件 "d"   目录

菜单管理,权限管理,用户管理界面设计

提出问题! 1每个界面需要展示哪些问题? 1.1以哪种方式展示? 每个界面会进行哪些操作? 好了,带着问题进行思考,进行设计 .先来简单的用户管理界面来说,我需要展示用户(管理员)的信息. 方式是:表格形式,需要进行的是对用户的增加,删除,修改 ,模糊查询,以及赋予角色权限. 在菜单管理界面,我需要展示该用户所能操作的菜单详情,分别展示top 菜单 和top 菜单下的子菜单,和菜单项详情 ,在子菜单 的div 内添加 右键事件,在top 里面有一个新增,修改按钮,菜单项详情不可编辑,新增时弹出d

MongoDB用户及权限管理(二):用户管理

一.创建管理员账号 下面开始创建一个帐号,该账号需要有grant权限,即:账号管理的授权权限.注意一点,帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证(auth). > use admin switched to db admin > db.createUser( { user:  "dba", pwd:  "dba", roles:  [ { role: "userAdminAnyDatabase", db: "

9.12 linux下文件的权限管理、用户和组管理

Su 切换用户 查看当前登录的用户:whoami.id 查看当前用户属于哪个组:groups 查看当前计算机中有几个组:cat /etc/group Groupadd 组名  添加组 Groupsdel 组名  删除组 avahi:x:122: colord:x:123: geoclue:x:124: gdm:x:125: abc:x:1000: sambashare:x:126:abc 456:x:1001: 格式:  组名:组密码:GID:当前组下有哪些用户 将123用户添加到456组中:

权限管理禁止用户su - root并记录用户操作记录实验!

本文目的:整理在实验环境中配置的禁止普通用户用su - root来获取root权限的操作记录.实验还添加了history添加用户详细记录,并配置了使用script记录用户操作,和测试用户操作还原的过程. 一.修改禁止su - root权限的配置:1.修改PAM配置文件:#vi /etc/pam.d/su#%PAM-1.0auth            sufficient      pam_rootok.so# Uncomment the following line to implicitly

Oracle数据库用户及权限管理_超越OCP精通Oracle视频课程培训08

课程目标 Oracle视频教程,风哥本套oracle教程培训学习用户的管理/创建/删除/修改,.权限与角色的创建与管理,密码策略180天过期的处理,数据库监控与备份权限的用户等的Oracle数据库用户的日常管理与维护. 适用人群 IT相关从业人员.Oracle数据库技术人员.想加工资的.想升职的都可以. 课程地址: http://edu.51cto.com/course/course_id-6472.html 课程简介 本课程介绍: Oracle视频教程,风哥本套oracle教程培训学习用户的管