码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-10-18 19:24:19      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:find   rda   role   contains   ISE   dao   Collector   print   tor   

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

需求

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

分析

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

演示代码

package com.mozq.sb.sbmybatis01.coll;

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

/**
 * @description:
 * @author: changzhou.xie@yuantiaokj.com
 * @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);
}

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

标签:find   rda   role   contains   ISE   dao   Collector   print   tor   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!