dengsixing 3 лет назад
Родитель
Сommit
fb4a964e18
19 измененных файлов с 180 добавлено и 611 удалено
  1. 1 1
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/SceneApplication.java
  2. 18 18
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneEditController.java
  3. 2 2
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneCooperationServiceImpl.java
  4. 3 4
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneResourceCameraServiceImpl.java
  5. 0 76
      4dkankan-center-scene/src/main/resources/bootstrap-dev-eur.yml
  6. 0 76
      4dkankan-center-scene/src/main/resources/bootstrap-dev.yml
  7. 0 77
      4dkankan-center-scene/src/main/resources/bootstrap-pro-eur.yml
  8. 0 76
      4dkankan-center-scene/src/main/resources/bootstrap-pro.yml
  9. 0 88
      4dkankan-center-scene/src/main/resources/bootstrap-test-eur.yml
  10. 0 88
      4dkankan-center-scene/src/main/resources/bootstrap-test.yml
  11. 42 2
      4dkankan-center-scene/src/main/resources/bootstrap.yml
  12. 4 4
      4dkankan-common/pom.xml
  13. 57 57
      4dkankan-common/src/main/java/com/fdkankan/common/config/SentinelUrlBlockHandler.java
  14. 17 9
      4dkankan-common/src/main/java/com/fdkankan/common/config/ShiroConfig.java
  15. 3 10
      4dkankan-common/src/main/java/com/fdkankan/common/exception/GlobalExceptionHandler.java
  16. 10 10
      4dkankan-common/src/main/java/com/fdkankan/common/jwt/JwtFilter.java
  17. 16 7
      4dkankan-common/src/main/java/com/fdkankan/common/realm/UserJwtRealm.java
  18. 2 1
      4dkankan-common/src/main/java/com/fdkankan/common/user/SSOLoginHelper.java
  19. 5 5
      4dkankan-common/src/main/java/com/fdkankan/common/user/SSOLoginStore.java

+ 1 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/SceneApplication.java

@@ -7,13 +7,13 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 @SpringBootApplication
 @EnableTransactionManagement//开启事务
-@EnableFeignClients("com.fdkankan.*.api.feign")
 @EnableDiscoveryClient
 @EnableScheduling
 @ComponentScan(basePackages = {"com.fdkankan.*"})

+ 18 - 18
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneEditController.java

@@ -35,8 +35,8 @@ public class SceneEditController extends BaseController {
     private ISceneUploadService sceneUploadService;
     @Autowired
     private ISceneEditService sceneEditService;
-    @Value("${spring.profiles.active}")
-    private String env;
+//    @Value("${spring.profiles.active}")
+//    private String env;
 
     /**
      * <p>
@@ -954,22 +954,22 @@ public class SceneEditController extends BaseController {
         return sceneEditService.getAuth(num, this.getToken());
     }
 
-    /**
-     * <p>
-            上传国际化文件
-     * </p>
-     * @author dengsixing
-     * @date 2022/4/11
-     * @param param
-     * @return com.fdkankan.common.response.ResultData
-     **/
-    @PostMapping(value = "/locales")
-    public ResultData locales(@RequestBody @Validated LocalesParamVO param) throws Exception {
-        if("pro".equals(env)){
-            throw new BusinessException(ErrorCode.HAVE_NO_RIGHT);
-        }
-        return sceneEditService.locales(param);
-    }
+//    /**
+//     * <p>
+//            上传国际化文件
+//     * </p>
+//     * @author dengsixing
+//     * @date 2022/4/11
+//     * @param param
+//     * @return com.fdkankan.common.response.ResultData
+//     **/
+//    @PostMapping(value = "/locales")
+//    public ResultData locales(@RequestBody @Validated LocalesParamVO param) throws Exception {
+//        if("pro".equals(env)){
+//            throw new BusinessException(ErrorCode.HAVE_NO_RIGHT);
+//        }
+//        return sceneEditService.locales(param);
+//    }
 
     /**
      * 保存导览

+ 2 - 2
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneCooperationServiceImpl.java

@@ -1,7 +1,7 @@
 package com.fdkankan.scene.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
-import com.alibaba.csp.sentinel.util.StringUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -119,7 +119,7 @@ public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMa
             sceneCooperationEntity.setNum(sceneProEntity.getNum());
             this.save(sceneCooperationEntity);
 
-            if(StringUtil.isNotEmpty(resourceIds)){
+            if(StrUtil.isNotEmpty(resourceIds)){
                 SceneResourceCooperation sceneResourceCooperationEntity = null;
                 String[] ids = resourceIds.split(",");
                 for(String resourceId : ids){

+ 3 - 4
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneResourceCameraServiceImpl.java

@@ -1,6 +1,6 @@
 package com.fdkankan.scene.service.impl;
 
-import com.alibaba.csp.sentinel.util.StringUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -8,9 +8,8 @@ import com.fdkankan.common.constant.TbStatus;
 import com.fdkankan.scene.entity.SceneResourceCamera;
 import com.fdkankan.scene.mapper.ISceneResourceCameraMapper;
 import com.fdkankan.scene.service.ISceneResourceCameraService;
-import org.springframework.stereotype.Service;
-
 import java.util.List;
+import org.springframework.stereotype.Service;
 
 /**
  * <p>
@@ -39,7 +38,7 @@ public class SceneResourceCameraServiceImpl extends ServiceImpl<ISceneResourceCa
 
     @Override
     public void saveByResourceIds(Long cameraId, String resourceIds) {
-        if(StringUtil.isNotEmpty(resourceIds)){
+        if(StrUtil.isNotEmpty(resourceIds)){
             SceneResourceCamera sceneResourceCameraEntity = null;
             String[] ids = resourceIds.split(",");
             for(String resourceId : ids){

+ 0 - 76
4dkankan-center-scene/src/main/resources/bootstrap-dev-eur.yml

@@ -1,76 +0,0 @@
-spring:
-  application:
-    name: 4dkankan-center-scene
-  cloud:
-    nacos:
-      config:
-        server-addr: 120.24.144.164:8848
-        file-extension: yaml
-        namespace: 4dkankan-dev-eur
-        extension-configs:
-          - data-id: 4dkankan-center-scene.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-        shared-configs:
-          - data-id: common-db-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-redis-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-rabbitmq-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: other-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-upload-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-      discovery:
-        server-addr: 120.24.144.164:8848
-        namespace: 4dkankan-dev-eur
-    sentinel:
-      transport:
-        dashboard: 120.24.144.164:8888
-        heartbeat-interval-ms: 500
-        port: 8719
-      eager: true #取消sentinel控制台懒加载
-      #sentinel配置持久化nacos
-      datasource:
-        #流控规则
-        flow:
-          nacos:
-            server-addr: ${spring.cloud.nacos.config.server-addr}
-            dataId: ${spring.application.name}-flow-rules
-            groupId: SENTINEL_GROUP
-            namespace: 4dkankan-dev
-            rule-type: flow
-        #熔断规则
-        degrade:
-          nacos:
-            server-addr: ${spring.cloud.nacos.config.server-addr}
-            dataId: ${spring.application.name}-degrade-rules
-            groupId: SENTINEL_GROUP
-            namespace: 4dkankan-dev
-            rule-type: degrade
-#      log:
-#        dir: ./logs # 默认值${home}/logs/csp/
-#        switch-pid: true # 日志带上线程id
-
-#开启feign熔断降级,如果没有开启,feign调用链路不会显示再sentinel控制中
-#feign:
-#  sentinel:
-#    enabled: true
-
-feign:
-  httpclient:
-    connection-timeout: 200000
-
-
-
-

+ 0 - 76
4dkankan-center-scene/src/main/resources/bootstrap-dev.yml

@@ -1,76 +0,0 @@
-spring:
-  application:
-    name: 4dkankan-center-scene
-  cloud:
-    nacos:
-      config:
-        server-addr: 120.24.144.164:8848
-        file-extension: yaml
-        namespace: 4dkankan-dev
-        extension-configs:
-          - data-id: 4dkankan-center-scene.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-        shared-configs:
-          - data-id: common-db-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-redis-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-rabbitmq-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: other-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-upload-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-      discovery:
-        server-addr: 120.24.144.164:8848
-        namespace: 4dkankan-dev
-    sentinel:
-      transport:
-        dashboard: 120.24.144.164:8888
-        heartbeat-interval-ms: 500
-        port: 8719
-      eager: true #取消sentinel控制台懒加载
-      #sentinel配置持久化nacos
-      datasource:
-        #流控规则
-        flow:
-          nacos:
-            server-addr: ${spring.cloud.nacos.config.server-addr}
-            dataId: ${spring.application.name}-flow-rules
-            groupId: SENTINEL_GROUP
-            namespace: 4dkankan-dev
-            rule-type: flow
-        #熔断规则
-        degrade:
-          nacos:
-            server-addr: ${spring.cloud.nacos.config.server-addr}
-            dataId: ${spring.application.name}-degrade-rules
-            groupId: SENTINEL_GROUP
-            namespace: 4dkankan-dev
-            rule-type: degrade
-#      log:
-#        dir: ./logs # 默认值${home}/logs/csp/
-#        switch-pid: true # 日志带上线程id
-
-#开启feign熔断降级,如果没有开启,feign调用链路不会显示再sentinel控制中
-#feign:
-#  sentinel:
-#    enabled: true
-
-feign:
-  httpclient:
-    connection-timeout: 200000
-
-
-
-

+ 0 - 77
4dkankan-center-scene/src/main/resources/bootstrap-pro-eur.yml

@@ -1,77 +0,0 @@
-spring:
-  application:
-    name: 4dkankan-center-scene
-  cloud:
-    nacos:
-      config:
-        server-addr: 172.31.42.151:8848
-        file-extension: yaml
-        namespace: 4dkankan-pro-eur
-        extension-configs:
-          - data-id: 4dkankan-center-scene.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-        shared-configs:
-          - data-id: common-db-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-redis-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-rabbitmq-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: other-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-upload-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-      discovery:
-        server-addr: 172.31.42.151:8848
-        namespace: 4dkankan-pro-eur
-    sentinel:
-      transport:
-        dashboard: 172.31.42.151:8888
-#        dashboard: localhost:8888
-        heartbeat-interval-ms: 500
-        port: 8719
-      eager: true #取消sentinel控制台懒加载
-      #sentinel配置持久化nacos
-      datasource:
-        #流控规则
-        flow:
-          nacos:
-            server-addr: ${spring.cloud.nacos.config.server-addr}
-            dataId: ${spring.application.name}-flow-rules
-            groupId: SENTINEL_GROUP
-            namespace: 4dkankan-pro
-            rule-type: flow
-        #熔断规则
-        degrade:
-          nacos:
-            server-addr: ${spring.cloud.nacos.config.server-addr}
-            dataId: ${spring.application.name}-degrade-rules
-            groupId: SENTINEL_GROUP
-            namespace: 4dkankan-pro
-            rule-type: degrade
-#      log:
-#        dir: ./logs # 默认值${home}/logs/csp/
-#        switch-pid: true # 日志带上线程id
-
-#开启feign熔断降级,如果没有开启,feign调用链路不会显示再sentinel控制中
-#feign:
-#  sentinel:
-#    enabled: true
-
-feign:
-  httpclient:
-    connection-timeout: 200000
-
-
-
-

+ 0 - 76
4dkankan-center-scene/src/main/resources/bootstrap-pro.yml

@@ -1,76 +0,0 @@
-spring:
-  application:
-    name: 4dkankan-center-scene
-  cloud:
-    nacos:
-      config:
-        server-addr: 172.18.157.42:8848
-        file-extension: yaml
-        namespace: 4dkankan-pro
-        extension-configs:
-          - data-id: 4dkankan-center-scene.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-        shared-configs:
-          - data-id: common-db-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-redis-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-rabbitmq-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: other-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-upload-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-      discovery:
-        server-addr: 172.18.157.42:8848
-        namespace: 4dkankan-pro
-#    sentinel:
-#      transport:
-#        dashboard: 8.129.209.131:8888
-#        heartbeat-interval-ms: 500
-#        port: 8719
-#      eager: true #取消sentinel控制台懒加载
-#      #sentinel配置持久化nacos
-#      datasource:
-#        #流控规则
-#        flow:
-#          nacos:
-#            server-addr: ${spring.cloud.nacos.config.server-addr}
-#            dataId: ${spring.application.name}-flow-rules
-#            groupId: SENTINEL_GROUP
-#            namespace: 4dkankan-pro
-#            rule-type: flow
-#        #熔断规则
-#        degrade:
-#          nacos:
-#            server-addr: ${spring.cloud.nacos.config.server-addr}
-#            dataId: ${spring.application.name}-degrade-rules
-#            groupId: SENTINEL_GROUP
-#            namespace: 4dkankan-pro
-#            rule-type: degrade
-#      log:
-#        dir: ./logs # 默认值${home}/logs/csp/
-#        switch-pid: true # 日志带上线程id
-
-#开启feign熔断降级,如果没有开启,feign调用链路不会显示再sentinel控制中
-#feign:
-#  sentinel:
-#    enabled: true
-
-feign:
-  httpclient:
-    connection-timeout: 200000
-
-
-
-

+ 0 - 88
4dkankan-center-scene/src/main/resources/bootstrap-test-eur.yml

@@ -1,88 +0,0 @@
-spring:
-  application:
-    name: 4dkankan-center-scene
-  cloud:
-    nacos:
-      config:
-        server-addr: 120.24.144.164:8848
-        file-extension: yaml
-        namespace: 4dkankan-test-eur
-        extension-configs:
-          - data-id: 4dkankan-center-scene.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-        shared-configs:
-          - data-id: common-db-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-redis-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-rabbitmq-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: other-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-upload-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-      discovery:
-        server-addr: 120.24.144.164:8848
-        namespace: 4dkankan-test-eur
-#    sentinel:
-#      transport:
-#        dashboard: 120.24.144.164:8888
-#        heartbeat-interval-ms: 500
-#        port: 8719
-#      eager: true #取消sentinel控制台懒加载
-#      #sentinel配置持久化nacos
-#      datasource:
-#        #流控规则
-#        flow:
-#          nacos:
-#            server-addr: ${spring.cloud.nacos.config.server-addr}
-#            dataId: ${spring.application.name}-flow-rules
-#            groupId: SENTINEL_GROUP
-#            namespace: 4dkankan-test
-#            rule-type: flow
-#        #熔断规则
-#        degrade:
-#          nacos:
-#            server-addr: ${spring.cloud.nacos.config.server-addr}
-#            dataId: ${spring.application.name}-degrade-rules
-#            groupId: SENTINEL_GROUP
-#            namespace: 4dkankan-test
-#            rule-type: degrade
-#      log:
-#        dir: ./logs # 默认值${home}/logs/csp/
-#        switch-pid: true # 日志带上线程id
-
-#开启feign熔断降级,如果没有开启,feign调用链路不会显示再sentinel控制中
-#feign:
-#  sentinel:
-#    enabled: true
-
-feign:
-  httpclient:
-    connection-timeout: 200000
-
-server:
-  tomcat:
-    threads:
-      min-spare: 100  #最小工作线程数
-      max: 1000       #最大工作线程数,建议配置为cpu核心数的200~250倍
-    accept-count: 1000   #能够接受的最大等待数,默认100。如果等待队列也被放满了,新的请求会被tomcat拒绝(connection refused)
-    max-connections: 2000   #同一时间,tomcat能够接受的最大连接数。一般这个值要大于(max-threads)+(accept-count)
-    connection-timeout: 3000  #连接建立超时时间
-
-
-
-
-
-
-

+ 0 - 88
4dkankan-center-scene/src/main/resources/bootstrap-test.yml

@@ -1,88 +0,0 @@
-spring:
-  application:
-    name: 4dkankan-center-scene
-  cloud:
-    nacos:
-      config:
-        server-addr: 120.24.144.164:8848
-        file-extension: yaml
-        namespace: 4dkankan-test
-        extension-configs:
-          - data-id: 4dkankan-center-scene.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-        shared-configs:
-          - data-id: common-db-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-redis-config-52.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-rabbitmq-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: other-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-
-          - data-id: common-upload-config.yaml
-            group: DEFAULT_GROUP
-            refresh: true
-      discovery:
-        server-addr: 120.24.144.164:8848
-        namespace: 4dkankan-dev
-    sentinel:
-      transport:
-        dashboard: 120.24.144.164:8888
-        heartbeat-interval-ms: 500
-        port: 8719
-      eager: true #取消sentinel控制台懒加载
-      #sentinel配置持久化nacos
-      datasource:
-        #流控规则
-        flow:
-          nacos:
-            server-addr: ${spring.cloud.nacos.config.server-addr}
-            dataId: ${spring.application.name}-flow-rules
-            groupId: SENTINEL_GROUP
-            namespace: 4dkankan-test
-            rule-type: flow
-        #熔断规则
-        degrade:
-          nacos:
-            server-addr: ${spring.cloud.nacos.config.server-addr}
-            dataId: ${spring.application.name}-degrade-rules
-            groupId: SENTINEL_GROUP
-            namespace: 4dkankan-test
-            rule-type: degrade
-#      log:
-#        dir: ./logs # 默认值${home}/logs/csp/
-#        switch-pid: true # 日志带上线程id
-
-#开启feign熔断降级,如果没有开启,feign调用链路不会显示再sentinel控制中
-#feign:
-#  sentinel:
-#    enabled: true
-
-feign:
-  httpclient:
-    connection-timeout: 200000
-
-server:
-  tomcat:
-    threads:
-      min-spare: 100  #最小工作线程数
-      max: 1000       #最大工作线程数,建议配置为cpu核心数的200~250倍
-    accept-count: 1000   #能够接受的最大等待数,默认100。如果等待队列也被放满了,新的请求会被tomcat拒绝(connection refused)
-    max-connections: 2000   #同一时间,tomcat能够接受的最大连接数。一般这个值要大于(max-threads)+(accept-count)
-    connection-timeout: 3000  #连接建立超时时间
-
-
-
-
-
-
-

+ 42 - 2
4dkankan-center-scene/src/main/resources/bootstrap.yml

@@ -1,3 +1,43 @@
 spring:
-  profiles:
-    active: dev
+  application:
+    name: 4dkankan-center-scene
+  cloud:
+    nacos:
+      config:
+        server-addr: 120.24.144.164:8848
+        file-extension: yaml
+        namespace: 4dkankan-qczj
+        extension-configs:
+          - data-id: 4dkankan-center-scene.yaml
+            group: DEFAULT_GROUP
+            refresh: true
+        shared-configs:
+          - data-id: common-db-config.yaml
+            group: DEFAULT_GROUP
+            refresh: true
+
+          - data-id: common-redis-config-52.yaml
+            group: DEFAULT_GROUP
+            refresh: true
+
+          - data-id: common-rabbitmq-config.yaml
+            group: DEFAULT_GROUP
+            refresh: true
+
+          - data-id: other-config.yaml
+            group: DEFAULT_GROUP
+            refresh: true
+
+          - data-id: common-upload-config.yaml
+            group: DEFAULT_GROUP
+            refresh: true
+      discovery:
+        server-addr: 120.24.144.164:8848
+        namespace: 4dkankan-qczj
+
+
+
+
+
+
+

+ 4 - 4
4dkankan-common/pom.xml

@@ -147,10 +147,10 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-aop</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>com.alibaba.cloud</groupId>-->
+<!--            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>-->
+<!--        </dependency>-->
 
         <dependency>
             <groupId>com.baomidou</groupId>

+ 57 - 57
4dkankan-common/src/main/java/com/fdkankan/common/config/SentinelUrlBlockHandler.java

@@ -1,57 +1,57 @@
-package com.fdkankan.common.config;
-
-import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler;
-import com.alibaba.csp.sentinel.slots.block.BlockException;
-import com.alibaba.csp.sentinel.slots.block.authority.AuthorityException;
-import com.alibaba.csp.sentinel.slots.block.degrade.DegradeException;
-import com.alibaba.csp.sentinel.slots.block.flow.FlowException;
-import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowException;
-import com.alibaba.csp.sentinel.slots.system.SystemBlockException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fdkankan.common.response.ResultData;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.http.MediaType;
-import org.springframework.stereotype.Component;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * <p>
- * sentinel统一异常处理
- * </p>
- *
- * @author dengsixing
- * @since 2022/1/26
- **/
-@Slf4j
-@Component
-public class SentinelUrlBlockHandler implements BlockExceptionHandler {
-    @Override
-    public void handle(HttpServletRequest request, HttpServletResponse response, BlockException e) throws IOException {
-        String msg = null;
-        if (e instanceof FlowException) {
-            msg = "限流了";
-        } else if (e instanceof DegradeException) {
-            msg = "降级了";
-        } else if (e instanceof ParamFlowException) {
-            msg = "热点参数限流";
-        } else if (e instanceof SystemBlockException) {
-            msg = "系统规则(负载/...不满足要求)";
-        } else if (e instanceof AuthorityException) {
-            msg = "授权规则不通过";
-        }
-        // http状态码
-        response.setStatus(500);
-        response.setCharacterEncoding("utf-8");
-        response.setHeader("Content-Type", "application/json;charset=utf-8");
-        response.setContentType(MediaType.APPLICATION_JSON_VALUE);
-
-        new ObjectMapper()
-                .writeValue(
-                        response.getWriter(),
-                        ResultData.error(-1, msg)
-                );
-    }
-}
+//package com.fdkankan.common.config;
+//
+//import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler;
+//import com.alibaba.csp.sentinel.slots.block.BlockException;
+//import com.alibaba.csp.sentinel.slots.block.authority.AuthorityException;
+//import com.alibaba.csp.sentinel.slots.block.degrade.DegradeException;
+//import com.alibaba.csp.sentinel.slots.block.flow.FlowException;
+//import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowException;
+//import com.alibaba.csp.sentinel.slots.system.SystemBlockException;
+//import com.fasterxml.jackson.databind.ObjectMapper;
+//import com.fdkankan.common.response.ResultData;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.http.MediaType;
+//import org.springframework.stereotype.Component;
+//
+//import javax.servlet.http.HttpServletRequest;
+//import javax.servlet.http.HttpServletResponse;
+//import java.io.IOException;
+//
+///**
+// * <p>
+// * sentinel统一异常处理
+// * </p>
+// *
+// * @author dengsixing
+// * @since 2022/1/26
+// **/
+//@Slf4j
+//@Component
+//public class SentinelUrlBlockHandler implements BlockExceptionHandler {
+//    @Override
+//    public void handle(HttpServletRequest request, HttpServletResponse response, BlockException e) throws IOException {
+//        String msg = null;
+//        if (e instanceof FlowException) {
+//            msg = "限流了";
+//        } else if (e instanceof DegradeException) {
+//            msg = "降级了";
+//        } else if (e instanceof ParamFlowException) {
+//            msg = "热点参数限流";
+//        } else if (e instanceof SystemBlockException) {
+//            msg = "系统规则(负载/...不满足要求)";
+//        } else if (e instanceof AuthorityException) {
+//            msg = "授权规则不通过";
+//        }
+//        // http状态码
+//        response.setStatus(500);
+//        response.setCharacterEncoding("utf-8");
+//        response.setHeader("Content-Type", "application/json;charset=utf-8");
+//        response.setContentType(MediaType.APPLICATION_JSON_VALUE);
+//
+//        new ObjectMapper()
+//                .writeValue(
+//                        response.getWriter(),
+//                        ResultData.error(-1, msg)
+//                );
+//    }
+//}

+ 17 - 9
4dkankan-common/src/main/java/com/fdkankan/common/config/ShiroConfig.java

@@ -7,6 +7,8 @@ import com.fdkankan.common.realm.AgentJwtRealm;
 import com.fdkankan.common.realm.AppJwtRealm;
 import com.fdkankan.common.realm.ManagerJwtRealm;
 import com.fdkankan.common.realm.UserJwtRealm;
+import com.fdkankan.common.user.SSOLoginHelper;
+import com.fdkankan.common.user.SSOLoginStore;
 import org.apache.shiro.authc.pam.AtLeastOneSuccessfulStrategy;
 import org.apache.shiro.authc.pam.ModularRealmAuthenticator;
 import org.apache.shiro.mgt.DefaultSessionStorageEvaluator;
@@ -15,15 +17,25 @@ import org.apache.shiro.mgt.SecurityManager;
 import org.apache.shiro.realm.Realm;
 import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
 import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
 import javax.servlet.Filter;
 import java.util.*;
 
-//@Configuration
+@Configuration
 public class ShiroConfig {
 
+    @Autowired
+    private UserJwtRealm userJwtRealm;
+    @Autowired
+    private AgentJwtRealm agentJwtRealm;
+    @Autowired
+    private ManagerJwtRealm managerJwtRealm;
+    @Autowired
+    private AppJwtRealm appJwtRealm;
+
     @Bean("shiroFilter")
     public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
          ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
@@ -58,10 +70,10 @@ public class ShiroConfig {
     @Bean("securityManager")
     public SecurityManager securityManager() {
         List<Realm> realms = new ArrayList<>();
-        realms.add(new UserJwtRealm());
-        realms.add(new AgentJwtRealm());
-        realms.add(new ManagerJwtRealm());
-        realms.add(new AppJwtRealm());
+        realms.add(userJwtRealm);
+        realms.add(agentJwtRealm);
+        realms.add(managerJwtRealm);
+        realms.add(appJwtRealm);
 
         DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
         //设置realm.
@@ -88,8 +100,4 @@ public class ShiroConfig {
         return modularRealmAuthenticator;
     }
 
-
-
-
-
 }

+ 3 - 10
4dkankan-common/src/main/java/com/fdkankan/common/exception/GlobalExceptionHandler.java

@@ -1,31 +1,23 @@
 package com.fdkankan.common.exception;
 
 import cn.hutool.core.exceptions.ExceptionUtil;
-import com.alibaba.csp.sentinel.Tracer;
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.ServerCode;
 import com.fdkankan.common.response.ResultData;
 import java.util.List;
-import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import javax.xml.transform.Result;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.catalina.Server;
-import org.springframework.http.HttpStatus;
 import org.springframework.validation.BindException;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.FieldError;
 import org.springframework.validation.ObjectError;
 import org.springframework.web.bind.MethodArgumentNotValidException;
 import org.springframework.web.bind.MissingServletRequestParameterException;
-import org.springframework.web.bind.annotation.ControllerAdvice;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.ResponseStatus;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
 import org.springframework.web.multipart.MultipartException;
-import org.springframework.web.servlet.NoHandlerFoundException;
 
 /**
  * 全局异常处理器
@@ -42,8 +34,9 @@ public class GlobalExceptionHandler {
     public ResultData exceptionHandler(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Exception e) throws Exception {
             log.error("服务错误:", e);
             //增加sentinel异常次数
-            Tracer.trace(e);
-            return ResultData.error(ServerCode.SYSTEM_ERROR.code(), ExceptionUtil.stacktraceToString(e, 3000));
+//            Tracer.trace(e);
+            return ResultData.error(ServerCode.SYSTEM_ERROR.code(), ExceptionUtil
+                .stacktraceToString(e, 3000));
     }
 
     /**

+ 10 - 10
4dkankan-common/src/main/java/com/fdkankan/common/jwt/JwtFilter.java

@@ -1,7 +1,10 @@
 package com.fdkankan.common.jwt;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.exception.JwtAuthenticationException;
+import com.fdkankan.common.response.ResultData;
 import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -45,16 +48,13 @@ public class JwtFilter extends BasicHttpAuthenticationFilter {
             String msg = e.getMessage();
             // 获取应用异常(该Cause是导致抛出此throwable(异常)的throwable(异常))
             Throwable throwable = e.getCause();
-            JSONObject jsonObject = new JSONObject();
-            if (throwable instanceof JwtAuthenticationException) {
-                jsonObject.put("code", ((JwtAuthenticationException) throwable).getCode());
-                jsonObject.put("msg", ((JwtAuthenticationException) throwable).getMsg());
-            }else{
-                jsonObject.put("code", 3002);
-                jsonObject.put("msg", msg);
+            ResultData resultData = ResultData.error(3002, msg);
+            if (throwable instanceof BusinessException) {
+                resultData.setCode(((BusinessException) throwable).getCode());
+                resultData.setMessage(((BusinessException)throwable).getMessage());
             }
             // 直接返回Response信息
-            this.response(response, jsonObject);
+            this.response(response, resultData);
             return false;
         }
     }
@@ -95,13 +95,13 @@ public class JwtFilter extends BasicHttpAuthenticationFilter {
     /**
      * 无需转发,直接返回Response信息
      */
-    private void response(ServletResponse response, JSONObject msg) {
+    private void response(ServletResponse response, ResultData resultData) {
         response.setCharacterEncoding("UTF-8");
         response.setContentType("application/json; charset=utf-8");
         PrintWriter out = null;
         try {
             out = response.getWriter();
-            out.append(msg.toString());
+            out.append(JSON.toJSONString(resultData));
             out.flush();
             out.close();
         } catch (IOException e) {

+ 16 - 7
4dkankan-common/src/main/java/com/fdkankan/common/realm/UserJwtRealm.java

@@ -2,9 +2,14 @@ package com.fdkankan.common.realm;
 
 import cn.hutool.core.util.StrUtil;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.exception.JwtAuthenticationException;
 import com.fdkankan.common.jwt.JwtToken;
+import com.fdkankan.common.model.SSOUser;
+import com.fdkankan.common.user.SSOLoginHelper;
 import com.fdkankan.common.util.JwtUtil;
+import javax.annotation.Resource;
 import org.apache.shiro.authc.AuthenticationException;
 import org.apache.shiro.authc.AuthenticationInfo;
 import org.apache.shiro.authc.AuthenticationToken;
@@ -16,6 +21,7 @@ import org.apache.shiro.subject.PrincipalCollection;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 @Component
@@ -27,6 +33,9 @@ public class UserJwtRealm extends AuthorizingRealm {
     @Autowired
     private ObjectMapper mapper;
 
+    @Autowired
+    private SSOLoginHelper SSOLoginHelper;
+
     /**
      * 必须重写此方法,不然Shiro会报错
      */
@@ -59,21 +68,21 @@ public class UserJwtRealm extends AuthorizingRealm {
         log.info("Step 2: User进行用户名正确与否验证");
         String token = (String) auth.getCredentials();
         if (StrUtil.isEmpty(token)){
-            throw new JwtAuthenticationException(3004, "无token,请重新登录");
+            throw new BusinessException(ErrorCode.NON_TOKEN);
         }
         // 解密获得username,用于和数据库进行对比
         String username = JwtUtil.getUsername(token);
         if (username == null) {
-            throw new JwtAuthenticationException(3004, "访问异常!");
+            throw new BusinessException(ErrorCode.TOKEN_ILLEGAL);
         }
         if (!JwtUtil.isVerify(token, username)) {
-            throw new JwtAuthenticationException(3004, "非法访问!");
+            throw new BusinessException(ErrorCode.TOKEN_ILLEGAL);
         }
         // TODO: 2021/12/21
-//        SSOUser ssoUser = SSOLoginHelper.loginCheck(token);
-//        if (ssoUser == null){
-//            throw new JwtAuthenticationException(3004, "用户未登录");
-//        }
+        SSOUser ssoUser = this.SSOLoginHelper.loginCheckV3(token);
+        if (ssoUser == null){
+            throw new BusinessException(ErrorCode.TOKEN_NOT_FOUND);
+        }
 //
 //        // refresh
         // TODO: 2021/12/21

+ 2 - 1
4dkankan-common/src/main/java/com/fdkankan/common/user/SSOLoginHelper.java

@@ -3,9 +3,10 @@ package com.fdkankan.common.user;
 import com.fdkankan.common.constant.LoginType;
 import com.fdkankan.common.util.JwtUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
-@Component
+@Component("ssoLoginHelper")
 public class SSOLoginHelper {
 
     @Autowired

+ 5 - 5
4dkankan-common/src/main/java/com/fdkankan/common/user/SSOLoginStore.java

@@ -23,6 +23,11 @@ public class SSOLoginStore {
 
     @Resource
     private RedisUtil redisUtil;
+
+    @Resource
+    @Qualifier("redisTemplate2")
+    private RedisTemplate redisTemplate2;
+
     /**
      * get
      * @param userName
@@ -37,11 +42,6 @@ public class SSOLoginStore {
         return null;
     }
 
-
-    @Resource
-    @Qualifier("redisTemplate2")
-    private RedisTemplate redisTemplate2;
-
     public  com.fdkankan.common.model.SSOUser getV3(String token) {
         String redisKey = "token#".concat(token);
         Object obj = redisTemplate2.opsForValue().get(redisKey);