Browse Source

fix:用户属性更改需存储DB

wangbo 2 years ago
parent
commit
2d310b0d2f

+ 6 - 4
smsb-customer-manager-adapter/src/main/java/com/inspur/customer/web/controller/keyclaok/KeycloakUserController.java

@@ -169,15 +169,17 @@ public class KeycloakUserController {
     @PutMapping("/keycloak/users/attribute")
     public Response updateUserAttribute(@RequestHeader String userId , @RequestBody UserRepresentation representation){
         Map<String, List<String>> userAttribute = representation.getAttributes();
+        KeycloakUserCO userCO = new KeycloakUserCO();
         if(userAttribute != null){
-            KeycloakUserCO userCO = new KeycloakUserCO();
-            userCO.setEmail(representation.getEmail());
             userCO.setPhone(userAttribute.get("phone"));
             userCO.setWechat(userAttribute.get("wechat"));
             userCO.setWechatApplet(userAttribute.get("wechat-applet-openid"));
-            userCO.setId(userId);
-            userService.updateUserAttribute(userCO);
         }
+        if(representation.getEmail() != null){
+            userCO.setEmail(representation.getEmail());
+        }
+        userCO.setId(userId);
+        userService.updateUserAttribute(userCO);
         return keycloakService.updateUser(userId, representation, Constant.RESET_ATTRIBUTE);
     }
 

+ 4 - 4
smsb-customer-manager-app/src/main/java/com/inspur/customer/service/org/SmsbDepartmentUserServiceImpl.java

@@ -226,10 +226,10 @@ public class SmsbDepartmentUserServiceImpl extends ServiceImpl<SmsbDepartmentUse
         }
         log.info("开始更新用户表属性:{}",userCO);
         return super.update(new LambdaUpdateWrapper<>(SmsbDepartmentUserDO.class)
-            .set(SmsbDepartmentUserDO::getWechat , userCO.getWechat())
-            .set(SmsbDepartmentUserDO::getWechatApplet , userCO.getWechatAppletOpenId())
-            .set(SmsbDepartmentUserDO::getPhone , userCO.getPhone())
-            .set(SmsbDepartmentUserDO::getEmail , userCO.getEmail())
+            .set(userCO.getWechat() != null,SmsbDepartmentUserDO::getWechat , userCO.getWechat())
+            .set(userCO.getWechatAppletOpenId() != null,SmsbDepartmentUserDO::getWechatApplet , userCO.getWechatAppletOpenId())
+            .set(userCO.getPhone() != null,SmsbDepartmentUserDO::getPhone , userCO.getPhone())
+            .set(userCO.getEmail() != null,SmsbDepartmentUserDO::getEmail , userCO.getEmail())
             .eq(StringUtils.isNotBlank(userCO.getUsername()) ,SmsbDepartmentUserDO::getUserName , userCO.getUsername())
             .eq(StringUtils.isNotBlank(userCO.getId()) ,SmsbDepartmentUserDO::getUserId , userCO.getId()));
     }