技术使用:使用了Java 8引入的Stream API以及Optional类。这些特性用于简化集合的处理和减少空指针异常。
List<ResourceInfoDto> authData = chatBase.getData();String baseName = dto.getBaseName();Optional<ResourceInfoDto> authWithResourceCode = authData.stream().filter(auth -> baseName.equals(auth.getResourcecode())).findFirst();if (authWithResourceCode.isPresent()) {//拥有此库的权限,执行逻辑}else {//无权限logger.warn("卡号为{}的用户越权访问{}知识库",dto.getStaffCode(),dto.getBaseName());return converseHandleWrapper.handle2("您无权访问此知识库");}
代码解析:
- **authData.stream():**将authData列表转化为Stream,以便于进行流处理。
- **filter(auth -> baseName.equals(auth.getResourcecode())):**使用filter方法筛选出所有ResourceInfoDto对象中resourcecode与baseName相等的元素。
- **findFirst():**尝试找到流中的第一个元素。它返回一个Optional对象,该对象可能包含流中的第一个元素,也可能为空。
- 通过调用isPresent()方法检查Optional对象是否包含一个值。如果包含一个值,即找到了与给定baseName匹配的ResourceInfoDto对象,那么执行if语句块中的代码。如果没有找到匹配的对象,执行else语句块的代码。