Przeglądaj źródła

Merge branch '84-wb' into '84-integrate'

fix:keycloak移到本地用户表调整



See merge request !44

wangbo 2 lat temu
rodzic
commit
d3ef585e57

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

@@ -28,6 +28,7 @@ import org.keycloak.representations.idm.CredentialRepresentation;
 import org.keycloak.representations.idm.RoleRepresentation;
 import org.keycloak.representations.idm.UserRepresentation;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.lang.Nullable;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.*;
@@ -91,6 +92,7 @@ public class KeycloakUserController {
         return Response.buildSuccess();
     }
 
+    @SysLogIgnore
     @Scheduled(cron = "0 0/10 * * * ?")
     public void askUserOppenId() {
         log.info("update wechat openId");
@@ -164,17 +166,29 @@ public class KeycloakUserController {
     @SmsbMethodLog(description = "更新用户属性" ,business = "用户属性更新")
     @PutMapping("/keycloak/users/attribute")
     public Response updateUserAttribute(@RequestHeader String userId , @RequestBody UserRepresentation representation){
-        KeycloakUserCO userCO = new KeycloakUserCO();
-        userCO.setEmail(representation.getEmail());
         Map<String, List<String>> userAttribute = representation.getAttributes();
         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);
         }
-        userCO.setId(userId);
-        userService.updateUserAttribute(userCO);
         return keycloakService.updateUser(userId, representation, Constant.RESET_ATTRIBUTE);
     }
 
+    public String getWechatAppletOpenId(@Nullable List<String> wechatApplets) {
+        if (wechatApplets != null && !wechatApplets.isEmpty()) {
+            String temp = wechatApplets.get(0);
+            if (!temp.contains("{\"")) {
+                return temp;
+            }
+        }
+        return "";
+    }
+
     @SmsbMethodLog(description = "新增账号",
         business = "添加账号:${smsbUserAdd.username}到部门:${smsbUserAdd.departmentName}")
     @PostMapping("/admin/users")

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

@@ -219,15 +219,12 @@ public class SmsbDepartmentUserServiceImpl extends ServiceImpl<SmsbDepartmentUse
         if(StringUtils.isEmpty(userCO.getId()) && StringUtils.isEmpty(userCO.getUsername())){
             return Boolean.FALSE;
         }
-        if(StringUtils.isEmpty(userCO.getWechat()) && StringUtils.isEmpty(userCO.getWechatAppletOpenId()) &&
-            StringUtils.isEmpty(userCO.getPhone()) && StringUtils.isEmpty(userCO.getEmail())){
-            return Boolean.FALSE;
-        }
+        log.info("开始更新用户表属性:{}",userCO);
         return super.update(new LambdaUpdateWrapper<>(SmsbDepartmentUserDO.class)
-            .set(StringUtils.isNotBlank(userCO.getWechat()) ,SmsbDepartmentUserDO::getWechat , userCO.getWechat())
-            .set(StringUtils.isNotBlank(userCO.getWechatAppletOpenId()) ,SmsbDepartmentUserDO::getWechatApplet , userCO.getWechatAppletOpenId())
-            .set(StringUtils.isNotBlank(userCO.getPhone()) ,SmsbDepartmentUserDO::getPhone , userCO.getPhone())
-            .set(StringUtils.isNotBlank(userCO.getEmail()) ,SmsbDepartmentUserDO::getEmail , userCO.getEmail())
+            .set(SmsbDepartmentUserDO::getWechat , userCO.getWechat())
+            .set(SmsbDepartmentUserDO::getWechatApplet , userCO.getWechatAppletOpenId())
+            .set(SmsbDepartmentUserDO::getPhone , userCO.getPhone())
+            .set(SmsbDepartmentUserDO::getEmail , userCO.getEmail())
             .eq(StringUtils.isNotBlank(userCO.getUsername()) ,SmsbDepartmentUserDO::getUserName , userCO.getUsername())
             .eq(StringUtils.isNotBlank(userCO.getId()) ,SmsbDepartmentUserDO::getUserId , userCO.getId()));
     }