LingxinMeng 2 år sedan
förälder
incheckning
5ab1a641e3

+ 1 - 0
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/consumer/ProjectConsumer.java

@@ -340,6 +340,7 @@ public class ProjectConsumer {
             throw new RuntimeException("未知角色类型:" + roleCode);
         }
         PrefixEntity redisPrefix = projectUtil.getRedisPrefixByClusterIdAndProjectId(clusterEntity.getId(), projectId);
+        projectUtil.checkLicense(userId,clusterEntity.getNumSimulationLicense(),clusterEntity.getNumDynamicLicense());
         if (DictConstants.MODEL_TYPE_VTD.equals(modelType)) {
             // 获取仿真软件证书数量和动力学软件证书数量(vtd占一个仿真证书,carsim各占一个)
 //            // 获取正在运行的项目的并行度总和

+ 15 - 0
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/util/ProjectUtil.java

@@ -643,6 +643,20 @@ public class ProjectUtil {
         return result;
     }
 
+
+    public void checkLicense(String userId,Integer numSimulationLicense, Integer numDynamicLicense) {
+        String key1 = "user:" + userId + ":using-license:vtd";
+        final String usingLicense1 = customRedisClient.get(key1);
+        if (StringUtil.isEmpty(usingLicense1)) {
+            customRedisClient.set(key1, numSimulationLicense.toString());
+        }
+        String key2 = "user:" + userId + ":using-license:carsim";
+        final String usingLicense2 = customRedisClient.get(key2);
+        if (StringUtil.isEmpty(usingLicense2)) {
+            customRedisClient.set(key2, numDynamicLicense.toString());
+        }
+    }
+
     public Integer getUsingLicenseNumber(String userId, String modelType) {
         String key;
         if (DictConstants.MODEL_TYPE_VTD.equals(modelType)) {
@@ -729,4 +743,5 @@ public class ProjectUtil {
             throw new RuntimeException("未知项目类型:" + projectType);
         }
     }
+
 }

+ 11 - 2
simulation-resource-server/src/main/java/com/css/simulation/resource/common/exception/GlobalExceptionHandler.java → simulation-resource-server/src/main/java/com/css/simulation/resource/common/advice/ExceptionHandlerControllerAdvice.java

@@ -1,4 +1,4 @@
-package com.css.simulation.resource.common.exception;
+package com.css.simulation.resource.common.advice;
 
 import api.common.pojo.common.ResponseBodyVO;
 import lombok.extern.slf4j.Slf4j;
@@ -13,7 +13,7 @@ import java.util.Objects;
 
 @RestControllerAdvice
 @Slf4j
-public class GlobalExceptionHandler {
+public class ExceptionHandlerControllerAdvice {
     /**
      * 方法参数校验
      */
@@ -42,6 +42,15 @@ public class GlobalExceptionHandler {
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE, "Access is denied!");
     }
 
+    /**
+     * 权限校验异常统一处理
+     */
+    @ExceptionHandler(RuntimeException.class)
+    public ResponseBodyVO<Object> handleRuntimeException(RuntimeException e) {
+        log.error(e.getMessage(), e);
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE, e.getMessage());
+    }
+
     /**
      * 服务器错误异常统一处理
      */