Bladeren bron

Merge branch '84-integrate' into 'develop'

develop-20221028

1. 修复 keycloak client 初始化失败问题

See merge request !16

linwenhua 3 jaren geleden
bovenliggende
commit
6c93904ac2

+ 10 - 11
smsb-customer-manager-adapter/pom.xml

@@ -15,30 +15,29 @@
         <dependency>
             <groupId>com.inspur</groupId>
             <artifactId>smsb-customer-manager-client</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.inspur</groupId>
+            <artifactId>smsb-event-logging-client</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-dubbo</artifactId>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-spring-boot-starter</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-redis</artifactId>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
         </dependency>
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.inspur</groupId>
-            <artifactId>smsb-event-logging-client</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
-            <scope>compile</scope>
-        </dependency>
     </dependencies>
 
 </project>

+ 6 - 2
smsb-customer-manager-aop/pom.xml

@@ -32,8 +32,12 @@
             <optional>true</optional>
         </dependency>
         <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-dubbo</artifactId>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
         </dependency>
         <dependency>
             <groupId>jakarta.servlet</groupId>

+ 21 - 26
smsb-customer-manager-app/pom.xml

@@ -30,53 +30,48 @@
 
         <!-- dubbo -->
         <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-dubbo</artifactId>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
         </dependency>
 
         <!--keycloak-->
         <dependency>
             <groupId>org.keycloak</groupId>
             <artifactId>keycloak-admin-client</artifactId>
-            <version>16.1.0</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.jboss.resteasy</groupId>
+                    <artifactId>resteasy-jackson2-provider</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.resteasy</groupId>
+            <artifactId>resteasy-jackson2-provider</artifactId>
+            <version>3.0.19.Final</version>
         </dependency>
 
         <!--HttpClient -->
         <dependency>
-            <groupId>commons-httpclient</groupId>
-            <artifactId>commons-httpclient</artifactId>
-            <version>3.1</version>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-web</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-        </dependency>
 
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-redis</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-annotations</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.mybatis</groupId>
-            <artifactId>mybatis-typehandlers-jsr310</artifactId>
-            <version>1.0.1</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.datatype</groupId>
-            <artifactId>jackson-datatype-jsr310</artifactId>
-            <version>2.9.2</version>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
         </dependency>
     </dependencies>
 

+ 6 - 0
smsb-customer-manager-app/src/main/java/com/inspur/customer/config/KeycloakConfiguration.java

@@ -4,6 +4,7 @@ import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
 import org.keycloak.OAuth2Constants;
 import org.keycloak.admin.client.Keycloak;
 import org.keycloak.admin.client.KeycloakBuilder;
+import org.keycloak.admin.client.resource.RealmResource;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -32,4 +33,9 @@ public class KeycloakConfiguration {
                     .connectionPoolSize(10).build()
             ).build();
     }
+
+    @Bean
+    public RealmResource getRealmResource() {
+        return keycloakClient().realm(realm);
+    }
 }

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

@@ -5,13 +5,11 @@ import com.inspur.customer.object.keycloak.KeycloakUserCO;
 import com.inspur.customer.object.wechat.Pair;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
-import org.keycloak.admin.client.Keycloak;
 import org.keycloak.admin.client.resource.RealmResource;
 import org.keycloak.admin.client.resource.UserResource;
 import org.keycloak.representations.idm.*;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cache.annotation.Cacheable;
-import org.springframework.util.Assert;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
@@ -25,16 +23,13 @@ import java.util.stream.Collectors;
 public class KeycloakServiceImpl implements KeycloakService {
 
     @Resource
-    private Keycloak keycloak;
-
-    @Value("${keycloak.realm}")
-    private String realm;
+    private RealmResource realmResource;
 
     @Override
     @Cacheable(value = "smsb:users")
     public Map<String, String> getUserMap() {
         Map<String, String> userMap = new HashMap<>();
-        keycloak.realm(realm).users().list().forEach(user ->{
+        realmResource.users().list().forEach(user ->{
             if (user.getFirstName() != null && user.getLastName() != null && !"".equals(user.getLastName())) {
                 user.setUsername(user.getLastName() + user.getFirstName());
             }
@@ -51,7 +46,7 @@ public class KeycloakServiceImpl implements KeycloakService {
     @Override
     public List<KeycloakUserCO> getUsersInRole(String role) {
         List<KeycloakUserCO> keycloakUserCos = new ArrayList<>();
-        keycloak.realm(realm).roles().get(role).getRoleUserMembers().forEach(user -> {
+        realmResource.roles().get(role).getRoleUserMembers().forEach(user -> {
             log.info("name: {}", user.getUsername());
             KeycloakUserCO keycloakUserCo = new KeycloakUserCO();
             keycloakUserCo.setId(user.getId());
@@ -78,7 +73,7 @@ public class KeycloakServiceImpl implements KeycloakService {
     public List<KeycloakUserCO> getUsersByIds(List<String> userIds) {
         List<KeycloakUserCO> keycloakUserCos = new ArrayList<>(userIds.size());
         userIds.forEach(id -> {
-            UserRepresentation userRepresentation = keycloak.realm(realm).users().get(id).toRepresentation();
+            UserRepresentation userRepresentation = realmResource.users().get(id).toRepresentation();
             if (userRepresentation != null) {
                 KeycloakUserCO keycloakUserCo = new KeycloakUserCO();
                 keycloakUserCo.setId(userRepresentation.getId());
@@ -99,7 +94,7 @@ public class KeycloakServiceImpl implements KeycloakService {
     @Override
     public Boolean checkUserRole(String userId, String role) {
         AtomicReference<Boolean> result = new AtomicReference<>(false);
-        List<RoleRepresentation> roles = keycloak.realm(realm).users().get(userId).roles().getAll().getRealmMappings();
+        List<RoleRepresentation> roles = realmResource.users().get(userId).roles().getAll().getRealmMappings();
         log.info("userId:{},roles:{}",userId , roles);
         roles.forEach(n ->{
             if(n.getName().equalsIgnoreCase(role)){
@@ -112,7 +107,7 @@ public class KeycloakServiceImpl implements KeycloakService {
 
     @Override
     public void updateAttribute(String userId ,String property , String value) {
-        UserResource user = keycloak.realm(realm).users().get(userId);
+        UserResource user = realmResource.users().get(userId);
         UserRepresentation userRepresentation = user.toRepresentation();
         if (userRepresentation.getAttributes() == null) {
             userRepresentation.setAttributes(new HashMap<>());
@@ -123,7 +118,7 @@ public class KeycloakServiceImpl implements KeycloakService {
 
     @Override
     public List<String> getAttrByGroupPath(String groupPath, String key) {
-        GroupRepresentation groupRepresentation = keycloak.realm(realm).getGroupByPath(groupPath);
+        GroupRepresentation groupRepresentation = realmResource.getGroupByPath(groupPath);
         if (groupRepresentation != null) {
             Map<String, List<String>> attributes = groupRepresentation.getAttributes();
             return attributes != null ? attributes.get(key) : Collections.emptyList();
@@ -138,7 +133,7 @@ public class KeycloakServiceImpl implements KeycloakService {
 
     @Override
     public List<KeycloakUserCO> getSuperAdmin() {
-        return keycloak.realm(realm).roles().get("ROLE_SUPER_ADMIN").getRoleUserMembers()
+        return realmResource.roles().get("ROLE_SUPER_ADMIN").getRoleUserMembers()
             .stream()
             .map(this::transfer)
             .collect(Collectors.toList());
@@ -165,17 +160,17 @@ public class KeycloakServiceImpl implements KeycloakService {
             .filter(t -> Objects.nonNull(t) && Objects.nonNull(t.getKey()) && Objects.nonNull(t.getValue()))
             .map(t -> t.getKey() + ":" + t.getValue())
             .collect(Collectors.joining(" "));
-        return keycloak.realm(realm).users().searchByAttributes(search).stream().map(this::transfer).collect(Collectors.toList());
+        return realmResource.users().searchByAttributes(search).stream().map(this::transfer).collect(Collectors.toList());
     }
 
     @Override
     public List<String> getUserGroupPathList(String userId) {
-        return keycloak.realm(realm).users().get(userId).groups().stream().map(GroupRepresentation::getPath).collect(Collectors.toList());
+        return realmResource.users().get(userId).groups().stream().map(GroupRepresentation::getPath).collect(Collectors.toList());
     }
 
     @Override
     public List<String> getUserRealmRoles(String userId) {
-        return keycloak.realm(realm)
+        return realmResource
             .users()
             .get(userId)
             .roles()
@@ -189,10 +184,10 @@ public class KeycloakServiceImpl implements KeycloakService {
     @Override
     public Map<String, List<String>> getUserClientRoles(String userId) {
         Map<String, List<String>> resultMap = new HashMap<>();
-        List<ClientRepresentation> clientList = keycloak.realm(realm).clients().findAll();
+        List<ClientRepresentation> clientList = realmResource.clients().findAll();
         for (ClientRepresentation clientRepresentation : clientList) {
             String clientId = clientRepresentation.getClientId();
-            List<RoleRepresentation> roleList = keycloak.realm(realm).users().get(userId).roles().clientLevel(clientRepresentation.getId()).listEffective();
+            List<RoleRepresentation> roleList = realmResource.users().get(userId).roles().clientLevel(clientRepresentation.getId()).listEffective();
             if (!roleList.isEmpty()) {
                 resultMap.put(clientId, roleList.stream().map(RoleRepresentation::getName).collect(Collectors.toList()));
             }
@@ -205,14 +200,13 @@ public class KeycloakServiceImpl implements KeycloakService {
         CredentialRepresentation cr = new CredentialRepresentation();
         cr.setType(CredentialRepresentation.PASSWORD);
         cr.setValue(newPassword);
-        keycloak.realm(realm).users().get(userId).resetPassword(cr);
+        realmResource.users().get(userId).resetPassword(cr);
     }
 
     private List<KeycloakUserCO> getUserByRoleAndGroup(String group, String role) {
         if (!StringUtils.hasText(group) || !StringUtils.hasText(role)) {
             return Collections.emptyList();
         }
-        RealmResource realmResource = keycloak.realm(this.realm);
         List<UserRepresentation> members = realmResource.groups().group(realmResource.getGroupByPath(group).getId()).members();
         Set<String> set = realmResource.roles().get(role).getRoleUserMembers().stream().map(UserRepresentation::getId).collect(Collectors.toSet());
         return members.stream().filter(t -> set.contains(t.getId())).map(this::transfer).collect(Collectors.toList());
@@ -238,7 +232,7 @@ public class KeycloakServiceImpl implements KeycloakService {
     @Cacheable(value = "smsb:userList")
     public Map<String, String> getUsersMap() {
         Map<String, String> userMap = new HashMap<>();
-        keycloak.realm(realm).users().list().forEach(user ->{
+        realmResource.users().list().forEach(user ->{
             if (user.getFirstName() != null && user.getLastName() != null && !"".equals(user.getLastName())) {
                 user.setUsername(user.getLastName() + user.getFirstName());
             }

+ 5 - 0
smsb-customer-manager-client/pom.xml

@@ -57,6 +57,11 @@
             <groupId>jakarta.validation</groupId>
             <artifactId>jakarta.validation-api</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-json</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 0 - 1
smsb-customer-manager-start-web/src/main/resources/bootstrap.yml

@@ -12,4 +12,3 @@ spring:
       config:
         file-extension: yml
         refresh-enabled: true
-