Browse Source

Merge branch 'master' of http://10.12.10.70:3000/CSS/simulation-cloud

zuoqingtong 2 năm trước cách đây
mục cha
commit
95828ff64c
34 tập tin đã thay đổi với 662 bổ sung87 xóa
  1. 0 7
      api-common/pom.xml
  2. 19 0
      api-common/src/main/java/api/common/pojo/dto/SmsDTO.java
  3. 1 0
      api-common/src/main/java/api/common/pojo/param/scene/SceneAccidentParam.java
  4. 2 0
      api-common/src/main/java/api/common/pojo/param/scene/SceneGeneralTemplateParam.java
  5. 1 4
      pom.xml
  6. 5 2
      simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/consumer/ProjectConsumer.java
  7. 0 1
      simulation-resource-server/pom.xml
  8. 5 2
      simulation-resource-server/src/main/java/com/css/simulation/resource/algorithm/serviceImpl/AlgorithmServiceImpl.java
  9. 1 0
      simulation-resource-server/src/main/java/com/css/simulation/resource/configuration/sms/SmsConfiguration.java
  10. 7 7
      simulation-resource-server/src/main/java/com/css/simulation/resource/project/impl/SimulationProjectServiceImpl.java
  11. 15 8
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/ctrl/ScoringRulesController.java
  12. 1 1
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/ScenePackageMapper.java
  13. 1 1
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/ScoringRulesMapper.java
  14. 1 0
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/SceneAccidentService.java
  15. 12 6
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/SceneGeneralExampleService.java
  16. 61 11
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/ScenePackageService.java
  17. 19 3
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/ScoringRulesService.java
  18. 22 18
      simulation-resource-server/src/main/java/com/css/simulation/resource/system/service/UserService.java
  19. 8 6
      simulation-resource-server/src/main/resources/mapper/algorithm/AlgorithmMapper.xml
  20. 2 2
      simulation-resource-server/src/main/resources/mapper/scene/SceneAccidentMapper.xml
  21. 14 0
      simulation-resource-server/src/main/resources/mapper/scene/SceneGeneralTemplateMapper.xml
  22. 0 3
      simulation-resource-server/src/main/resources/mapper/scene/ScenePackageMapper.xml
  23. 1 4
      simulation-resource-server/src/main/resources/mapper/scene/ScoringRulesMapper.xml
  24. 109 0
      simulation-resource-sms/pom.xml
  25. 20 0
      simulation-resource-sms/src/main/java/com/css/simulation/resource/sms/SimulationResourceSmsApplication.java
  26. 40 0
      simulation-resource-sms/src/main/java/com/css/simulation/resource/sms/consumer/SmsConsumer.java
  27. 19 0
      simulation-resource-sms/src/main/java/com/css/simulation/resource/sms/pojo/dto/SmsDTO.java
  28. 114 0
      simulation-resource-sms/src/main/java/com/css/simulation/resource/sms/util/JsonUtil.java
  29. 1 1
      simulation-resource-sms/src/main/java/com/css/simulation/resource/sms/util/TencentSMSUtil.java
  30. 10 0
      simulation-resource-sms/src/main/resources/bootstrap-aliyun.yaml
  31. 10 0
      simulation-resource-sms/src/main/resources/bootstrap-dev.yaml
  32. 10 0
      simulation-resource-sms/src/main/resources/bootstrap-test.yaml
  33. 9 0
      simulation-resource-sms/src/main/resources/bootstrap.yaml
  34. 122 0
      simulation-resource-sms/src/main/resources/logback-spring.xml

+ 0 - 7
api-common/pom.xml

@@ -17,16 +17,9 @@
         <jackson-core.version>2.13.1</jackson-core.version>
         <sshd-netty.version>2.8.0</sshd-netty.version>
         <dom4j.version>2.1.3</dom4j.version>
-        <tencentcloud-sdk-java.version>3.1.600</tencentcloud-sdk-java.version>
     </properties>
 
     <dependencies>
-        <!-- 腾讯云服务 -->
-        <dependency>
-            <groupId>com.tencentcloudapi</groupId>
-            <artifactId>tencentcloud-sdk-java</artifactId>
-            <version>${tencentcloud-sdk-java.version}</version>
-        </dependency>
 
         <!-- xml 处理库 -->
         <dependency>

+ 19 - 0
api-common/src/main/java/api/common/pojo/dto/SmsDTO.java

@@ -0,0 +1,19 @@
+package api.common.pojo.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SmsDTO {
+    private String secretId;
+    private String secretKey;
+    private String sdkAppId;
+    private String signName;
+    private String templateId;
+    private String phone;
+}

+ 1 - 0
api-common/src/main/java/api/common/pojo/param/scene/SceneAccidentParam.java

@@ -43,5 +43,6 @@ public class SceneAccidentParam extends PageVO implements Serializable {
 
     private String[] ids ; //回显数组
     private String[] allSceneNames ; //场景名集合
+    private String share;
 
 }

+ 2 - 0
api-common/src/main/java/api/common/pojo/param/scene/SceneGeneralTemplateParam.java

@@ -28,4 +28,6 @@ public class SceneGeneralTemplateParam extends PageVO implements Serializable {
     private String[] ids ; //回显数组
     private String[] allSceneNames ; //场景名集合
 
+    private List<String> scenarioRoadType;//道路类型
+
 }

+ 1 - 4
pom.xml

@@ -22,6 +22,7 @@
         <module>simulation-resource-monitor</module>
         <module>simulation-resource-scene</module>
         <module>simulation-resource-video</module>
+        <module>simulation-resource-sms</module>
     </modules>
 
 
@@ -58,16 +59,12 @@
         <kubernetes-client.version>15.0.1</kubernetes-client.version>
         <snakeyaml.version>1.30</snakeyaml.version>
         <docker-java.version>3.2.13</docker-java.version>
-
     </properties>
 
 
     <!--子模块继承之后,提供作用:锁定版本 + 子 module 不用谢 groupId 和 version-->
     <dependencyManagement>
         <dependencies>
-
-
-
             <!-- 解决依赖冲突 -->
             <dependency>
                 <groupId>ch.qos.logback</groupId>

+ 5 - 2
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/consumer/ProjectConsumer.java

@@ -218,10 +218,13 @@ public class ProjectConsumer {
         VehiclePO vehiclePO = vehicleMapper.selectByVehicleConfigId(vehicleConfigId);   // 车辆
         List<CameraPO> cameraPOList = sensorCameraMapper.selectCameraByVehicleConfigId(vehicleConfigId);    // 摄像头
         List<OgtPO> ogtPOList = sensorOgtMapper.selectOgtByVehicleId(vehicleConfigId); // 完美传感器
-        // -------------------------------- 3 算法导入(一期按单机版做) --------------------------------
+        // -------------------------------- 3 算法导入 --------------------------------
         String algorithmDockerImage = projectService.handleAlgorithm(projectId, algorithmId);
         // -------------------------------- 4 发送任务消息 --------------------------------
-        projectService.sendTaskMessage(realCurrentParallelism, projectRunningKey, userId, projectId, projectType, nodeMap, algorithmDockerImage, videoTime, scenePOSet, vehiclePO, cameraPOList, ogtPOList);
+        projectService.sendTaskMessage(realCurrentParallelism, projectRunningKey, userId, projectId, projectType,
+                nodeMap, algorithmDockerImage, videoTime, scenePOSet, vehiclePO, cameraPOList, ogtPOList);
+
+
         // -------------------------------- 5 创建 pod 开始执行 --------------------------------
 //        projectService.createPod(projectId, nodeMap, algorithmDockerImage);
 

+ 0 - 1
simulation-resource-server/pom.xml

@@ -21,7 +21,6 @@
         <dependency>
             <groupId>org.apache.kafka</groupId>
             <artifactId>kafka-clients</artifactId>
-            <version>${kafka-clients.version}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.kafka</groupId>

+ 5 - 2
simulation-resource-server/src/main/java/com/css/simulation/resource/algorithm/serviceImpl/AlgorithmServiceImpl.java

@@ -306,6 +306,7 @@ public class AlgorithmServiceImpl implements AlgorithmService {
         if (isEmpty(param.getId())) {
             return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE);
         } else {
+            Map map =new HashMap();
             String algorithmId = param.getId();
             List<RunningProjectVO> runningParentProjectVos = algorithmMapper.selectRunningProjectParent(algorithmId);
             if (runningParentProjectVos != null && runningParentProjectVos.size() > 0) {
@@ -315,9 +316,11 @@ public class AlgorithmServiceImpl implements AlgorithmService {
                 }
 
                 String substring = stringBuffer.substring(0, stringBuffer.lastIndexOf(","));
-                return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS, "该算法已绑定ID:" + substring + " 自动运行项目,删除后该项目将停止自动运行");
+                map.put("substring",substring);
+                return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS, "该算法已绑定ID:" + substring + " 自动运行项目,删除后该项目将停止自动运行",map);
             } else {
-                return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS,"该算法未绑定自动运行项目");
+                map.put("substring","");
+                return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS,"该算法未绑定自动运行项目",map);
             }
         }
     }

+ 1 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/configuration/sms/SmsConfiguration.java

@@ -14,4 +14,5 @@ public class SmsConfiguration {
     private String signName;
     private String templateIdForReset;
     private String templateIdForCreate;
+    private String kafkaTopic;
 }

+ 7 - 7
simulation-resource-server/src/main/java/com/css/simulation/resource/project/impl/SimulationProjectServiceImpl.java

@@ -220,19 +220,19 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
     }
 
     @Override
-    public ResponseBodyVO selectProjectById(SimulationManualProjectParam param) {
+    public ResponseBodyVO<SimulationManualProjectSingleVo> selectProjectById(SimulationManualProjectParam param) {
         if (isEmpty(param.getId())) {
-            return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE);
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE);
         }
         SimulationManualProjectPo po = simulationProjectMapper.selectProjectById(param);
         if (po == null) {
-            return new ResponseBodyVO(ResponseBodyVO.Response.SERVER_FAILURE, "没有获取到数据");
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE, "没有获取到数据");
         }
 
         SimulationManualProjectSingleVo vo = new SimulationManualProjectSingleVo();
         convertPoToVo(po, vo);
 
-        return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS, vo);
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, vo);
 
     }
 
@@ -251,7 +251,7 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
         List<SimulationManualProjectPo> pos = simulationProjectMapper.selectProjectNowRunState(idArr);
         for (SimulationManualProjectPo p : pos) {
             if (ProjectRunStateEnum.EXECUTION.getCode().equals(p.getNowRunState())) {
-                return new ResponseBodyVO(ResponseBodyVO.Response.SERVER_FAILURE, "数据不支持删除");
+                return new ResponseBodyVO(ResponseBodyVO.Response.SERVER_FAILURE, "数据不支持删除");
             }
         }
 
@@ -260,7 +260,7 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
             return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS);
         }
 
-        return new ResponseBodyVO(ResponseBodyVO.Response.SERVER_FAILURE, "删除失败");
+        return new ResponseBodyVO(ResponseBodyVO.Response.SERVER_FAILURE, "删除失败");
     }
 
     @SneakyThrows
@@ -274,7 +274,7 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
         SimulationManualProjectPo po = simulationProjectMapper.selectProjectById(param);
 
         if (po == null) {
-            return new ResponseBodyVO(ResponseBodyVO.Response.SERVER_FAILURE, "数据没有找到");
+            return new ResponseBodyVO(ResponseBodyVO.Response.SERVER_FAILURE, "数据没有找到");
         }
 
         //已经完成的项目再次运行

+ 15 - 8
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/ctrl/ScoringRulesController.java

@@ -61,12 +61,12 @@ public class ScoringRulesController {
     //查唯一
     @PostMapping("/queryScoringRulesCount")
     @ResponseBody
-    public ResponseBodyVO<List<ScoringRulesPO>> queryScoringRulesCount(@RequestBody ScoringRulesParam parms) {
+    public ResponseBodyVO<ScoringRulesPO> queryScoringRulesCount(@RequestBody ScoringRulesParam parms) {
         if (ObjectUtil.isNull(parms.getRuleName())) {
             return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "参数RulesName不能为空,请检查");
         }
-        List<ScoringRulesPO> list = scoringRulesService.queryScoringRulesByRuleName(parms);
-        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, list);
+        ScoringRulesPO po = scoringRulesService.queryScoringRulesByRuleName(parms);
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, po);
     }
 
 
@@ -80,8 +80,8 @@ public class ScoringRulesController {
         BeanUtils.copyProperties(scoringRulesPO, vo);
         vo.setShare("0");
         //1 检查是否存在同名平分规则
-        List<ScoringRulesPO> list = scoringRulesService.queryScoringRulesByRuleName(vo);
-        if (list != null && list.size() > 0) {
+        ScoringRulesPO tmPo = scoringRulesService.queryScoringRulesByRuleName(vo);
+        if (ObjectUtil.isNotNull(tmPo)) {
             return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "规则名称 ruleName 已存在,请重新命名。");
         }
         //2 校验 python 语法错误
@@ -116,9 +116,16 @@ public class ScoringRulesController {
         ScoringRulesPO po = scoringRulesService.queryScoringRules(params);
         params.setShare("1");
         params.setRuleName(po.getRuleName());
-        List<ScoringRulesPO> list = scoringRulesService.queryScoringRulesByRuleName(params);
-        if (list != null && list.size() > 0) {
+        ScoringRulesPO tmPo = scoringRulesService.queryScoringRulesByRuleName(params);
+       /* if (list != null && list.size() > 0) {
             return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "规则名称ruleName已存在,请重新命名", "");
+        }*/
+
+        if (ObjectUtil.isNotNull(tmPo)) {
+            po.setShare("1");
+            po.setRulesId(tmPo.getRulesId());
+            scoringRulesService.updateScoringRules(po);
+            return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
         }
         po.setShare("1");
         scoringRulesService.saveScoringRules(po);
@@ -139,7 +146,7 @@ public class ScoringRulesController {
     public ResponseBodyVO<List<ScoringRulesPO>> queryCsb() {
         ScoringRulesParam params = new ScoringRulesParam();
         params.setShare("0");
-        List<ScoringRulesPO> list = scoringRulesService.queryScoringRulesList(params);
+        List<ScoringRulesPO> list = scoringRulesService.queryScoringRulesListCSB(params);
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, list);
     }
 

+ 1 - 1
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/ScenePackageMapper.java

@@ -27,7 +27,7 @@ public interface ScenePackageMapper {
     ScenePackageNewVO queryScenePackageBySublist(String packageId);
 
     //测试包名查唯一
-    List<ScenePackageNewVO> queryByPackageName(ScenePackagePO params);
+    ScenePackageNewVO queryByPackageName(ScenePackagePO params);
     //测试包数量
     Integer queryPackageCount(ScenePackagePO params);
 

+ 1 - 1
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/ScoringRulesMapper.java

@@ -13,7 +13,7 @@ public interface ScoringRulesMapper {
 
     void saveScoringRules(ScoringRulesPO params);
 
-    List<ScoringRulesPO> queryScoringRulesByRuleName(ScoringRulesParam params);
+    ScoringRulesPO queryScoringRulesByRuleName(ScoringRulesParam params);
 
     List<ScoringRulesPO> queryScoringRulesList(ScoringRulesParam params);
     Integer queryCsbById(ScoringRulesParam params);

+ 1 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/SceneAccidentService.java

@@ -712,6 +712,7 @@ public class SceneAccidentService {
                                     sceneAccidentPO.setSceneWeather(root.path("天气").asText());
                                     sceneAccidentPO.setMaxTime(root.path("max_time").asText());
                                     sceneAccidentPO.setIsDeleted("0");
+                                    sceneAccidentPO.setShare("0");
                                     if (ObjectUtil.isNull(sceneAccidentPO.getOsgbAddress())) {
                                         sceneAccidentPO.setOsgbAddress(osgbAdress);
                                     }

+ 12 - 6
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/SceneGeneralExampleService.java

@@ -159,25 +159,29 @@ public class SceneGeneralExampleService {
         //远程调用接口
         Map map=  beanToMap(po);
         RequestConfig requestConfig = RequestConfig.custom()
-                .setSocketTimeout(6*10*1000)
-                .setConnectTimeout(6*10*1000)
-                .setConnectionRequestTimeout(6*10*1000)
+                .setSocketTimeout(2*60*1000)
+                .setConnectTimeout(2*60*1000)
+                .setConnectionRequestTimeout(2*6*10*1000)
                 .setRedirectsEnabled(false)
                 .setExpectContinueEnabled(false)
                 .build();
-
+       // log.info("测试是否调用成功---入参--"+map);
         String post = HttpUtil.post(HttpUtil.getHttpClient(), requestConfig, "http://47.94.105.148:5000/test_1.0", null, map);
-       Boolean success= JsonUtil.readTree(post).get("success").asBoolean();
+       //log.info("测试是否调用成功-----"+post);
+
+        Boolean success= JsonUtil.readTree(post).get("success").asBoolean();
        if(!success){
            String message= JsonUtil.readTree(post).get("message").toString();
            return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE, message);
        }
         JsonNode params = JsonUtil.readTree(post).get("params");
+
         // 实例化 ObjectMapper 对象
         ObjectMapper objectMapper = new ObjectMapper();
         String newjson = objectMapper.writeValueAsString(params);
-        List<SceneGeneralDataPO>  list=JsonUtil.jsonToList(newjson,SceneGeneralDataPO.class);
 
+        List<SceneGeneralDataPO>  list=JsonUtil.jsonToList(newjson,SceneGeneralDataPO.class);
+        log.info("测试是否调用成功---444--"+list.size());
         String sceneGeneralizationIds=null;
         //生成指标id
         String sublistId=StringUtil.getRandomUUID();
@@ -218,6 +222,8 @@ public class SceneGeneralExampleService {
         map1.put("templateId",po.getTemplateId()); //模板id
         map1.put("sceneGeneralizationIds",sceneGeneralizationIds);//泛化场景数组
         map1.put("sublistId",sublistId); //指标id
+
+        log.info("测试是否调用成功---555555--"+map1);
         return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS, map1);
 
     }

+ 61 - 11
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/ScenePackageService.java

@@ -2,8 +2,10 @@ package com.css.simulation.resource.scene.service;
 
 import api.common.pojo.common.ResponseBodyVO;
 import api.common.pojo.param.scene.ScenePackageParam;
+import api.common.pojo.param.scene.ScoringRulesParam;
 import api.common.pojo.po.scene.ScenePackagePO;
 import api.common.pojo.po.scene.ScenePackageSublistPO;
+import api.common.pojo.po.scene.ScoringRulesPO;
 import api.common.pojo.vo.scene.ScenePackageNewVO;
 import api.common.pojo.vo.scene.ScenePackageSublistVO;
 import api.common.util.LogUtil;
@@ -13,6 +15,7 @@ import api.common.util.TimeUtil;
 import com.css.simulation.resource.common.utils.AuthUtil;
 import com.css.simulation.resource.scene.mapper.ScenePackageMapper;
 import com.css.simulation.resource.scene.mapper.ScenePackageSublistMapper;
+import com.css.simulation.resource.scene.mapper.ScoringRulesMapper;
 import com.css.simulation.resource.system.service.ParameterService;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
@@ -32,6 +35,9 @@ public class ScenePackageService {
     private ScenePackageSublistMapper scenePackageSublistMapper;
     @Resource
     private ParameterService parameterService;
+    @Resource
+    private ScoringRulesMapper scoringRulesMapper;
+
 
     /**
      * 测试包数据录入大保存:
@@ -44,8 +50,8 @@ public class ScenePackageService {
             po.setPackageName(vo.getSublistName());
             po.setCreateUserId(AuthUtil.getCurrentUserId());
             po.setShare("0");
-            List<ScenePackageNewVO> listName = scenePackageMapper.queryByPackageName(po);
-            if (listName != null && listName.size() > 0) {
+            ScenePackageNewVO scenePackageNewVO  = scenePackageMapper.queryByPackageName(po);
+            if (ObjectUtil.isNotNull(scenePackageNewVO)) {
                 return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE, "测试包名称:" + po.getPackageName() + "已存在,请重新命名");
             }
             po.setWeight(vo.getWeight());
@@ -109,8 +115,8 @@ public class ScenePackageService {
             po.setCreateUserId(AuthUtil.getCurrentUserId());
             po.setShare("0");
             po.setPackageId(vo.getId());
-            List<ScenePackageNewVO> listName = scenePackageMapper.queryByPackageName(po);
-            if (listName != null && listName.size() > 0) {
+            ScenePackageNewVO scenePackageNewVO = scenePackageMapper.queryByPackageName(po);
+            if (ObjectUtil.isNotNull(scenePackageNewVO)) {
                 return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE, "测试包名称:" + po.getPackageName() + "已存在,请重新命名");
             }
             po.setWeight(vo.getWeight());
@@ -257,16 +263,19 @@ public class ScenePackageService {
         ScenePackagePO po = new ScenePackagePO();
         po.setShare("1");
         po.setPackageName(scenePackagePO.getPackageName());
-        List<ScenePackageNewVO> listName = scenePackageMapper.queryByPackageName(po);
-        if (listName != null && listName.size() > 0) {
-            return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "测试包名称:" + listName.get(0).getPackageName() + "的测试包已存在,请检查");
-        }
+        ScenePackageNewVO scenePackageNewVO = scenePackageMapper.queryByPackageName(po);
+
         BeanUtils.copyProperties(scenePackagePO, po);
         po.setCreateTime(TimeUtil.getNowForMysql());
         po.setModifyTime(TimeUtil.getNowForMysql());
         po.setCreateUserId(AuthUtil.getCurrentUserId());
         po.setPackageCode(StringUtil.getRandomCode());
-        String uuId = StringUtil.getRandomUUID();
+        String uuId ="";
+        if (ObjectUtil.isNotNull(scenePackageNewVO)) {
+           uuId =scenePackageNewVO.getPackageId();
+        }else{
+           uuId = StringUtil.getRandomUUID();
+        }
         po.setPackageId(uuId);
         po.setIsDeleted("0");
         po.setShare("1");
@@ -276,6 +285,9 @@ public class ScenePackageService {
         if (treeList != null && treeList.size() > 1) {
             Set set = new HashSet();
             Map map = new HashMap<>();
+            //打分规则
+            ScoringRulesParam scoringRulesParam=new ScoringRulesParam();
+            ScoringRulesParam gyParam=new ScoringRulesParam();
             for (ScenePackageSublistPO vo : treeList) {
                 Object sublistName = map.get(vo.getSublistName());
                 if (ObjectUtil.isNull(sublistName)) {
@@ -283,12 +295,50 @@ public class ScenePackageService {
                 } else {
                     set.add(vo.getSublistName());
                 }
+                //分享打分规则
+                scoringRulesParam.setRulesId(vo.getPackageAndRules());
+                ScoringRulesPO syPo= scoringRulesMapper.queryScoringRules( scoringRulesParam);//私有
+                gyParam.setShare("1");
+                gyParam.setRuleName(syPo.getRuleName());
+                ScoringRulesPO gyPo=scoringRulesMapper.queryScoringRulesByRuleName(gyParam);
+                if(ObjectUtil.isNotNull(gyPo)){
+                    syPo.setRulesId(gyPo.getRulesId());
+                    syPo.setShare("1");
+                    syPo.setModifyTime(TimeUtil.getNowForMysql());
+                    syPo.setModifyUserId(AuthUtil.getCurrentUserId());
+                    scoringRulesMapper.updateScoringRules(syPo);
+                }else{
+                    syPo.setCreateTime(TimeUtil.getNowForMysql());
+                    syPo.setModifyTime(TimeUtil.getNowForMysql());
+                    syPo.setRulesId(StringUtil.getRandomUUID());
+                    syPo.setRulesCode(StringUtil.getRandomCode());
+                    syPo.setCreateUserId(AuthUtil.getCurrentUserId());
+                    syPo.setIsDeleted("0");
+                    syPo.setShare("1");
+                    scoringRulesMapper.saveScoringRules(syPo);
+                    vo.setPackageAndRules(syPo.getRulesId());
+                }
+
             }
             if (ObjectUtil.isNotNull(set)) {
                 return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "该条数据中指标名称:" + set + "重复,请检查");
             }
+
+
+
+        }
+        //判断是否存在,存在覆盖
+        if (ObjectUtil.isNotNull(scenePackageNewVO)) {
+            //return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "测试包名称:" + listName.get(0).getPackageName() + "的测试包已存在,请检查");
+            scenePackagePO.setShare("1");
+            scenePackagePO.setModifyTime(TimeUtil.getNowForMysql());
+            scenePackagePO.setModifyUserId(AuthUtil.getCurrentUserId());
+            scenePackagePO.setPackageId(scenePackageNewVO.getPackageId());
+            scenePackageMapper.updateScenePackage(scenePackagePO);
+            scenePackageSublistMapper.deleteScenePackageSublist(scenePackageNewVO.getPackageId());
+        }else{
+            scenePackageMapper.saveScenePackage(po);
         }
-        scenePackageMapper.saveScenePackage(po);
         scenePackageSublistMapper.saveScenePackageSublistAll(treeList);
         LogUtil.insert();
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
@@ -342,7 +392,7 @@ public class ScenePackageService {
     }
 
     //测试包名查唯一
-    public List<ScenePackageNewVO> queryByPackageName(ScenePackagePO params) {
+    public ScenePackageNewVO queryByPackageName(ScenePackagePO params) {
         return scenePackageMapper.queryByPackageName(params);
     }
 

+ 19 - 3
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/ScoringRulesService.java

@@ -35,6 +35,21 @@ public class ScoringRulesService {
         LogUtil.insert();
     }
 
+    @SneakyThrows
+    public List<ScoringRulesPO> queryScoringRulesListCSB(ScoringRulesParam params) {
+        if (params != null && params.getShare() != null && params.getShare().equals("0")) {
+            params.setCreateUserId(AuthUtil.getCurrentUserId());
+        }
+        List<ScoringRulesPO> list = scoringRulesMapper.queryScoringRulesList(params);
+
+        //查询共有
+        params.setCreateUserId("");
+        params.setShare("1");
+        List<ScoringRulesPO> list1 = scoringRulesMapper.queryScoringRulesList(params);
+        list.addAll(list1);
+        return list;
+    }
+
     @SneakyThrows
     public List<ScoringRulesPO> queryScoringRulesList(ScoringRulesParam params) {
         if (params != null && params.getShare() != null && params.getShare().equals("0")) {
@@ -44,6 +59,7 @@ public class ScoringRulesService {
         return list;
     }
 
+
     @SneakyThrows
     public ScoringRulesPO queryScoringRules(ScoringRulesParam params) {
         ScoringRulesPO Po = scoringRulesMapper.queryScoringRules(params);
@@ -51,10 +67,10 @@ public class ScoringRulesService {
     }
 
     @SneakyThrows
-    public List<ScoringRulesPO> queryScoringRulesByRuleName(ScoringRulesParam params) {
-        if (params.getShare().equals("0")) {
+    public ScoringRulesPO queryScoringRulesByRuleName(ScoringRulesParam params) {
+   /*     if (params.getShare().equals("0")) {
             params.setCreateUserId(AuthUtil.getCurrentUserId());
-        }
+        }*/
         return scoringRulesMapper.queryScoringRulesByRuleName(params);
     }
 

+ 22 - 18
simulation-resource-server/src/main/java/com/css/simulation/resource/system/service/UserService.java

@@ -2,14 +2,15 @@ package com.css.simulation.resource.system.service;
 
 import api.common.pojo.constants.DictConstants;
 import api.common.pojo.constants.LogConstants;
+import api.common.pojo.dto.SmsDTO;
 import api.common.pojo.param.system.UserParam;
 import api.common.pojo.po.system.UserPO;
 import api.common.pojo.vo.system.ParameterVO;
 import api.common.pojo.vo.system.UserVO;
 import api.common.util.EncryptUtil;
+import api.common.util.JsonUtil;
 import api.common.util.ObjectUtil;
 import api.common.util.StringUtil;
-import api.common.util.TencentSMSUtil;
 import com.css.simulation.resource.common.oauth.OauthParameter;
 import com.css.simulation.resource.common.utils.AuthUtil;
 import com.css.simulation.resource.common.utils.PageUtil;
@@ -19,6 +20,7 @@ import com.css.simulation.resource.log.service.LogService;
 import com.css.simulation.resource.system.mapper.UserMapper;
 import com.github.pagehelper.PageInfo;
 import lombok.SneakyThrows;
+import org.springframework.kafka.core.KafkaTemplate;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -42,6 +44,8 @@ public class UserService {
     ParameterService parameterService;
     @Resource
     SmsConfiguration smsConfiguration;
+    @Resource
+    KafkaTemplate<String, String> kafkaTemplate;
 
     public UserVO getCurrentUserInfo() {
         String userId = AuthUtil.getCurrentUserId();
@@ -129,15 +133,15 @@ public class UserService {
             userMapper.insert(userPO);
             logService.logUser(LogConstants.SYS_LOG_USER_INSERT, userPO);
 
-            // 发送短信
-            TencentSMSUtil.send(
-                    smsConfiguration.getSecretId(),
-                    smsConfiguration.getSecretKey(),
-                    smsConfiguration.getSdkAppId(),
-                    smsConfiguration.getSignName(),
-                    smsConfiguration.getTemplateIdForCreate(),
-                    new String[]{},
-                    new String[]{userPO.getPhone()}
+
+            kafkaTemplate.send(smsConfiguration.getKafkaTopic(),
+                    JsonUtil.beanToJson(SmsDTO.builder()
+                            .secretId(smsConfiguration.getSecretId())
+                            .secretKey(smsConfiguration.getSecretKey())
+                            .signName(smsConfiguration.getSignName())
+                            .templateId(smsConfiguration.getTemplateIdForCreate())
+                            .phone(userPO.getPhone())
+                            .build())
             );
 
         } else {
@@ -157,14 +161,14 @@ public class UserService {
         logService.logUser(LogConstants.SYS_LOG_USER_RESET, userPO);
 
         // 发送短信
-        TencentSMSUtil.send(
-                smsConfiguration.getSecretId(),
-                smsConfiguration.getSecretKey(),
-                smsConfiguration.getSdkAppId(),
-                smsConfiguration.getSignName(),
-                smsConfiguration.getTemplateIdForReset(),
-                new String[]{},
-                new String[]{userPO.getPhone()}
+        kafkaTemplate.send(smsConfiguration.getKafkaTopic(),
+                JsonUtil.beanToJson(SmsDTO.builder()
+                        .secretId(smsConfiguration.getSecretId())
+                        .secretKey(smsConfiguration.getSecretKey())
+                        .signName(smsConfiguration.getSignName())
+                        .templateId(smsConfiguration.getTemplateIdForCreate())
+                        .phone(userPO.getPhone())
+                        .build())
         );
     }
 

+ 8 - 6
simulation-resource-server/src/main/resources/mapper/algorithm/AlgorithmMapper.xml

@@ -83,19 +83,21 @@
 
     <!--查询绑定算法的正在运行的项目-->
     <select id="selectRunningProject"  parameterType="java.lang.String" resultType="api.common.pojo.vo.algorithm.RunningProjectVO">
-        select id,project_id  from simulation_automatic_subproject
-        where now_run_state = '20' and is_deleted = '0'
+        select a.id,a.project_id  from simulation_automatic_subproject a left join simulation_automatic_project b
+        on a.parent_id=b.id
+        where a.now_run_state = '20' and a.is_deleted = '0' and  b.is_deleted = '0'
         <if test="id != null and id != ''">
-            and  algorithm = #{id,jdbcType=VARCHAR}
+            and  b.algorithm = #{id,jdbcType=VARCHAR}
         </if>
     </select>
 
     <!--查询绑定算法的正在运行的项目的父项目-->
     <select id="selectRunningProjectParent"  parameterType="java.lang.String" resultType="api.common.pojo.vo.algorithm.RunningProjectVO">
-        select distinct parent_id as id,parent_project_id as projectId  from simulation_automatic_subproject
-        where now_run_state = '20' and is_deleted = '0'
+        select distinct a.parent_id as id,a.parent_project_id as projectId  from simulation_automatic_subproject a left join simulation_automatic_project b
+        on a.parent_id=b.id
+        where a.now_run_state = '20' and a.is_deleted = '0' and  b.is_deleted = '0'
         <if test="id != null and id != ''">
-            and  algorithm = #{id,jdbcType=VARCHAR}
+            and  b.algorithm = #{id,jdbcType=VARCHAR}
         </if>
     </select>
 

+ 2 - 2
simulation-resource-server/src/main/resources/mapper/scene/SceneAccidentMapper.xml

@@ -302,7 +302,7 @@
        scene_weather=#{sceneWeather},modify_time=#{modifyTime},
        modify_user_id=#{modifyUserId},video_address=#{videoAddress},
        osgb_address=#{osgbAddress},xml_address=#{xmlAddress},
-       xodr_address=#{xodrAddress},json_address=#{jsonAddress},max_time=#{maxTime}
+       xodr_address=#{xodrAddress},json_address=#{jsonAddress},max_time=#{maxTime},share=#{share}
         where accident_id = #{accidentId,jdbcType=VARCHAR}
     </update>
 
@@ -316,7 +316,7 @@
             scene_weather=#{item.sceneWeather},modify_time=#{item.modifyTime},
             modify_user_id=#{item.modifyUserId},video_address=#{item.videoAddress},
             osgb_address=#{item.osgbAddress},xml_address=#{item.xmlAddress},
-            xodr_address=#{item.xodrAddress},json_address=#{item.jsonAddress},max_time=#{item.maxTime}
+            xodr_address=#{item.xodrAddress},json_address=#{item.jsonAddress},max_time=#{item.maxTime},share=#{share}
             where accident_id = #{item.accidentId,jdbcType=VARCHAR}
         </foreach>
     </update>

+ 14 - 0
simulation-resource-server/src/main/resources/mapper/scene/SceneGeneralTemplateMapper.xml

@@ -80,6 +80,13 @@
                     #{item}
                 </foreach>
             </if>
+            <if test="scenarioRoadType != null and scenarioRoadType.size()>0 ">
+                and scenario_road_type in
+                <foreach collection="scenarioRoadType" item="item" index="index"
+                         separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
         order by modify_time desc
         </where>
     </select>
@@ -201,6 +208,13 @@
                     #{item}
                 </foreach>
             </if>
+            <if test="scenarioRoadType != null and scenarioRoadType.size()>0 ">
+                and scenario_road_type in
+                <foreach collection="scenarioRoadType" item="item" index="index"
+                         separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
             order by modify_time desc
         </where>
     </select>

+ 0 - 3
simulation-resource-server/src/main/resources/mapper/scene/ScenePackageMapper.xml

@@ -160,9 +160,6 @@
             <if test="packageName != null and packageName != ''">
                 and package_name =#{packageName,jdbcType=VARCHAR}
             </if>
-            <if test="createUserId != null and createUserId != ''">
-                and create_user_id=#{createUserId,jdbcType=VARCHAR}
-            </if>
             <if test="share != null and share != ''">
                 and share=#{share,jdbcType=VARCHAR}
             </if>

+ 1 - 4
simulation-resource-server/src/main/resources/mapper/scene/ScoringRulesMapper.xml

@@ -43,9 +43,9 @@
             <if test="createUserId != null and createUserId != ''">
                 and create_user_id=#{createUserId,jdbcType=VARCHAR}
             </if>
-
             order by modify_time desc
         </where>
+
     </select>
     <select id="queryScoringRules" parameterType="api.common.pojo.param.scene.ScoringRulesParam"
             resultType="api.common.pojo.po.scene.ScoringRulesPO">
@@ -77,9 +77,6 @@
             <if test="ruleName != null and ruleName != ''">
                 and rule_name =#{ruleName}
             </if>
-            <if test="createUserId != null and createUserId != ''">
-                and create_user_id=#{createUserId,jdbcType=VARCHAR}
-            </if>
             <if test="share != null and share != ''">
                 and share=#{share,jdbcType=VARCHAR}
             </if>

+ 109 - 0
simulation-resource-sms/pom.xml

@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>simulation-cloud</artifactId>
+        <groupId>com.css</groupId>
+        <version>1.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>simulation-resource-sms</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <tencentcloud-sdk-java.version>3.1.600</tencentcloud-sdk-java.version>
+    </properties>
+
+    <dependencies>
+
+        <!-- apache kafka - 开始 -->
+        <dependency>
+            <groupId>org.apache.kafka</groupId>
+            <artifactId>kafka-clients</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.kafka</groupId>
+            <artifactId>spring-kafka</artifactId>
+        </dependency>
+        <!-- apache kafka - 结束 -->
+
+        <!-- 腾讯云服务 -->
+        <dependency>
+            <groupId>com.tencentcloudapi</groupId>
+            <artifactId>tencentcloud-sdk-java</artifactId>
+            <version>${tencentcloud-sdk-java.version}</version>
+        </dependency>
+
+        <!-- nacos - 开始 -->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-bootstrap</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+        <!-- nacos - 结束 -->
+
+        <!-- 基础 -->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-loadbalancer</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <fork>true</fork>
+                    <addResources>true</addResources>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 20 - 0
simulation-resource-sms/src/main/java/com/css/simulation/resource/sms/SimulationResourceSmsApplication.java

@@ -0,0 +1,20 @@
+package com.css.simulation.resource.sms;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+
+@SpringBootApplication
+@EnableFeignClients
+@EnableDiscoveryClient
+@EnableScheduling
+public class SimulationResourceSmsApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(SimulationResourceSmsApplication.class, args);
+    }
+
+}

+ 40 - 0
simulation-resource-sms/src/main/java/com/css/simulation/resource/sms/consumer/SmsConsumer.java

@@ -0,0 +1,40 @@
+package com.css.simulation.resource.sms.consumer;
+
+
+import com.css.simulation.resource.sms.pojo.dto.SmsDTO;
+import com.css.simulation.resource.sms.util.JsonUtil;
+import com.css.simulation.resource.sms.util.TencentSMSUtil;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.kafka.clients.consumer.ConsumerRecord;
+import org.springframework.kafka.annotation.KafkaListener;
+import org.springframework.stereotype.Component;
+
+@Component
+@Slf4j
+public class SmsConsumer {
+
+    /**
+     * 任务运行前首先判断用户是否拥有可分配资源
+     *
+     * @param projectRecord 项目启动消息
+     */
+    @KafkaListener(groupId = "simulation-resource-sms", topics = "${sms.topic}")
+    @SneakyThrows
+    public void sendShortMessage(ConsumerRecord<String, String> projectRecord) {
+        String smsDTOJson = projectRecord.value();
+        SmsDTO smsDTO = JsonUtil.jsonToBean(smsDTOJson, SmsDTO.class);
+        log.info("SmsConsumer.sendShortMessage() 准备发送短信:" + smsDTOJson);
+        TencentSMSUtil.send(
+                smsDTO.getSecretId(),
+                smsDTO.getSecretKey(),
+                smsDTO.getSdkAppId(),
+                smsDTO.getSignName(),
+                smsDTO.getTemplateId(),
+                new String[]{},
+                new String[]{smsDTO.getPhone()}
+        );
+    }
+
+
+}

+ 19 - 0
simulation-resource-sms/src/main/java/com/css/simulation/resource/sms/pojo/dto/SmsDTO.java

@@ -0,0 +1,19 @@
+package com.css.simulation.resource.sms.pojo.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SmsDTO {
+    private String secretId;
+    private String secretKey;
+    private String sdkAppId;
+    private String signName;
+    private String templateId;
+    private String phone;
+}

+ 114 - 0
simulation-resource-sms/src/main/java/com/css/simulation/resource/sms/util/JsonUtil.java

@@ -0,0 +1,114 @@
+package com.css.simulation.resource.sms.util;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.TextNode;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class JsonUtil {
+
+    private static final ObjectMapper mapper = new ObjectMapper();
+
+
+    /**
+     * bean 转成 json
+     *
+     * @param bean bean 对象
+     * @param <T>  声明为泛型方法
+     * @return json 字符串
+     * @throws JsonProcessingException 异常
+     */
+    public static <T> String beanToJson(T bean) throws JsonProcessingException {
+        return new ObjectMapper().writeValueAsString(bean);
+    }
+
+    /**
+     * json 转成 bean
+     *
+     * @param json   json 字符串
+     * @param tClass 返回值类型
+     * @param <T>    声明为泛型方法
+     * @return bean 对象
+     * @throws JsonProcessingException 异常
+     */
+    public static <T> T jsonToBean(String json, Class<T> tClass) throws JsonProcessingException {
+        return new ObjectMapper().readValue(json, tClass);
+    }
+
+    /**
+     * bean 转成 json
+     *
+     * @param list 列表对象
+     * @param <T>  声明为泛型方法
+     * @return json 字符串
+     * @throws JsonProcessingException 异常
+     */
+    public static <T> String listToJson(T list) throws JsonProcessingException {
+        return new ObjectMapper().writeValueAsString(list);
+    }
+
+
+    public static Map jsonToMap(String json) {
+        try {
+            return new ObjectMapper().readValue(json, HashMap.class);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return new HashMap();
+    }
+
+    public static JsonNode readTree(String json) {
+        try {
+            return mapper.readTree(json);
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+        return new TextNode("");
+    }
+
+//泛化用的,把带下划线的json转换为驼峰jsom
+    public static String  stringToJson(String ss) throws JsonProcessingException {
+        Map maps = jsonToMap(ss);
+        Map map = new HashMap();
+        for (Object obj : maps.keySet()) {
+            String value = underlineToHump(obj.toString());
+            map.put(value, maps.get(obj));
+        }
+       return beanToJson(map);
+    }
+
+    private static Pattern UNDERLINE_PATTERN = Pattern.compile("_([a-z])");
+
+    /**
+     * 根据传入的带下划线的字符串转化为驼峰格式
+     *
+     * @param str
+     * @return
+     * @author mrf
+     */
+
+    public static String underlineToHump(String str) {
+        //正则匹配下划线及后一个字符,删除下划线并将匹配的字符转成大写
+        Matcher matcher = UNDERLINE_PATTERN.matcher(str);
+        StringBuffer sb = new StringBuffer(str);
+        if (matcher.find()) {
+            sb = new StringBuffer();
+            //将当前匹配的子串替换成指定字符串,并且将替换后的子串及之前到上次匹配的子串之后的字符串添加到StringBuffer对象中
+            //正则之前的字符和被替换的字符
+            matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
+            //把之后的字符串也添加到StringBuffer对象中
+            matcher.appendTail(sb);
+        } else {
+            //去除除字母之外的前面带的下划线
+            return sb.toString().replaceAll("_", "");
+        }
+        return underlineToHump(sb.toString());
+    }
+
+}
+

+ 1 - 1
api-common/src/main/java/api/common/util/TencentSMSUtil.java → simulation-resource-sms/src/main/java/com/css/simulation/resource/sms/util/TencentSMSUtil.java

@@ -1,4 +1,4 @@
-package api.common.util;
+package com.css.simulation.resource.sms.util;
 
 import com.tencentcloudapi.common.Credential;
 import com.tencentcloudapi.common.profile.ClientProfile;

+ 10 - 0
simulation-resource-sms/src/main/resources/bootstrap-aliyun.yaml

@@ -0,0 +1,10 @@
+spring:
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 172.17.0.185:8848
+        namespace: 3698bfc2-a612-487a-b2a2-aaad16cd9d9d
+      config:
+        server-addr: 172.17.0.185:8848
+        namespace: 3698bfc2-a612-487a-b2a2-aaad16cd9d9d
+        file-extension: yaml

+ 10 - 0
simulation-resource-sms/src/main/resources/bootstrap-dev.yaml

@@ -0,0 +1,10 @@
+spring:
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 47.93.135.21:8848
+        namespace: 3698bfc2-a612-487a-b2a2-aaad16cd9d9d
+      config:
+        server-addr: 47.93.135.21:8848
+        namespace: 3698bfc2-a612-487a-b2a2-aaad16cd9d9d
+        file-extension: yaml

+ 10 - 0
simulation-resource-sms/src/main/resources/bootstrap-test.yaml

@@ -0,0 +1,10 @@
+spring:
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 47.93.135.21:8848
+        namespace: 3698bfc2-a612-487a-b2a2-aaad16cd9d9d
+      config:
+        server-addr: 47.93.135.21:8848
+        namespace: 3698bfc2-a612-487a-b2a2-aaad16cd9d9d
+        file-extension: yaml

+ 9 - 0
simulation-resource-sms/src/main/resources/bootstrap.yaml

@@ -0,0 +1,9 @@
+spring:
+  servlet:
+    multipart:
+      max-file-size: 10GB
+      max-request-size: 10GB
+  application:
+    name: simulation-resource-sms
+  profiles:
+    active: dev

+ 122 - 0
simulation-resource-sms/src/main/resources/logback-spring.xml

@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="true">
+    <!-- 项目名称 -->
+    <property name="PROJECT_NAME" value="changjingyun"/>
+
+    <!--定义不同环境的日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
+    <springProfile name="aliyun">
+        <property name="LOG_HOME" value="/opt/simulation-cloud/simulation-resource-sms/log"/>
+    </springProfile>
+    <springProfile name="test">
+        <property name="LOG_HOME" value="/opt/simulation-cloud/simulation-resource-sms-test/log"/>
+    </springProfile>
+
+    <!--输出到控制台-->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>debug</level>
+        </filter>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+    </appender>
+
+    <!--输出到debug-->
+    <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <!--日志文件输出的文件名-->
+            <FileNamePattern>${LOG_HOME}/debug.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
+            <!--日志文件保留天数-->
+            <MaxHistory>15</MaxHistory>
+            <!--日志文件最大的大小-->
+            <MaxFileSize>10MB</MaxFileSize>
+        </rollingPolicy>
+        <append>true</append>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印DEBUG日志 -->
+            <level>DEBUG</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!--输出到info-->
+    <appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <!--日志文件输出的文件名-->
+            <FileNamePattern>${LOG_HOME}/info.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
+            <!--日志文件保留天数-->
+            <MaxHistory>15</MaxHistory>
+            <!--日志文件最大的大小-->
+            <MaxFileSize>10MB</MaxFileSize>
+        </rollingPolicy>
+        <append>true</append>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印INFO日志 -->
+            <level>INFO</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!--输出到error-->
+    <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <!--日志文件输出的文件名-->
+            <FileNamePattern>${LOG_HOME}/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
+            <!--日志文件保留天数-->
+            <MaxHistory>15</MaxHistory>
+            <!--日志文件最大的大小-->
+            <MaxFileSize>10MB</MaxFileSize>
+        </rollingPolicy>
+        <append>true</append>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印ERROR日志 -->
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!--输出到warn-->
+    <appender name="warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <!--日志文件输出的文件名-->
+            <FileNamePattern>${LOG_HOME}/warn.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
+            <!--日志文件保留天数-->
+            <MaxHistory>15</MaxHistory>
+            <!--日志文件最大的大小-->
+            <MaxFileSize>10MB</MaxFileSize>
+        </rollingPolicy>
+        <append>true</append>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印WARN日志 -->
+            <level>WARN</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!--分别设置对应的日志输出节点 -->
+    <root level="info">
+        <appender-ref ref="console"/>
+        <appender-ref ref="debug"/>
+        <appender-ref ref="info"/>
+        <appender-ref ref="error"/>
+        <appender-ref ref="warn"/>
+    </root>
+</configuration>