Browse Source

[bug-4395]每次系统更新后都有部分人的账号报错

gaozl 11 months ago
parent
commit
2476988844

+ 14 - 2
ibps-oauth-root/modules/oauth-server2-default/src/main/java/com/lc/ibps/cloud/oauth/server/provider/UserProvider.java

@@ -920,12 +920,24 @@ public class UserProvider extends BaseProvider implements IUserService {
 		List<DefaultPartyRolePo> roles = getRoles(userId); //当前登录用户角色
 		List<DefaultPartyRolePo> rolePos;
 		//主任查看所有
-		rolePos = roles.stream().filter(role -> "主任".equals(role.getRoleType())).collect(Collectors.toList());
+		//rolePos = roles.stream().filter(role -> "主任".equals(role.getRoleType())).collect(Collectors.toList());
+		rolePos = Optional.of(roles)
+				.orElseGet(Collections::emptyList) // 若roles为null,转为空列表
+				.stream()
+				.filter(Objects::nonNull) // 过滤掉role对象为null的情况
+				.filter(role -> "主任".equals(role.getRoleType()))
+				.collect(Collectors.toList());
 		if(rolePos.size() > 0){ //判断是否拥有主任角色
 			return "isMaster";
 		}
 		//负责人查看自己部门
-		rolePos = roles.stream().filter(role -> "负责人".equals(role.getRoleType())).collect(Collectors.toList());
+		//rolePos = roles.stream().filter(role -> "负责人".equals(role.getRoleType())).collect(Collectors.toList());
+		rolePos = Optional.of(roles)
+				.orElseGet(Collections::emptyList)  // 处理roles集合本身为null的情况
+				.stream()
+				.filter(Objects::nonNull)          // 过滤掉集合中的null元素
+				.filter(role -> "负责人".equals(role.getRoleType())) // 安全比较(即使getRoleType()返回null也不会抛NPE)
+				.collect(Collectors.toList());
 		if(rolePos.size() > 0){ //判断是否拥有负责人角色
 			return "isCharger";
 		}