Explorar el Código

fix: 修改获取 attributes 为空的问题,进行校验,为空时跳过

linwenhua hace 3 años
padre
commit
6f02bede8b

+ 12 - 6
smsb-customer-manager-app/src/main/java/com/inspur/customer/service/keycloak/KeycloakServiceImpl.java

@@ -51,9 +51,12 @@ public class KeycloakServiceImpl implements KeycloakService {
             KeycloakUserCO keycloakUserCo = new KeycloakUserCO();
             keycloakUserCo.setId(user.getId());
             keycloakUserCo.setEmail(user.getEmail());
-            keycloakUserCo.setPhone(user.getAttributes().get("phone"));
-            keycloakUserCo.setWechat(user.getAttributes().get("wechat"));
-            keycloakUserCo.setWechatApplet(user.getAttributes().get("wechat-applet-openid"));
+            Map<String, List<String>> attributes = user.getAttributes();
+            if (attributes != null) {
+                keycloakUserCo.setPhone(attributes.get("phone"));
+                keycloakUserCo.setWechat(attributes.get("wechat"));
+                keycloakUserCo.setWechatApplet(attributes.get("wechat-applet-openid"));
+            }
             keycloakUserCos.add(keycloakUserCo);
         });
         return keycloakUserCos;
@@ -75,9 +78,12 @@ public class KeycloakServiceImpl implements KeycloakService {
                 KeycloakUserCO keycloakUserCo = new KeycloakUserCO();
                 keycloakUserCo.setId(userRepresentation.getId());
                 keycloakUserCo.setEmail(userRepresentation.getEmail());
-                keycloakUserCo.setPhone(userRepresentation.getAttributes().get("phone"));
-                keycloakUserCo.setWechat(userRepresentation.getAttributes().get("wechat"));
-                keycloakUserCo.setWechatApplet(userRepresentation.getAttributes().get("wechat-applet-openid"));
+                Map<String, List<String>> attributes = userRepresentation.getAttributes();
+                if (attributes != null) {
+                    keycloakUserCo.setPhone(attributes.get("phone"));
+                    keycloakUserCo.setWechat(attributes.get("wechat"));
+                    keycloakUserCo.setWechatApplet(attributes.get("wechat-applet-openid"));
+                }
                 keycloakUserCos.add(keycloakUserCo);
             }
         });

+ 2 - 2
smsb-customer-manager-client/src/main/java/com/inspur/customer/service/dto/KeycloakUserCO.java

@@ -25,7 +25,7 @@ public class KeycloakUserCO implements Serializable {
     private String wechat;
 
     private String wechatAppletOpenId;
-    
+
     public void setPhone(@Nullable List<String> phones) {
         if (phones != null && !phones.isEmpty()) {
             phone = phones.get(0);
@@ -45,7 +45,7 @@ public class KeycloakUserCO implements Serializable {
         if (wechatApplets != null && !wechatApplets.isEmpty()) {
             String temp = wechatApplets.get(0);
             if (!temp.contains("{\"")) {
-                wechat = temp;
+                wechatAppletOpenId = temp;
             }
         }
     }