From 8c90364eaa6bc868893a069c813de55275b7f207 Mon Sep 17 00:00:00 2001
From: Number7 <1845377266@qq.com>
Date: Fri, 4 Oct 2024 16:57:45 +0800
Subject: [PATCH 01/17] =?UTF-8?q?feat():=E4=BF=AE=E6=94=B9=E5=8D=8F?=
=?UTF-8?q?=E8=AE=AE=E8=A7=A3=E6=9E=90=E6=96=B9=E6=B3=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
cloud-common/cloud-common-kafka/pom.xml | 13 ++--
.../rabbit/consumer/RabbitMQConsumerUtil.java | 12 ----
.../rabbit/producer/RabbitMQProducerUtil.java | 2 -
cloud-modules/cloud-modules-template/pom.xml | 11 ++--
.../muyu/template/config/MqttConfigure.java | 51 ++++++++-------
.../template/controller/KafkaController.java | 10 +++
.../src/main/java/com/muyu/template/test.java | 62 +++++++++++++++++++
.../server/controller/SysCarController.java | 13 ++--
8 files changed, 121 insertions(+), 53 deletions(-)
create mode 100644 cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/KafkaController.java
create mode 100644 cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java
diff --git a/cloud-common/cloud-common-kafka/pom.xml b/cloud-common/cloud-common-kafka/pom.xml
index 7f5126e..abe86fc 100644
--- a/cloud-common/cloud-common-kafka/pom.xml
+++ b/cloud-common/cloud-common-kafka/pom.xml
@@ -19,21 +19,22 @@
UTF-8
+
+
+
+
+
+
org.apache.kafka
kafka-clients
- 3.0.0
com.muyu
cloud-common-core
-
- org.apache.kafka
- kafka-clients
- 2.8.0
-
+
diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/consumer/RabbitMQConsumerUtil.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/consumer/RabbitMQConsumerUtil.java
index 2181562..876453d 100644
--- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/consumer/RabbitMQConsumerUtil.java
+++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/consumer/RabbitMQConsumerUtil.java
@@ -35,21 +35,11 @@ public class RabbitMQConsumerUtil {
// 获取到消息 开始消费
log.info("消息消费者接收到消息,消息内容:{}", JSONObject.toJSONString(data));
-
Long add = redisService.redisTemplate.opsForSet().add(data, message.getMessageProperties().getMessageId());
if (add != 1) {
return;
}
-
-
- /**
- * -----------------------------------以下为异步业务操作----------------------------
- */
-
- /**
- * ------------------------------------------------------------------------------
- */
// 消费消息成功之后需要确认
// long deliveryTag 消息投递序号 自增的数字 在整个队列中唯一 拿到这个序号就相当于拿到这条消息
// boolean multiple 是否批量确认 true 批量 确认小于等于当前投递序号的消息 false 单个确认
@@ -76,7 +66,6 @@ public class RabbitMQConsumerUtil {
}
}
-
/**
* 普通消费者
* @param data 数据类型
@@ -96,7 +85,6 @@ public class RabbitMQConsumerUtil {
return;
}
-
/**
* -----------------------------------以下为异步业务操作----------------------------
*/
diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/producer/RabbitMQProducerUtil.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/producer/RabbitMQProducerUtil.java
index fc7c3b8..88b0187 100644
--- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/producer/RabbitMQProducerUtil.java
+++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/producer/RabbitMQProducerUtil.java
@@ -23,7 +23,6 @@ public class RabbitMQProducerUtil {
//rabbit
private final RabbitTemplate rabbitTemplate;
-
/**
* 简单模型
*
@@ -73,7 +72,6 @@ public class RabbitMQProducerUtil {
/**
* Publish/Subscribe 发布订阅者模型
* 多个消费者,多个消费者可以同时接收到消息 有交换机 类型 fanout
- *
* @param exchange 交换机名称
* @param obj 发送的消息Object
* @param msg 响应的内容
diff --git a/cloud-modules/cloud-modules-template/pom.xml b/cloud-modules/cloud-modules-template/pom.xml
index 65e4bd1..fa19206 100644
--- a/cloud-modules/cloud-modules-template/pom.xml
+++ b/cloud-modules/cloud-modules-template/pom.xml
@@ -17,11 +17,12 @@
-
- com.muyu
- cloud-common-kafka
- 3.6.3
-
+
+
+
+
+
+
com.muyu.server
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java
index b72a7fa..065aa80 100644
--- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java
+++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java
@@ -3,10 +3,9 @@ import cn.hutool.json.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.muyu.common.domain.MessageTemplateType;
import com.muyu.common.domain.SysCar;
-import com.muyu.common.kafka.config.KafkaProducerConfig;
import com.muyu.common.redis.service.RedisService;
+
import lombok.extern.log4j.Log4j2;
-import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.eclipse.paho.client.mqttv3.*;
import org.springframework.beans.factory.annotation.Autowired;
@@ -36,19 +35,13 @@ public class MqttConfigure {
@Autowired
private RedisTemplate redisTemplate;
- @Autowired
- private KafkaProducer kafkaProducer;
-
- @Autowired
- private SysCarService service;
-
- @Autowired
- private MessageTemplateTypeService messageTemplateTypeService;
+// @Autowired
+// private KafkaProducer kafkaProducer;
@PostConstruct
public void MQTTMonitoring(){
- String topic = "vehicle";
+ String topic = "car";
int qos = 2;
String broker = "tcp://47.101.53.251:1883";
String clientId = "lxy";
@@ -76,7 +69,7 @@ public class MqttConfigure {
JSONObject jsonObject = new JSONObject(messageContent);
// 从JSON对象中获取"msg"字段的值
String msgValue = jsonObject.getStr("msg");
-// messageParsing(msgValue);
+ messageParsing(msgValue);
log.info("接收到的值为:"+msgValue);
}
//交付完成
@@ -113,7 +106,14 @@ public class MqttConfigure {
String carVin = result.substring(0, 18 - 1);
log.info("carVin码为:" + carVin);
//根据VIN码获取车辆信息
- SysCar carByVin = service.findCarByVin(carVin);
+ SysCar carByVin = null;
+ List carList = redisService.getCacheList("carList");
+ for (SysCar sysCar : carList) {
+ if(sysCar.getCarVin().equals(carVin)){
+ carByVin=sysCar;
+ }
+ }
+// SysCar carByVin = service.findCarByVin(carVin);
log.info("车辆信息为:" + carByVin);
//对应车辆所对应的报文模版
Integer templateId = carByVin.getTemplateId();
@@ -128,12 +128,19 @@ public class MqttConfigure {
templateTypeList = list.stream().map(o -> JSON.parseObject(o.toString(), MessageTemplateType.class))
.toList();
} else {
- List templateTypeList1 = messageTemplateTypeService.findTemplateById(templateId);
+ List templateTypeList1=null;
+ List templateTypeList2 = redisService.getCacheList("templateTypeList");
+ for (MessageTemplateType messageTemplateType : templateTypeList2) {
+ if(messageTemplateType.getTemplateId()==templateId){
+ templateTypeList1.add(messageTemplateType);
+ }
+ }
+// List templateTypeList1 = messageTemplateTypeService.findTemplateById(templateId);
templateTypeList = templateTypeList1;
templateTypeList.forEach(
templateType ->
redisTemplate.opsForList().rightPush(
- redisKey, com.alibaba.fastjson.JSON.toJSONString(templateType)
+ redisKey, JSON.toJSONString(templateType)
)
);
}
@@ -146,18 +153,18 @@ public class MqttConfigure {
//将每个解析后的字段都存入到JSON对象中
jsonObject.put(messageTemplateType.getMessageField(), result.substring(startIndex, endIndex));
}
-
log.info("解析后的报文是:" + jsonObject);
- sendKafka(jsonObject);
+// sendKafka(jsonObject);
log.info("发送kafka成功");
return jsonObject;
}
- public void sendKafka(JSONObject jsonObject){
- ProducerRecord stringStringProducerRecord = new ProducerRecord<>("four_car", jsonObject.toString());
- kafkaProducer.send(stringStringProducerRecord);
- log.info("kafka发送成功");
- }
+// //kafka发送消息
+// public void sendKafka(JSONObject jsonObject){
+// ProducerRecord stringStringProducerRecord = new ProducerRecord<>("four_car", jsonObject.toString());
+// kafkaProducer.send(stringStringProducerRecord);
+// log.info("kafka发送成功");
+// }
}
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/KafkaController.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/KafkaController.java
new file mode 100644
index 0000000..34e4ccd
--- /dev/null
+++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/KafkaController.java
@@ -0,0 +1,10 @@
+package com.muyu.template.controller;
+
+/**
+ * @author liuxinyue
+ * @Package:com.muyu.template.controller
+ * @name:KafkaController
+ * @Date:2024/10/4 16:11
+ */
+public class KafkaController {
+}
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java
new file mode 100644
index 0000000..e602a8d
--- /dev/null
+++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java
@@ -0,0 +1,62 @@
+package com.muyu.template;
+
+import com.muyu.common.domain.SysCar;
+import com.muyu.common.domain.Template;
+import com.muyu.common.domain.WarnRule;
+import com.muyu.common.domain.WarnStrategy;
+import com.muyu.common.redis.service.RedisService;
+import org.springframework.beans.factory.annotation.Autowired;
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+/**
+ * @author liuxinyue
+ * @Package:com.muyu.template
+ * @name:test
+ * @Date:2024/10/4 9:42
+ */
+public class test {
+
+ @Resource
+ private RedisService redisService;
+
+ public void main(String[] args) {
+
+ //车类型
+ Long carTypeId=null;
+ //查找车对应的类型
+ List carList = redisService.getCacheList("car");
+ for (SysCar sysCar : carList) {
+ if(sysCar.getCarVin().equals("")){
+ //获取到车的类型ID
+ carTypeId = sysCar.getCarTypeId();
+ }
+ }
+
+ //查找车类型对应的策略
+ List warnStrategyList = null;
+ //该车绑定的报文模版
+ Long templateId=null;
+ //获取到车的类型之后 查找对应的策略
+ List warnStrategy = redisService.getCacheList("warnStrategy");
+ for (WarnStrategy strategy : warnStrategy) {
+ if(strategy.getCarTypeId().equals(carTypeId)){
+ templateId=strategy.getTemplateId();
+ warnStrategyList.add(strategy);
+ }
+ }
+
+ //根据ID取出对应的报文模版
+ List templateList = redisService.getCacheList("template");
+
+ //获取策略对应的规则列表
+ List warnRule = redisService.getCacheList("warnRule");
+
+ List warnRuleList = null;
+
+
+
+ }
+
+}
diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/SysCarController.java b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/SysCarController.java
index 9fa4ddf..4127e0c 100644
--- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/SysCarController.java
+++ b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/SysCarController.java
@@ -1,12 +1,13 @@
package com.muyu.server.controller;
import com.alibaba.fastjson2.JSONObject;
+import com.muyu.cache.SysCarCacheService;
import com.muyu.common.core.domain.Result;
import com.muyu.common.domain.SysCar;
import com.muyu.common.domain.req.SysCarReq;
import com.muyu.common.domain.resp.SysCarFaultLogVo;
-import com.muyu.common.kafka.config.KafkaProducerConfig;
-import com.muyu.common.redis.service.RedisService;
+import com.muyu.common.domain.resp.SysCarVo;
+
import com.muyu.server.service.SysCarService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -36,9 +37,9 @@ public class SysCarController {
@Autowired
private RabbitTemplate rabbitTemplate;
-
@Autowired
- private KafkaProducer kafkaProducer;
+ private SysCarCacheService sysCarCacheService;
+
/**
@@ -104,10 +105,10 @@ public class SysCarController {
@PostMapping("/findCarByVin")
@Operation(summary = "根据VIN码查询车信息",description = "根据VIN码查询车信息")
public Result findCarByVin(@RequestParam("carVin") String carVin){
-
+ List carList = sysCarCacheService.get("carList");
+ log.info("从redis取出的数据为:"+carList);
return Result.success(sysCarService.findCarByVin(carVin));
}
-
}
From 6ba71a95d4817d4d82946d6ccc68ea3a75a3cb97 Mon Sep 17 00:00:00 2001
From: SuiXxx <1752599835@qq.com>
Date: Sun, 6 Oct 2024 10:01:02 +0800
Subject: [PATCH 02/17] =?UTF-8?q?feat():=E4=BF=AE=E6=94=B9ESC=E7=AE=A1?=
=?UTF-8?q?=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../cloud-modules-vehiclegateway/pom.xml | 11 +
.../com/muyu/VehicleGatewayApplication.java | 1 +
.../java/com/muyu/vehicle/ManageInstance.java | 235 ++++++++----------
.../{service => config}/CloseInstance.java | 43 ++--
.../vehicle/config/RestTemplateConfig.java | 29 +++
.../muyu/vehicle/config/SelectInstance.java | 53 ++++
.../controller/CarInstanceController.java | 19 ++
.../muyu/vehicle/domain/FluxMqProperties.java | 40 +++
.../com/muyu/vehicle/domain/InstanceInfo.java | 3 +
.../muyu/vehicle/domain/MqttServerModel.java | 28 +++
.../domain/req/VehicleConnectionReq.java | 36 +++
.../vehicle/service/CarInstanceService.java | 19 ++
.../muyu/vehicle/service/OpenInstance.java | 129 ----------
.../muyu/vehicle/service/SelectInstance.java | 66 -----
.../service/impl/CarInstanceServiceImpl.java | 39 +++
.../com/muyu/vehicle/utils/CreateClient.java | 32 +++
.../src/main/resources/bootstrap.yml | 4 +-
17 files changed, 426 insertions(+), 361 deletions(-)
rename cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/{service => config}/CloseInstance.java (73%)
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/RestTemplateConfig.java
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/SelectInstance.java
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/controller/CarInstanceController.java
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/FluxMqProperties.java
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/MqttServerModel.java
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/req/VehicleConnectionReq.java
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/CarInstanceService.java
delete mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/OpenInstance.java
delete mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/SelectInstance.java
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/CarInstanceServiceImpl.java
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/utils/CreateClient.java
diff --git a/cloud-modules/cloud-modules-vehiclegateway/pom.xml b/cloud-modules/cloud-modules-vehiclegateway/pom.xml
index 34448dd..33e4264 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/pom.xml
+++ b/cloud-modules/cloud-modules-vehiclegateway/pom.xml
@@ -131,7 +131,18 @@
4.2.0
+
+ com.muyu.server
+ saas-server
+ 3.6.3
+
+
+
+ com.dtflys.forest
+ forest-spring-boot-starter
+ 1.5.36
+
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/VehicleGatewayApplication.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/VehicleGatewayApplication.java
index 62108bf..884f25f 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/VehicleGatewayApplication.java
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/VehicleGatewayApplication.java
@@ -6,6 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableMyFeignClients
+
public class VehicleGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(VehicleGatewayApplication.class,args);
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/ManageInstance.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/ManageInstance.java
index 272ab93..3e590ca 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/ManageInstance.java
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/ManageInstance.java
@@ -1,15 +1,16 @@
package com.muyu.vehicle;
-
import com.aliyun.ecs20140526.Client;
import com.aliyun.ecs20140526.models.*;
import com.aliyun.tea.TeaException;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.Common;
import com.aliyun.teautil.models.RuntimeOptions;
+import com.muyu.common.redis.service.RedisService;
+import com.muyu.vehicle.config.SelectInstance;
import com.muyu.vehicle.domain.InstanceInfo;
-import com.muyu.vehicle.service.OpenInstance;
-import com.muyu.vehicle.service.SelectInstance;
+import com.muyu.vehicle.utils.CreateClient;
+import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
@@ -19,155 +20,113 @@ import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
+
@Component
@Log4j2
+/**
+ * 项目启动创建实例
+ */
public class ManageInstance implements ApplicationRunner {
+ @Autowired
+ private RedisService redisService;
- /**
- * ACCESS_KEY_ID
- */
- public static final String ALIBABA_CLOUD_ACCESS_KEY_ID="LTAI5tGabdxedjfCh2uXHNrw";
+ /**
+ * 镜像ID
+ */
+ public static final String IMAGE_ID = "m-uf6ffgkry85fwu4znr6s";
- /**
- *ACCESS_KEY_SECRET
- */
- public static final String ACCESS_KEY_SECRET="NHb7wHVpesLW6Axc0bFBs6ThhuNR10";
+ /**
+ * 实例类型
+ */
+ public static final String INSTANCE_TYPE = "ecs.e-c1m1.large";
+
+ /**
+ * 安全组ID
+ */
+ public static final String SECURITY_GROUP_ID = "sg-uf6glo8c4k17szhxu7sk";
+
+ /**
+ *交换机ID
+ */
+ public static final String V_SWITCH_ID = "vsw-uf6xy4rbt9ggcz93t6oib";
- /**
- * 镜像ID
- */
- public static final String IMAGE_ID="m-uf6agr9i6g27gj23om34";
+ /**
+ * 实例付费类型
+ */
+ public static final String INSTANCE_CHARGE_TY = "PostPaid";
- /**
- * 实例类型
- */
- public static final String INSTANCE_TYPE="ecs.e-c1m1.large";
+ public static List generateInstance() throws Exception {
+ // 创建阿里云ECS客户端
+ // 创建ECS客户端对象,用于后续调用ECS相关API
+ Client client = CreateClient.createClient();
+ // 配置系统盘参数
+ RunInstancesRequest.RunInstancesRequestSystemDisk systemDisk =
+ new RunInstancesRequest.RunInstancesRequestSystemDisk()
+ .setSize("40")
+ .setCategory("cloud_essd");
- /**
- * 安全组ID
- */
- public static final String SECURITY_GROUP_ID="sg-uf6glo8c4k17szhxu7sk";
+ // 创建创建实例请求对象并设置参数
- /**
- *交换机ID
- */
- public static final String V_SWITCH_ID="vsw-uf6xy4rbt9ggcz93t6oib";
+ RunInstancesRequest runInstancesRequest = new RunInstancesRequest()
+ .setRegionId("cn-shanghai") // 设置地域ID
+ .setImageId(IMAGE_ID) // 设置镜像ID
+ .setInstanceType(INSTANCE_TYPE) // 设置实例类型
+ .setSecurityGroupId(SECURITY_GROUP_ID) // 设置安全组ID
+ .setVSwitchId(V_SWITCH_ID) // 设置虚拟交换机ID
+ .setInstanceName("cloud-MQTT") // 设置实例名称
+ .setInstanceChargeType(INSTANCE_CHARGE_TY) // 设置实例付费类型为后付费按量付费
+ .setSystemDisk(systemDisk) // 设置系统盘配置
+ .setHostName("root") // 设置主机名
+ .setPassword("2112A-four") // 设置实例密码
+ .setAmount(2) // 设置创建实例的数量
+ .setInternetChargeType("PayByTraffic")
+ .setInternetMaxBandwidthOut(1);
- /**
- * 实例付费类型
- */
- public static final String INSTANCE_CHARGE_TY="PostPaid";
-
-
-
- /**
- * 使用AK&SK初始化账号Client
- * @return Client
- * @throws Exception
- */
-
- public static Client createClient() throws Exception {
- // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
- Config config = new Config()
- // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
- .setAccessKeyId(ALIBABA_CLOUD_ACCESS_KEY_ID)
- // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
- .setAccessKeySecret(ACCESS_KEY_SECRET);
- // Endpoint 请参考 https://api.aliyun.com/product/Ecs
- config.endpoint = "ecs-cn-hangzhou.aliyuncs.com";
- return new com.aliyun.ecs20140526.Client(config);
- }
-
-
- public static void generateInstance() throws Exception {
- // 创建阿里云ECS客户端
- Client client = ManageInstance.createClient();
- // 配置系统盘参数
- RunInstancesRequest.RunInstancesRequestSystemDisk systemDisk=
- new RunInstancesRequest.RunInstancesRequestSystemDisk()
- .setSize("40")
- .setCategory("cloud_essd");
-
- // 创建创建实例请求对象并设置参数
-
- RunInstancesRequest runInstancesRequest = new RunInstancesRequest()
- .setRegionId("cn-shanghai") // 设置地域ID
- .setImageId(IMAGE_ID) // 设置镜像ID
- .setInstanceType(INSTANCE_TYPE) // 设置实例类型
- .setSecurityGroupId(SECURITY_GROUP_ID) // 设置安全组ID
- .setVSwitchId(V_SWITCH_ID) // 设置虚拟交换机ID
- .setInstanceName("cloud-MQTT") // 设置实例名称
- .setInstanceChargeType(INSTANCE_CHARGE_TY) // 设置实例付费类型为后付费按量付费
- .setSystemDisk(systemDisk) // 设置系统盘配置
- .setHostName("root") // 设置主机名
- .setPassword("2112A-four") // 设置实例密码
- .setAmount(2) // 设置创建实例的数量
- .setInternetChargeType("PayByTraffic")
- .setInternetMaxBandwidthOut(1);
-
-
- //创建运行时选择对象
- RuntimeOptions runTime=
- new RuntimeOptions();
- // 尝试执行创建实例请求
- try {
- ArrayList list = new ArrayList<>();
- // 复制代码运行请自行打印 API 的返回值
- RunInstancesResponse runInstancesResponse = client.runInstancesWithOptions(runInstancesRequest, runTime);
- RunInstancesResponseBody body = runInstancesResponse.getBody();
- for (String instance : body.getInstanceIdSets().getInstanceIdSet()) {
- list.add(instance);
+ //创建运行时选择对象
+ RuntimeOptions runTime =
+ new RuntimeOptions();
+ // 尝试执行创建实例请求
+ try {
+ ArrayList list = new ArrayList<>();
+ // 复制代码运行请自行打印 API 的返回值
+ RunInstancesResponse runInstancesResponse = client.runInstancesWithOptions(runInstancesRequest, runTime);
+ RunInstancesResponseBody body = runInstancesResponse.getBody();
+ for (String instance : body.getInstanceIdSets().getInstanceIdSet()) {
+ list.add(instance);
+ }
+ log.info("ESC创建成功,实例ID为:" + list);
+ return list;
+ } catch (TeaException error) {
+ // 错误 message
+ log.info(error.getMessage());
+ // 诊断地址
+ log.info(error.getData().get("Recommend"));
+ Common.assertAsString(error.message);
+ } catch (Exception _error) {
+ TeaException error = new TeaException(_error.getMessage(), _error);
+ // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
+ // 错误 message
+ log.info("实例创建失败:" + error.getMessage());
}
- log.info("ESC创建成功,实例ID为:" + list);
- } catch (TeaException error) {
- // 错误 message
- log.info(error.getMessage());
- // 诊断地址
- log.info(error.getData().get("Recommend"));
- Common.assertAsString(error.message);
- } catch (Exception _error) {
- TeaException error = new TeaException(_error.getMessage(), _error);
- // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
- // 错误 message
- log.info("实例创建失败:"+error.getMessage());
+ return null;
+ }
+
+
+ @Override
+ public void run(ApplicationArguments args) throws Exception {
+ List list = generateInstance();
+ log.info("创建实例成功");
+ log.info("正在加载实例");
+ Thread.sleep(30000);
+ List instanceInfos = SelectInstance.selectInstance(list);
+ log.info("实例信息加载成功");
+ for (InstanceInfo instanceInfo : instanceInfos) {
+ redisService.getCacheObject(instanceInfo.getInstanceId());
+ } log.info("实例信息:{}",instanceInfos);
+
}
}
- private static List selectInstance() throws Exception {
- Client client = ManageInstance.createClient();
- ArrayList instanceInfos = new ArrayList<>();// 实例基础信息
- DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest()
- .setRegionId("cn-shanghai")
- .setInternetChargeType("PayByTraffic")
- .setInstanceChargeType("PostPaid")
- .setInstanceName("cloud-MQTT") // 设置实例名称
- ;
- // 创建运行时选项对象
- RuntimeOptions runtime = new RuntimeOptions();
- //实例ID Instances.Instance.InstanceId
- //实例IP Instances.Instance.PublicIpAddress.IpAddress
- //状态 Instances.Instance.Status
- DescribeInstancesResponse resp =client.describeInstancesWithOptions(describeInstancesRequest, runtime);
- DescribeInstancesResponseBody body = resp.getBody();
-
- for (DescribeInstancesResponseBody.DescribeInstancesResponseBodyInstancesInstance instance : body.getInstances().getInstance()){
- InstanceInfo instanceInfo = new InstanceInfo();
- instanceInfo.setInstanceId(instance.getInstanceId());
- instanceInfo.setIpAddress(String.valueOf(instance.getPublicIpAddress().getIpAddress()));
- instanceInfo.setStatus(instance.getStatus());
- instanceInfos.add(instanceInfo);
-
- }
- log.info("实例信息为:"+Common.toJSONString(instanceInfos));
- return instanceInfos;
- }
-
- @Override
- public void run(ApplicationArguments args) throws Exception {
- generateInstance();
- selectInstance();
- }
-}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/CloseInstance.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/CloseInstance.java
similarity index 73%
rename from cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/CloseInstance.java
rename to cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/CloseInstance.java
index 8843c7c..d8ad297 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/CloseInstance.java
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/CloseInstance.java
@@ -1,6 +1,4 @@
-package com.muyu.vehicle.service;
-
-
+package com.muyu.vehicle.config;
import com.aliyun.ecs20140526.Client;
import com.aliyun.ecs20140526.models.DeleteInstancesRequest;
import com.aliyun.ecs20140526.models.DescribeInstancesRequest;
@@ -10,42 +8,31 @@ import com.aliyun.tea.TeaException;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.Common;
import com.aliyun.teautil.models.RuntimeOptions;
+import com.muyu.vehicle.utils.CreateClient;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
-
+/**
+ * 删除实例信息
+ */
@Component
@Log4j2
-public class CloseInstance implements DisposableBean {
- /**
- * ACCESS_KEY_ID
- */
- public static final String ALIBABA_CLOUD_ACCESS_KEY_ID="LTAI5tGabdxedjfCh2uXHNrw";
+public class CloseInstance implements DisposableBean{
/**
- *ACCESS_KEY_SECRET
+ * description :
+ * 使用AK&SK初始化账号Client
+ * @return Client
+ *
+ * @throws Exception
*/
- public static final String ACCESS_KEY_SECRET="NHb7wHVpesLW6Axc0bFBs6ThhuNR10";
- public static Client createClient() throws Exception {
- // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
- // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。
- Config config = new Config()
- // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
- .setAccessKeyId(ALIBABA_CLOUD_ACCESS_KEY_ID)
- // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
- .setAccessKeySecret(ACCESS_KEY_SECRET);
- // Endpoint 请参考 https://api.aliyun.com/product/Ecs
- config.endpoint = "ecs.cn-shanghai.aliyuncs.com";
- return new Client(config);
- }
-
public static void delInstance() throws Exception {
// 创建ECS客户端对象,用于后续调用ECS相关API
- Client client = CloseInstance.createClient();
+ Client client = CreateClient.createClient();
DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest()
.setRegionId("cn-shanghai");
@@ -61,7 +48,7 @@ public class CloseInstance implements DisposableBean {
DescribeInstancesResponseBody body = describeInstancesResponse.getBody();
for (DescribeInstancesResponseBody.DescribeInstancesResponseBodyInstancesInstance instance : body.getInstances().getInstance()) {
- if (!instance.getInstanceId().equals("i-uf68jwsbbqq4b4xc893s")){
+ if (!instance.getInstanceId().equals("i-uf68jwsbbqq4b4xc893s")) {
list.add(instance.getInstanceId());
}
}
@@ -79,7 +66,7 @@ public class CloseInstance implements DisposableBean {
.setInstanceId(list);
// 创建运行时选项对象,用于配置运行时的选项参数
- RuntimeOptions runtime = new RuntimeOptions();
+ RuntimeOptions runtime = new RuntimeOptions();
try {
// 复制代码运行请自行打印 API 的返回值
client.deleteInstancesWithOptions(deleteInstancesRequest, runtime);
@@ -108,3 +95,5 @@ public class CloseInstance implements DisposableBean {
delInstance();
}
}
+
+
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/RestTemplateConfig.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/RestTemplateConfig.java
new file mode 100644
index 0000000..2cff8fb
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/RestTemplateConfig.java
@@ -0,0 +1,29 @@
+package com.muyu.vehicle.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.client.ClientHttpRequestFactory;
+import org.springframework.http.client.SimpleClientHttpRequestFactory;
+import org.springframework.web.client.RestTemplate;
+
+@Configuration
+public class RestTemplateConfig {
+
+
+
+ @Bean
+ public RestTemplate restTemplate(ClientHttpRequestFactory factory){
+ return new RestTemplate(factory);
+ }
+
+
+
+ @Bean
+ public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
+ SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
+ //超时设置
+ factory.setReadTimeout(5000);//ms
+ factory.setConnectTimeout(15000);//ms
+ return factory;
+ }
+}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/SelectInstance.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/SelectInstance.java
new file mode 100644
index 0000000..73c5a00
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/SelectInstance.java
@@ -0,0 +1,53 @@
+package com.muyu.vehicle.config;
+
+import com.alibaba.fastjson.JSON;
+import com.aliyun.ecs20140526.Client;
+import com.aliyun.ecs20140526.models.DescribeInstancesRequest;
+import com.aliyun.ecs20140526.models.DescribeInstancesResponse;
+import com.aliyun.ecs20140526.models.DescribeInstancesResponseBody;
+import com.aliyun.teautil.Common;
+import com.aliyun.teautil.models.RuntimeOptions;
+import com.muyu.vehicle.domain.InstanceInfo;
+import com.muyu.vehicle.utils.CreateClient;
+import lombok.extern.log4j.Log4j2;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 查询实例信息
+ */
+
+@Log4j2
+public class SelectInstance {
+ public static List selectInstance(List instanceIds) throws Exception {
+ // 创建ECS客户端对象,用于后续调用ECS相关API
+ Client client = CreateClient.createClient();
+ ArrayList instanceInfos = new ArrayList<>();// 实例基础信息
+ com.aliyun.ecs20140526.models.DescribeInstancesRequest describeInstancesRequest = new com.aliyun.ecs20140526.models.DescribeInstancesRequest()
+ .setInstanceIds(JSON.toJSONString(instanceIds))
+ .setRegionId("cn-shanghai");
+ // 创建运行时选项对象
+ RuntimeOptions runtime = new RuntimeOptions();
+ //实例ID Instances.Instance.InstanceId
+ //实例IP Instances.Instance.PublicIpAddress.IpAddress
+ //状态 Instances.Instance.Status
+ DescribeInstancesResponse resp = client.describeInstancesWithOptions(describeInstancesRequest, runtime);
+ DescribeInstancesResponseBody body = resp.getBody();
+
+ ArrayList exampleInformations = new ArrayList<>();
+ for (DescribeInstancesResponseBody.DescribeInstancesResponseBodyInstancesInstance instance : body.getInstances().getInstance()){
+ InstanceInfo instanceInfo = new InstanceInfo();
+ instanceInfo.setInstanceId(instance.getInstanceId());
+ log.info("实例ID:{}",instanceInfo.getInstanceId());
+ instanceInfo.setStatus(instance.getStatus());
+ log.info("实例状态:{}",instanceInfo.getStatus());
+ instanceInfo.setIpAddress(String.valueOf(instance.getPublicIpAddress().getIpAddress()));
+ log.info("实例IP:{}",instanceInfo.getIpAddress());
+ exampleInformations.add(instanceInfo);
+ }
+ log.info("实例信息:{}",instanceInfos);
+ return instanceInfos;
+ }
+
+}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/controller/CarInstanceController.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/controller/CarInstanceController.java
new file mode 100644
index 0000000..2ba2c33
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/controller/CarInstanceController.java
@@ -0,0 +1,19 @@
+package com.muyu.vehicle.controller;
+import com.muyu.common.core.domain.Result;
+import com.muyu.vehicle.domain.req.VehicleConnectionReq;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@Log4j2
+public class CarInstanceController {
+
+
+
+ @PostMapping("/receiveMsg/connect")
+ public Result receiveMsg(@RequestBody VehicleConnectionReq vehicleConnectionReq){
+ log.info("=======>"+vehicleConnectionReq);
+ return Result.success();
+ }
+
+}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/FluxMqProperties.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/FluxMqProperties.java
new file mode 100644
index 0000000..9d20965
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/FluxMqProperties.java
@@ -0,0 +1,40 @@
+package com.muyu.vehicle.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * fluxMq配置
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class FluxMqProperties {
+
+
+ /**
+ * 节点
+ */
+ private String broker;
+
+ /**
+ * 主题
+ */
+ private String topic;
+ /**
+ * 密码
+ */
+ private String password;
+
+ /**
+ * 节点ID
+ */
+ private String clientId;
+
+
+
+
+}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/InstanceInfo.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/InstanceInfo.java
index 2b4a528..a3b9192 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/InstanceInfo.java
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/InstanceInfo.java
@@ -4,6 +4,9 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
+/**
+ * 网关实例信息
+ */
@Data
@AllArgsConstructor
@NoArgsConstructor
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/MqttServerModel.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/MqttServerModel.java
new file mode 100644
index 0000000..c6009ae
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/MqttServerModel.java
@@ -0,0 +1,28 @@
+package com.muyu.vehicle.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * Mqtt服务器模型
+ * @author YunFei.Du
+ * @date 22:08 2024/5/29
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MqttServerModel {
+
+ /**
+ * MQTT服务节点
+ */
+ private String broker;
+
+ /**
+ * MQTT订阅主题
+ */
+ private String topic;
+}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/req/VehicleConnectionReq.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/req/VehicleConnectionReq.java
new file mode 100644
index 0000000..e47991c
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/req/VehicleConnectionReq.java
@@ -0,0 +1,36 @@
+package com.muyu.vehicle.domain.req;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 车辆连接信息
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class VehicleConnectionReq {
+
+ private String vehicleVin;
+
+ /**
+ * 时间戳
+ */
+
+ private String timestamp;
+
+ /**
+ * 用户名
+ */
+
+ private String username;
+
+ /**
+ * 随机字符串
+ */
+ private String nonce;
+
+}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/CarInstanceService.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/CarInstanceService.java
new file mode 100644
index 0000000..cb519b4
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/CarInstanceService.java
@@ -0,0 +1,19 @@
+package com.muyu.vehicle.service;
+
+import com.muyu.common.core.domain.Result;
+import com.muyu.vehicle.domain.MqttServerModel;
+import com.muyu.vehicle.domain.req.VehicleConnectionReq;
+
+/**
+ * 车辆业务层
+ */
+public interface CarInstanceService {
+
+ Result getConnect(VehicleConnectionReq carConnectionReq);
+
+ /**
+ * 车辆初始化
+ */
+ void carClientStart(String vin);
+
+}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/OpenInstance.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/OpenInstance.java
deleted file mode 100644
index 2a6cb6e..0000000
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/OpenInstance.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package com.muyu.vehicle.service;
-
-import com.aliyun.ecs20140526.Client;
-import com.aliyun.ecs20140526.models.RunInstancesRequest;
-import com.aliyun.ecs20140526.models.RunInstancesResponse;
-import com.aliyun.ecs20140526.models.RunInstancesResponseBody;
-import com.aliyun.tea.TeaException;
-import com.aliyun.teaopenapi.models.Config;
-import com.aliyun.teautil.Common;
-import com.aliyun.teautil.models.RuntimeOptions;
-import com.muyu.vehicle.ManageInstance;
-import lombok.extern.log4j.Log4j2;
-
-import java.util.ArrayList;
-
-@Log4j2
-public class OpenInstance {
- /**
- * ACCESS_KEY_ID
- */
- public static final String ALIBABA_CLOUD_ACCESS_KEY_ID="LTAI5tGabdxedjfCh2uXHNrw";
-
- /**
- *ACCESS_KEY_SECRET
- */
- public static final String ACCESS_KEY_SECRET="NHb7wHVpesLW6Axc0bFBs6ThhuNR10";
-
-
- /**
- * 镜像ID
- */
- public static final String IMAGE_ID="m-uf6agr9i6g27gj23om34";
-
- /**
- * 实例类型
- */
- public static final String INSTANCE_TYPE="ecs.e-c1m1.large";
-
- /**
- * 安全组ID
- */
- public static final String SECURITY_GROUP_ID="sg-uf6glo8c4k17szhxu7sk";
-
- /**
- *交换机ID
- */
- public static final String V_SWITCH_ID="vsw-uf6xy4rbt9ggcz93t6oib";
-
-
- /**
- * 实例付费类型
- */
- public static final String INSTANCE_CHARGE_TY="PostPaid";
-
-
-
- /**
- * 使用AK&SK初始化账号Client
- * @return Client
- * @throws Exception
- */
-
- public static Client createClient() throws Exception {
- // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
- Config config = new Config()
- // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
- .setAccessKeyId(ALIBABA_CLOUD_ACCESS_KEY_ID)
- // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
- .setAccessKeySecret(ACCESS_KEY_SECRET);
- // Endpoint 请参考 https://api.aliyun.com/product/Ecs
- config.endpoint = "ecs-cn-hangzhou.aliyuncs.com";
- return new com.aliyun.ecs20140526.Client(config);
- }
-
-
- public static void generateInstance() throws Exception {
- // 创建阿里云ECS客户端
- Client client = OpenInstance.createClient();
- // 配置系统盘参数
- RunInstancesRequest.RunInstancesRequestSystemDisk systemDisk=
- new RunInstancesRequest.RunInstancesRequestSystemDisk()
- .setSize("40")
- .setCategory("cloud_essd");
-
- // 创建创建实例请求对象并设置参数
-
- RunInstancesRequest runInstancesRequest = new RunInstancesRequest()
- .setRegionId("cn-shanghai") // 设置地域ID
- .setImageId(IMAGE_ID) // 设置镜像ID
- .setInstanceType(INSTANCE_TYPE) // 设置实例类型
- .setSecurityGroupId(SECURITY_GROUP_ID) // 设置安全组ID
- .setVSwitchId(V_SWITCH_ID) // 设置虚拟交换机ID
- .setInstanceName("cloud-MQTT") // 设置实例名称
- .setInstanceChargeType(INSTANCE_CHARGE_TY) // 设置实例付费类型为后付费按量付费
- .setSystemDisk(systemDisk) // 设置系统盘配置
- .setHostName("root") // 设置主机名
- .setPassword("2112A-four") // 设置实例密码
- .setAmount(2) // 设置创建实例的数量
- .setInternetChargeType("PayByTraffic")
- .setInternetMaxBandwidthOut(1);
-
-
- //创建运行时选择对象
- RuntimeOptions runTime=
- new RuntimeOptions();
- // 尝试执行创建实例请求
- try {
- ArrayList list = new ArrayList<>();
- // 复制代码运行请自行打印 API 的返回值
- RunInstancesResponse runInstancesResponse = client.runInstancesWithOptions(runInstancesRequest, runTime);
- RunInstancesResponseBody body = runInstancesResponse.getBody();
- for (String instance : body.getInstanceIdSets().getInstanceIdSet()) {
- list.add(instance);
- log.info("ESC创建成功,实例ID为:" + list);
- }
- } catch (TeaException error) {
- // 错误 message
- log.info(error.getMessage());
- // 诊断地址
- log.info(error.getData().get("Recommend"));
- Common.assertAsString(error.message);
- } catch (Exception _error) {
- TeaException error = new TeaException(_error.getMessage(), _error);
- // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
- // 错误 message
- log.info("实例创建失败:"+error.getMessage());
- }
- }
-}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/SelectInstance.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/SelectInstance.java
deleted file mode 100644
index 6340b52..0000000
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/SelectInstance.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package com.muyu.vehicle.service;
-
-import com.aliyun.ecs20140526.Client;
-import com.aliyun.ecs20140526.models.DescribeInstancesRequest;
-import com.aliyun.ecs20140526.models.DescribeInstancesResponse;
-import com.aliyun.ecs20140526.models.DescribeInstancesResponseBody;
-import com.aliyun.teaopenapi.models.Config;
-import com.aliyun.teautil.Common;
-import com.aliyun.teautil.models.RuntimeOptions;
-import com.muyu.vehicle.domain.InstanceInfo;
-import lombok.extern.log4j.Log4j2;
-
-import java.util.ArrayList;
-
-@Log4j2
-public class SelectInstance {
- /**
- * ACCESS_KEY_ID
- */
- public static final String ALIBABA_CLOUD_ACCESS_KEY_ID="LTAI5tGabdxedjfCh2uXHNrw";
-
- /**
- *ACCESS_KEY_SECRET
- */
- public static final String ACCESS_KEY_SECRET="NHb7wHVpesLW6Axc0bFBs6ThhuNR10";
-
- public static Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
- Config config = new com.aliyun.teaopenapi.models.Config()
- // 必填,您的 AccessKey ID
- .setAccessKeyId(ALIBABA_CLOUD_ACCESS_KEY_ID)
- // 必填,您的 AccessKey Secret
- .setAccessKeySecret(ACCESS_KEY_SECRET);
- // 访问的域名
- config.endpoint = "ecs-cn-hangzhou.aliyuncs.com";
- return new Client(config);
- }
-
- public static void main(String[] args_) throws Exception {
- java.util.List args = java.util.Arrays.asList(args_);
- // 请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
- // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的 STS 方式
- Client client = SelectInstance.createClient(ALIBABA_CLOUD_ACCESS_KEY_ID, ACCESS_KEY_SECRET);
- DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest()
- .setRegionId("cn-shanghai")
- .setInternetChargeType("PayByTraffic")
- .setInstanceChargeType("PostPaid")
- .setInstanceName("cloud-MQTT") // 设置实例名称
- ;
- //实例ID Instances.Instance.InstanceId
- //实例IP Instances.Instance.PublicIpAddress.IpAddress
- //状态 Instances.Instance.Status
- RuntimeOptions runtime = new RuntimeOptions();
- DescribeInstancesResponse resp = client.describeInstancesWithOptions(describeInstancesRequest, runtime);
- DescribeInstancesResponseBody body = resp.getBody();
- ArrayList instanceInfos = new ArrayList<>();// 实例基础信息
- for (DescribeInstancesResponseBody.DescribeInstancesResponseBodyInstancesInstance instance : body.getInstances().getInstance()){
-
- InstanceInfo instanceInfo = new InstanceInfo();
- instanceInfo.setInstanceId(instance.getInstanceId());
- instanceInfo.setIpAddress(String.valueOf(instance.getPublicIpAddress().getIpAddress()));
- instanceInfo.setStatus(instance.getStatus());
- instanceInfos.add(instanceInfo);
- }
- log.info(Common.toJSONString(instanceInfos));
- }
-}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/CarInstanceServiceImpl.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/CarInstanceServiceImpl.java
new file mode 100644
index 0000000..20cbe53
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/CarInstanceServiceImpl.java
@@ -0,0 +1,39 @@
+package com.muyu.vehicle.service.impl;
+
+import com.muyu.common.core.domain.Result;
+import com.muyu.common.core.utils.uuid.UUID;
+import com.muyu.vehicle.config.RestTemplateConfig;
+import com.muyu.vehicle.domain.MqttServerModel;
+import com.muyu.vehicle.domain.req.VehicleConnectionReq;
+import com.muyu.vehicle.service.CarInstanceService;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 车辆业务实现层
+ */
+@Service
+@Log4j2
+public class CarInstanceServiceImpl implements CarInstanceService {
+
+
+
+ @Override
+ public Result getConnect(VehicleConnectionReq carConnectionReq) {
+ return null;
+ }
+
+ @Override
+ public void carClientStart(String vin) {
+ String timestamp = String.valueOf(System.currentTimeMillis());
+ VehicleConnectionReq carConnectionReq = VehicleConnectionReq.builder()
+ .vehicleVin(vin)
+ .timestamp(timestamp)
+ .username(vin + timestamp)
+ .nonce(UUID.fastUUID().toString().replaceAll("-", ""))
+ .build();
+
+ //获取网关节点信息
+ }
+}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/utils/CreateClient.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/utils/CreateClient.java
new file mode 100644
index 0000000..092215a
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/utils/CreateClient.java
@@ -0,0 +1,32 @@
+package com.muyu.vehicle.utils;
+
+import com.aliyun.ecs20140526.Client;
+import com.aliyun.teaopenapi.models.Config;
+
+/**
+ * 创建ECS客户端对象
+ */
+public class CreateClient {
+ /**
+ * ACCESS_KEY_ID
+ */
+ public static final String ALIBABA_CLOUD_ACCESS_KEY_ID = "LTAI5tGabdxedjfCh2uXHNrw";
+
+ /**
+ *ACCESS_KEY_SECRET
+ */
+ public static final String ACCESS_KEY_SECRET = "NHb7wHVpesLW6Axc0bFBs6ThhuNR10";
+
+ public static Client createClient() throws Exception {
+ // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
+ // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。
+ Config config = new Config()
+ // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
+ .setAccessKeyId(ALIBABA_CLOUD_ACCESS_KEY_ID)
+ // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
+ .setAccessKeySecret(ACCESS_KEY_SECRET);
+ // Endpoint 请参考 https://api.aliyun.com/product/Ecs
+ config.endpoint = "ecs.cn-shanghai.aliyuncs.com";
+ return new Client(config);
+ }
+}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/bootstrap.yml
index 8ac2666..7739f36 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/bootstrap.yml
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/bootstrap.yml
@@ -7,10 +7,12 @@ nacos:
addr: 47.101.53.251:8848
user-name: nacos
password: nacos
- namespace: four
+ namespace: sx
# Spring
spring:
+ main:
+ allow-bean-definition-overriding: true
application:
# 应用名称
name: cloud-vehicleGateway
From 87d104cf9b50c0c86e3fe030bfb17c790fe1d861 Mon Sep 17 00:00:00 2001
From: Liu Wu <2780205363@qq.com>
Date: Sun, 6 Oct 2024 10:39:59 +0800
Subject: [PATCH 03/17] =?UTF-8?q?fix():=20=E4=BA=8B=E4=BB=B6=E5=9F=BA?=
=?UTF-8?q?=E7=A1=80=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../kafka/config/KafkaConsumerConfig.java | 2 -
.../kafka/config/KafkaProducerConfig.java | 2 -
cloud-common/cloud-common-rabbit/pom.xml | 1 +
.../rabbit/config/DelayedQueueConfig.java | 83 -------------------
.../common/rabbit/config/TopicConfig.java | 75 -----------------
.../config/MyConfirmCallback.java | 2 +-
.../config/RabbitAdminConfig.java | 8 +-
.../config/RabbitmqConfig.java | 2 +-
.../config/ReturnCallbackConfig.java | 2 +-
.../constants/RabbitmqConstants.java | 2 +-
.../consumer/RabbitMQConsumerUtil.java | 16 +++-
.../producer/RabbitMQProducerUtil.java | 38 ++++-----
.../com/muyu/rabbitmq/util/CacheUtil.java | 37 +++++++++
...ot.autoconfigure.AutoConfiguration.imports | 1 -
.../many/datasource/ManyDataSource.java | 2 +-
cloud-common/pom.xml | 1 +
.../com/muyu/event/config/IoTDBConfig.java | 2 -
.../muyu/event/consumer/MessageConsumer.java | 7 +-
.../com/muyu/event/consumer/MqConsumer.java | 21 +++++
.../muyu/event/consumer/OnlineConsumer.java | 2 +
.../muyu/event/controller/DataController.java | 1 +
.../event/controller/IoTDBController.java | 6 +-
.../muyu/event/controller/TestController.java | 29 ++++---
.../java/com/muyu/event/domian/Event.java | 8 +-
24 files changed, 132 insertions(+), 218 deletions(-)
delete mode 100644 cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/DelayedQueueConfig.java
delete mode 100644 cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/TopicConfig.java
rename cloud-common/cloud-common-rabbit/src/main/java/com/muyu/{common/rabbit => rabbitmq}/config/MyConfirmCallback.java (97%)
rename cloud-common/cloud-common-rabbit/src/main/java/com/muyu/{common/rabbit => rabbitmq}/config/RabbitAdminConfig.java (88%)
rename cloud-common/cloud-common-rabbit/src/main/java/com/muyu/{common/rabbit => rabbitmq}/config/RabbitmqConfig.java (94%)
rename cloud-common/cloud-common-rabbit/src/main/java/com/muyu/{common/rabbit => rabbitmq}/config/ReturnCallbackConfig.java (96%)
rename cloud-common/cloud-common-rabbit/src/main/java/com/muyu/{common/rabbit => rabbitmq}/constants/RabbitmqConstants.java (94%)
rename cloud-common/cloud-common-rabbit/src/main/java/com/muyu/{common/rabbit => rabbitmq}/consumer/RabbitMQConsumerUtil.java (90%)
rename cloud-common/cloud-common-rabbit/src/main/java/com/muyu/{common/rabbit => rabbitmq}/producer/RabbitMQProducerUtil.java (83%)
create mode 100644 cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/util/CacheUtil.java
create mode 100644 cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java
diff --git a/cloud-common/cloud-common-kafka/src/main/java/com/muyu/common/kafka/config/KafkaConsumerConfig.java b/cloud-common/cloud-common-kafka/src/main/java/com/muyu/common/kafka/config/KafkaConsumerConfig.java
index 3eba063..9fcb51e 100644
--- a/cloud-common/cloud-common-kafka/src/main/java/com/muyu/common/kafka/config/KafkaConsumerConfig.java
+++ b/cloud-common/cloud-common-kafka/src/main/java/com/muyu/common/kafka/config/KafkaConsumerConfig.java
@@ -1,7 +1,5 @@
package com.muyu.common.kafka.config;
-
-
import com.muyu.common.core.constant.KafkaConstant;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.common.serialization.StringDeserializer;
diff --git a/cloud-common/cloud-common-kafka/src/main/java/com/muyu/common/kafka/config/KafkaProducerConfig.java b/cloud-common/cloud-common-kafka/src/main/java/com/muyu/common/kafka/config/KafkaProducerConfig.java
index becdcda..d805b25 100644
--- a/cloud-common/cloud-common-kafka/src/main/java/com/muyu/common/kafka/config/KafkaProducerConfig.java
+++ b/cloud-common/cloud-common-kafka/src/main/java/com/muyu/common/kafka/config/KafkaProducerConfig.java
@@ -49,8 +49,6 @@ public class KafkaProducerConfig {
private String acks;
-
-
@Bean
public KafkaProducer kafkaProducer() {
Map configs = new HashMap<>();
diff --git a/cloud-common/cloud-common-rabbit/pom.xml b/cloud-common/cloud-common-rabbit/pom.xml
index 79f5225..5d535ad 100644
--- a/cloud-common/cloud-common-rabbit/pom.xml
+++ b/cloud-common/cloud-common-rabbit/pom.xml
@@ -34,6 +34,7 @@
com.muyu
cloud-common-redis
+
diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/DelayedQueueConfig.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/DelayedQueueConfig.java
deleted file mode 100644
index 0b67d49..0000000
--- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/DelayedQueueConfig.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.muyu.common.rabbit.config;
-
-
-import com.muyu.common.rabbit.constants.RabbitmqConstants;
-import org.springframework.amqp.core.*;
-import org.springframework.amqp.rabbit.core.RabbitAdmin;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import javax.annotation.Resource;
-import java.util.HashMap;
-
-/**
- * @ClassName: DelayedQueueConfig
- * @Description: 延迟队列配置类
- */
-@Configuration
-public class DelayedQueueConfig {
-
-
- @Resource
- private RabbitAdmin rabbitAdmin;
-
- /**
- * 声明队列
- * @return 返回队列
- */
- @Bean
- public Queue delayedQueue() {
- Queue queue = new Queue(RabbitmqConstants.DELAYED_QUEUE_NAME);
- rabbitAdmin.declareQueue(queue);
- return queue;
- }
-
- /**
- * 声明交换机
- * @return 返回交换机
- */
- @Bean
- public Exchange delayedExchange() {
- HashMap arguments = new HashMap<>(3);
-
- arguments.put("x-delayed-type", "direct");
-
- /**
- * 声明自定义交换机
- * 第一个参数:交换机的名称
- * 第二个参数:交换机的类型
- * 第三个参数:是否需要持久化
- * 第四个参数:是否自动删除
- * 第五个参数:其他参数
- */
- CustomExchange customExchange = new CustomExchange(
- RabbitmqConstants.DELAYED_EXCHANGE_NAME,
- "x-delayed-message",
- true,
- false,
- arguments);
- rabbitAdmin.declareExchange(customExchange);
- return customExchange;
- }
-
- /**
- * 绑定交换机
- * @param delayedQueue 队列对象
- * @param delayedExchange 交换机对象
- */
- @Bean
- public Binding delayedQueueBindingDelayedExchange(
- @Qualifier("delayedQueue") Queue delayedQueue,
- @Qualifier("delayedExchange") Exchange delayedExchange) {
-
- Binding noargs = BindingBuilder.bind(delayedQueue)
- .to(delayedExchange)
- .with(RabbitmqConstants.DELAYED_ROUTING_KEY)
- .noargs();
- rabbitAdmin.declareBinding(noargs);
- return noargs;
- }
-
-
-}
diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/TopicConfig.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/TopicConfig.java
deleted file mode 100644
index 58d717b..0000000
--- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/TopicConfig.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.muyu.common.rabbit.config;
-
-import org.springframework.amqp.core.*;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @Author: WangXin
- * @Time: 2024/4/22 11:55
- * @Description: 主题模式配置
- */
-@Configuration
-public class TopicConfig {
-
- /**
- * 主题模式交换机
- * @return exchange
- */
- @Bean(name = "topicExchange")
- public Exchange getTopicExchange(){
- return ExchangeBuilder
- .topicExchange("exchange_topic")
- .build();
- }
-
- /**
- * 主题队列 01
- * @return queue
- */
- @Bean(name = "topicQueue01")
- public Queue getTopicQueue01(){
- return QueueBuilder
- .durable("queue_topic_01")
- .build();
- }
-
- /**
- * 主题队列 02
- * @return queue
- */
- @Bean(name = "topicQueue02")
- public Queue getTopicQueue02(){
- return QueueBuilder
- .durable("queue_topic_02")
- .build();
- }
-
- /**
- * 绑定队列 01
- * @return binding
- */
- @Bean
- public Binding getTopicBinding01(){
- return BindingBuilder
- .bind(getTopicQueue01())
- .to(getTopicExchange())
- //路由键 队列1接收debug级别的消息
- .with("front.#")
- .noargs();
- }
-
- /**
- * 绑定队列 02
- * @return binding
- */
- @Bean
- public Binding getTopicBinding02(){
- return BindingBuilder
- .bind(getTopicQueue02())
- .to(getTopicExchange())
- // 路由键 队列2接收info级别的消息
- .with("back.order.*")
- .noargs();
- }
-}
diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/MyConfirmCallback.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/config/MyConfirmCallback.java
similarity index 97%
rename from cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/MyConfirmCallback.java
rename to cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/config/MyConfirmCallback.java
index 2b40812..4c31cd4 100644
--- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/MyConfirmCallback.java
+++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/config/MyConfirmCallback.java
@@ -1,4 +1,4 @@
-package com.muyu.common.rabbit.config;
+package com.muyu.rabbitmq.config;
import lombok.AllArgsConstructor;
import org.springframework.amqp.rabbit.connection.CorrelationData;
diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitAdminConfig.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/config/RabbitAdminConfig.java
similarity index 88%
rename from cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitAdminConfig.java
rename to cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/config/RabbitAdminConfig.java
index 27b24c5..cca4318 100644
--- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitAdminConfig.java
+++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/config/RabbitAdminConfig.java
@@ -1,4 +1,4 @@
-package com.muyu.common.rabbit.config;
+package com.muyu.rabbitmq.config;
@@ -21,16 +21,16 @@ public class RabbitAdminConfig {
private String username;
@Value("${spring.rabbitmq.password}")
private String password;
- @Value("${spring.rabbitmq.virtualhost}")
- private String virtualHost;
+ @Value("${spring.rabbitmq.port}")
+ private Integer port;
@Bean
public ConnectionFactory connectionFactory() {
CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
cachingConnectionFactory.setHost(host);
+ cachingConnectionFactory.setPort(port);
cachingConnectionFactory.setUsername(username);
cachingConnectionFactory.setPassword(password);
- cachingConnectionFactory.setVirtualHost(virtualHost);
return cachingConnectionFactory;
}
diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitmqConfig.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/config/RabbitmqConfig.java
similarity index 94%
rename from cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitmqConfig.java
rename to cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/config/RabbitmqConfig.java
index 9814d1b..1b08976 100644
--- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitmqConfig.java
+++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/config/RabbitmqConfig.java
@@ -1,4 +1,4 @@
-package com.muyu.common.rabbit.config;
+package com.muyu.rabbitmq.config;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/ReturnCallbackConfig.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/config/ReturnCallbackConfig.java
similarity index 96%
rename from cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/ReturnCallbackConfig.java
rename to cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/config/ReturnCallbackConfig.java
index 212e2fd..e1c217b 100644
--- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/ReturnCallbackConfig.java
+++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/config/ReturnCallbackConfig.java
@@ -1,4 +1,4 @@
-package com.muyu.common.rabbit.config;
+package com.muyu.rabbitmq.config;
import lombok.AllArgsConstructor;
import org.springframework.amqp.core.ReturnedMessage;
diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/constants/RabbitmqConstants.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/constants/RabbitmqConstants.java
similarity index 94%
rename from cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/constants/RabbitmqConstants.java
rename to cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/constants/RabbitmqConstants.java
index 45495ab..5826edd 100644
--- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/constants/RabbitmqConstants.java
+++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/constants/RabbitmqConstants.java
@@ -1,4 +1,4 @@
-package com.muyu.common.rabbit.constants;
+package com.muyu.rabbitmq.constants;
/**
*
diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/consumer/RabbitMQConsumerUtil.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/consumer/RabbitMQConsumerUtil.java
similarity index 90%
rename from cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/consumer/RabbitMQConsumerUtil.java
rename to cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/consumer/RabbitMQConsumerUtil.java
index 2181562..aa41b60 100644
--- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/consumer/RabbitMQConsumerUtil.java
+++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/consumer/RabbitMQConsumerUtil.java
@@ -1,11 +1,15 @@
-package com.muyu.common.rabbit.consumer;
+package com.muyu.rabbitmq.consumer;
import com.alibaba.fastjson2.JSONObject;
import com.muyu.common.redis.service.RedisService;
+import com.muyu.rabbitmq.util.CacheUtil;
import com.rabbitmq.client.Channel;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.Queue;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
@@ -22,6 +26,9 @@ public class RabbitMQConsumerUtil {
private final RedisService redisService;
+ @Autowired
+ private CacheUtil cacheUtil;
+
/**
* 普通消费者
@@ -29,7 +36,8 @@ public class RabbitMQConsumerUtil {
* @param message
* @param channel
*/
- public void rabbitMQBasicConsumer(Object data ,Message message , Channel channel) {
+ @RabbitListener(queuesToDeclare = @Queue(name = "basic"))
+ public void rabbitMQBasicConsumer(String data ,Message message , Channel channel) {
log.info("当前时间:{} :RabbitMQConsumerUtil : {}", new Date(), message);
try {
// 获取到消息 开始消费
@@ -42,10 +50,12 @@ public class RabbitMQConsumerUtil {
return;
}
-
/**
* -----------------------------------以下为异步业务操作----------------------------
*/
+ String carList = (String) redisService.redisTemplate.opsForValue().get("carList");
+ cacheUtil.put("carList",carList);
+
/**
* ------------------------------------------------------------------------------
diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/producer/RabbitMQProducerUtil.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/producer/RabbitMQProducerUtil.java
similarity index 83%
rename from cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/producer/RabbitMQProducerUtil.java
rename to cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/producer/RabbitMQProducerUtil.java
index fc7c3b8..9050496 100644
--- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/producer/RabbitMQProducerUtil.java
+++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/producer/RabbitMQProducerUtil.java
@@ -1,7 +1,7 @@
-package com.muyu.common.rabbit.producer;
+package com.muyu.rabbitmq.producer;
import com.muyu.common.core.domain.Result;
-import com.muyu.common.rabbit.constants.RabbitmqConstants;
+import com.muyu.rabbitmq.constants.RabbitmqConstants;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.amqp.core.MessageProperties;
@@ -31,9 +31,9 @@ public class RabbitMQProducerUtil {
* @return 结果集
* 一对一消费,只有一个消费者能接收到
*/
- public Result> basicSendMessage(String queueName, Object param, String msg) {
+ public void basicSendMessage(String queueName, String param) {
- log.info("【简单模型mq】 : method: 【 basicSendMessage 】 - ages: 【 String : {}, Object : {}, String : {} 】 ---> 【 消息发送中。。。 】", RabbitmqConstants.BASIC_QUEUE_NAME, param, msg);
+ log.info("【简单模型mq】 : method: 【 basicSendMessage 】 - ages: 【 String : {}, Object : {}】 ---> 【 消息发送中。。。 】", RabbitmqConstants.BASIC_QUEUE_NAME, param);
// 发送简单模型消息
// 第一个参数: 绑定规则 相当于 队列名称
// 第二个参数:消息内容
@@ -44,7 +44,7 @@ public class RabbitMQProducerUtil {
log.info("【简单模型mq】 : method: 【 basicSendMessage 】- queue: 【 {} 】 ---> 【 消息发送成功 】", RabbitmqConstants.BASIC_QUEUE_NAME);
- return Result.success(msg!=null?msg:"消息发送成功");
+
}
/**
@@ -156,19 +156,19 @@ public class RabbitMQProducerUtil {
* @param delayTime 延迟时间
* @return 结果集
*/
- public Result> delayedSendMessage(Long delayTime, Object param) {
- log.info("【延迟队列模型】 : method: 【 delayedSendMessage 】 消息内容:{}---> 【 消息发送中。。。 】",param);
-
- rabbitTemplate.convertAndSend(RabbitmqConstants.DELAYED_EXCHANGE_NAME, RabbitmqConstants.DELAYED_ROUTING_KEY,param, message -> {
- MessageProperties messageProperties = message.getMessageProperties();
- messageProperties.setMessageId(UUID.randomUUID().toString());
- messageProperties.setDelayLong(delayTime);
- return message;
- });
- log.info("【延迟队列模型】 : method: 【 delayedSendMessage 】 消息内容:{}---> 【 消息发送成功 】",param);
-
- return Result.success(param,"消息发送成功");
-
- }
+// public Result> delayedSendMessage(Long delayTime, Object param) {
+// log.info("【延迟队列模型】 : method: 【 delayedSendMessage 】 消息内容:{}---> 【 消息发送中。。。 】",param);
+//
+// rabbitTemplate.convertAndSend(RabbitmqConstants.DELAYED_EXCHANGE_NAME, RabbitmqConstants.DELAYED_ROUTING_KEY,param, message -> {
+// MessageProperties messageProperties = message.getMessageProperties();
+// messageProperties.setMessageId(UUID.randomUUID().toString());
+// messageProperties.setDelayLong(delayTime);
+// return message;
+// });
+// log.info("【延迟队列模型】 : method: 【 delayedSendMessage 】 消息内容:{}---> 【 消息发送成功 】",param);
+//
+// return Result.success(param,"消息发送成功");
+//
+// }
}
diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/util/CacheUtil.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/util/CacheUtil.java
new file mode 100644
index 0000000..16ed054
--- /dev/null
+++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/util/CacheUtil.java
@@ -0,0 +1,37 @@
+package com.muyu.rabbitmq.util;
+
+import com.github.benmanes.caffeine.cache.Cache;
+import com.github.benmanes.caffeine.cache.Caffeine;
+import org.springframework.stereotype.Component;
+
+/**
+ * 缓存工具类
+ *
+ * @program: cloud-server
+ * @author: 刘武
+ * @create: 2024-09-30 10:08
+ **/
+@Component
+public class CacheUtil {
+
+ private final Cache cache;
+
+ public CacheUtil() {
+ this.cache = Caffeine.newBuilder()
+ .maximumSize(500L)
+ .build();
+ }
+
+ public T get(String key) {
+ return cache.getIfPresent(key);
+ }
+
+ public void put(String key, T value) {
+ cache.put(key, value);
+ }
+
+ public void remove(String key) {
+ cache.invalidate(key);
+ }
+
+}
diff --git a/cloud-common/cloud-common-rabbit/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-rabbit/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 6cd925a..cffeca7 100644
--- a/cloud-common/cloud-common-rabbit/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/cloud-common/cloud-common-rabbit/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -2,6 +2,5 @@ com.muyu.rabbitmq.producer.RabbitMQProducerUtil
com.muyu.rabbitmq.consumer.RabbitMQConsumerUtil
com.muyu.rabbitmq.config.RabbitmqConfig
com.muyu.rabbitmq.config.MyConfirmCallback
-com.muyu.rabbitmq.config.DelayedQueueConfig
com.muyu.rabbitmq.config.RabbitAdminConfig
com.muyu.rabbitmq.config.ReturnCallbackConfig
diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java
index 8ea974e..04bf3b3 100644
--- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java
+++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java
@@ -40,7 +40,7 @@ import java.util.Map;
public class ManyDataSource implements ApplicationRunner{
private List dataSourceInfoList(){
RemoteSaaSService remoteSaaSService = SpringUtils.getBean(RemoteSaaSService.class);
-Result> tableDataInfoResult = remoteSaaSService.findDatabaseList();
+ Result> tableDataInfoResult = remoteSaaSService.findDatabaseList();
if (tableDataInfoResult==null){
throw new SaaSException("saas远调数据源错误");
}
diff --git a/cloud-common/pom.xml b/cloud-common/pom.xml
index 39e986c..7155ab4 100644
--- a/cloud-common/pom.xml
+++ b/cloud-common/pom.xml
@@ -23,6 +23,7 @@
cloud-common-saas
cloud-common-swagger
cloud-common-cache
+ cloud-common-kafka
cloud-common
diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/config/IoTDBConfig.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/config/IoTDBConfig.java
index eb71267..8016558 100644
--- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/config/IoTDBConfig.java
+++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/config/IoTDBConfig.java
@@ -66,9 +66,7 @@ public class IoTDBConfig {
measurements.add("car_vin");
measurements.add("information");
-
session.insertRecord(TABLENAME,System.currentTimeMillis(),measurements,list);
-
//关闭连接
session.close();
} catch (IoTDBConnectionException e) {
diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MessageConsumer.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MessageConsumer.java
index 3cb39c0..5caad0b 100644
--- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MessageConsumer.java
+++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MessageConsumer.java
@@ -1,7 +1,5 @@
package com.muyu.event.consumer;
-
-
import com.alibaba.fastjson2.JSONObject;
import com.muyu.event.basic.EventPublisher;
import lombok.extern.log4j.Log4j2;
@@ -36,7 +34,6 @@ public class MessageConsumer implements ApplicationRunner {
private final String topic="four_car";
-
@Override
public void run(ApplicationArguments args) throws Exception {
List list = Collections.singletonList(topic);
@@ -48,10 +45,8 @@ public class MessageConsumer implements ApplicationRunner {
String value = record.value();
JSONObject jsonObject = JSONObject.parseObject(value);
log.info("value:{}",value);
-// eventPublisher.publishEvent(jsonObject);
+ eventPublisher.publishEvent(jsonObject);
});
-
-
}
}
}
diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java
new file mode 100644
index 0000000..e8aeb7d
--- /dev/null
+++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java
@@ -0,0 +1,21 @@
+package com.muyu.event.consumer;
+
+import com.muyu.rabbitmq.consumer.RabbitMQConsumerUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * rabbitmq 监听器
+ * @author 刘武
+ * @package:com.muyu.event.consumer
+ * @name:MqConsumer
+ * @date:2024/10/2 14:17
+ */
+
+@Component
+public class MqConsumer {
+
+
+
+
+}
diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/OnlineConsumer.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/OnlineConsumer.java
index d8871b7..1fecc2e 100644
--- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/OnlineConsumer.java
+++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/OnlineConsumer.java
@@ -18,4 +18,6 @@ public class OnlineConsumer {
+
+
}
diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/DataController.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/DataController.java
index d1ff027..3603367 100644
--- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/DataController.java
+++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/DataController.java
@@ -4,6 +4,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
+ * 数据处理
* @author 刘武
* @package:com.muyu.event.controller
* @name:DataController
diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/IoTDBController.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/IoTDBController.java
index 3fa091c..7bbfed5 100644
--- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/IoTDBController.java
+++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/IoTDBController.java
@@ -19,13 +19,12 @@ import java.util.List;
* @name:ItodbController
* @date:2024/9/28 19:17
*/
-@RestController()
+@RestController
public class IoTDBController {
@Autowired
private IoTDBService tdbService;
-
/**
* 查询实时车辆信息列表
* @return list
@@ -47,7 +46,6 @@ public class IoTDBController {
return Result.success(carInformation);
};
-
/**
* 车辆添加
* @param addCarInformation
@@ -71,4 +69,6 @@ public class IoTDBController {
+
+
}
diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/TestController.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/TestController.java
index fb46a2e..cb379a4 100644
--- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/TestController.java
+++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/TestController.java
@@ -2,20 +2,17 @@ package com.muyu.event.controller;
import com.alibaba.fastjson2.JSONObject;
-import com.muyu.event.service.TestService;
+import com.muyu.rabbitmq.producer.RabbitMQProducerUtil;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
-import org.springframework.amqp.core.AmqpTemplate;
-import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
-import java.text.SimpleDateFormat;
-import java.util.Date;
+
/**
+ * 测试
* @author 刘武
* @package:com.muyu.event.controller
* @name:TestController
@@ -26,25 +23,33 @@ public class TestController {
@Resource
private KafkaProducer kafkaProducer;
-
+ @Resource
+ private RabbitMQProducerUtil rabbitMQProducerUtil;
private static final String topic="four_car";
- @GetMapping("send")
+ @GetMapping("sendKafka")
public String sendKafka(){
String message="发送一条信息";
JSONObject jsonObject = new JSONObject();
- jsonObject.put("cj","sb");
-
-
- ProducerRecord producerRecord = new ProducerRecord(topic,jsonObject.toJSONString());
+ jsonObject.put("cj","hh");
+ ProducerRecord producerRecord = new ProducerRecord(topic,jsonObject.toString());
kafkaProducer.send(producerRecord);
return "success";
}
+ @GetMapping("sendMq")
+ public String sendMq(){
+ String message="发送一条信息-mq";
+ rabbitMQProducerUtil.basicSendMessage("basic",message);
+ return "success-mq";
+ };
+
+
+
diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/domian/Event.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/domian/Event.java
index 8111375..82761e8 100644
--- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/domian/Event.java
+++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/domian/Event.java
@@ -13,7 +13,13 @@ import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
-
+/**
+ * 事件实体类
+ * @author 刘武
+ * @package:com.muyu.event.domain
+ * @name:Event
+ * @date:2024/9/28 23:10
+ */
@Data
@AllArgsConstructor
@NoArgsConstructor
From 705414778ca00ade880681ab7c7bc9bc19864cbb Mon Sep 17 00:00:00 2001
From: SuiXxx <1752599835@qq.com>
Date: Sun, 6 Oct 2024 20:04:08 +0800
Subject: [PATCH 04/17] =?UTF-8?q?feat():=E8=B4=A6=E5=8F=B7=E5=AF=86?=
=?UTF-8?q?=E7=A0=81=E5=AD=98=E5=85=A5=E6=95=B0=E6=8D=AE=E5=BA=93?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/com/muyu/vehicle/ManageInstance.java | 10 ++--
.../muyu/vehicle/config/ConnectFluxMq.java | 8 +++
.../vehicle/config/RestTemplateConfig.java | 29 -----------
.../muyu/vehicle/config/SelectInstance.java | 6 +--
.../controller/CarInstanceController.java | 14 +++--
.../vehicle/domain/VehicleAuthentication.java | 51 +++++++++++++++++++
.../mapper/VehicleAuthenticationMapper.java | 9 ++++
.../service/VehicleAuthenticationService.java | 10 ++++
.../service/impl/CarInstanceServiceImpl.java | 2 -
.../VehicleAuthenticationServiceImpl.java | 19 +++++++
10 files changed, 116 insertions(+), 42 deletions(-)
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/ConnectFluxMq.java
delete mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/RestTemplateConfig.java
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/VehicleAuthentication.java
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/mapper/VehicleAuthenticationMapper.java
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/VehicleAuthenticationService.java
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/VehicleAuthenticationServiceImpl.java
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/ManageInstance.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/ManageInstance.java
index 3e590ca..51e009b 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/ManageInstance.java
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/ManageInstance.java
@@ -121,11 +121,11 @@ public class ManageInstance implements ApplicationRunner {
log.info("正在加载实例");
Thread.sleep(30000);
List instanceInfos = SelectInstance.selectInstance(list);
- log.info("实例信息加载成功");
- for (InstanceInfo instanceInfo : instanceInfos) {
- redisService.getCacheObject(instanceInfo.getInstanceId());
- } log.info("实例信息:{}",instanceInfos);
-
+ log.info("实例信息查询成功");
+// for (InstanceInfo instanceInfo : instanceInfos) {
+// redisService.getCacheObject(instanceInfo.getInstanceId());
+// }
+ log.info("实例信息:",instanceInfos);
}
}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/ConnectFluxMq.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/ConnectFluxMq.java
new file mode 100644
index 0000000..44fa9e6
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/ConnectFluxMq.java
@@ -0,0 +1,8 @@
+package com.muyu.vehicle.config;
+
+/**
+ * 链接fluxMq
+ */
+public class ConnectFluxMq {
+
+}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/RestTemplateConfig.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/RestTemplateConfig.java
deleted file mode 100644
index 2cff8fb..0000000
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/RestTemplateConfig.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.muyu.vehicle.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.client.ClientHttpRequestFactory;
-import org.springframework.http.client.SimpleClientHttpRequestFactory;
-import org.springframework.web.client.RestTemplate;
-
-@Configuration
-public class RestTemplateConfig {
-
-
-
- @Bean
- public RestTemplate restTemplate(ClientHttpRequestFactory factory){
- return new RestTemplate(factory);
- }
-
-
-
- @Bean
- public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
- SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
- //超时设置
- factory.setReadTimeout(5000);//ms
- factory.setConnectTimeout(15000);//ms
- return factory;
- }
-}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/SelectInstance.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/SelectInstance.java
index 73c5a00..c6645c2 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/SelectInstance.java
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/SelectInstance.java
@@ -35,7 +35,7 @@ public class SelectInstance {
DescribeInstancesResponse resp = client.describeInstancesWithOptions(describeInstancesRequest, runtime);
DescribeInstancesResponseBody body = resp.getBody();
- ArrayList exampleInformations = new ArrayList<>();
+ ArrayList list = new ArrayList<>();
for (DescribeInstancesResponseBody.DescribeInstancesResponseBodyInstancesInstance instance : body.getInstances().getInstance()){
InstanceInfo instanceInfo = new InstanceInfo();
instanceInfo.setInstanceId(instance.getInstanceId());
@@ -44,9 +44,9 @@ public class SelectInstance {
log.info("实例状态:{}",instanceInfo.getStatus());
instanceInfo.setIpAddress(String.valueOf(instance.getPublicIpAddress().getIpAddress()));
log.info("实例IP:{}",instanceInfo.getIpAddress());
- exampleInformations.add(instanceInfo);
+ list.add(instanceInfo);
}
- log.info("实例信息:{}",instanceInfos);
+ log.info("实例信息:",list);
return instanceInfos;
}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/controller/CarInstanceController.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/controller/CarInstanceController.java
index 2ba2c33..4c90f15 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/controller/CarInstanceController.java
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/controller/CarInstanceController.java
@@ -1,19 +1,27 @@
package com.muyu.vehicle.controller;
import com.muyu.common.core.domain.Result;
+import com.muyu.vehicle.domain.VehicleAuthentication;
import com.muyu.vehicle.domain.req.VehicleConnectionReq;
+import com.muyu.vehicle.service.VehicleAuthenticationService;
import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
-@RestController
@Log4j2
+@RestController
+@RequestMapping("/carInstance")
public class CarInstanceController {
+ @Autowired
+ private VehicleAuthenticationService vehicleAuthenticationService;
- @PostMapping("/receiveMsg/connect")
+ @PostMapping("/receiveMsg")
public Result receiveMsg(@RequestBody VehicleConnectionReq vehicleConnectionReq){
log.info("=======>"+vehicleConnectionReq);
- return Result.success();
+ VehicleAuthentication vehicleAuthentication = VehicleAuthentication.buildVehicle(vehicleConnectionReq);
+ Integer i = vehicleAuthenticationService.insertVehicleAuthentication(vehicleAuthentication);
+ return i>0?Result.success():Result.error();
}
}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/VehicleAuthentication.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/VehicleAuthentication.java
new file mode 100644
index 0000000..1a3a95e
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/VehicleAuthentication.java
@@ -0,0 +1,51 @@
+package com.muyu.vehicle.domain;
+
+import com.muyu.vehicle.domain.req.VehicleConnectionReq;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+
+/**
+ * 车辆鉴权表
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class VehicleAuthentication {
+
+ /**
+ * ID
+ */
+ private Integer id;
+
+ /**
+ * 车辆VIN码
+ */
+ private String vin;
+
+ /**
+ * 用户名
+ */
+ private String userName;
+
+ /**
+ * 密码
+ */
+ private String password;
+
+
+ public static VehicleAuthentication buildVehicle(VehicleConnectionReq req){
+ return builder()
+ .vin(req.getVehicleVin())
+ .userName(req.getUsername())
+ .password((req.getVehicleVin()+req.getTimestamp()+req.getNonce()))
+ .build();
+ }
+
+
+
+}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/mapper/VehicleAuthenticationMapper.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/mapper/VehicleAuthenticationMapper.java
new file mode 100644
index 0000000..0777888
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/mapper/VehicleAuthenticationMapper.java
@@ -0,0 +1,9 @@
+package com.muyu.vehicle.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.muyu.vehicle.domain.VehicleAuthentication;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface VehicleAuthenticationMapper extends BaseMapper {
+}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/VehicleAuthenticationService.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/VehicleAuthenticationService.java
new file mode 100644
index 0000000..6a4833e
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/VehicleAuthenticationService.java
@@ -0,0 +1,10 @@
+package com.muyu.vehicle.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.muyu.common.domain.DataType;
+import com.muyu.vehicle.domain.VehicleAuthentication;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public interface VehicleAuthenticationService extends IService {
+ Integer insertVehicleAuthentication(VehicleAuthentication vehicleAuthentication);
+}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/CarInstanceServiceImpl.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/CarInstanceServiceImpl.java
index 20cbe53..e5f57a6 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/CarInstanceServiceImpl.java
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/CarInstanceServiceImpl.java
@@ -2,12 +2,10 @@ package com.muyu.vehicle.service.impl;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.uuid.UUID;
-import com.muyu.vehicle.config.RestTemplateConfig;
import com.muyu.vehicle.domain.MqttServerModel;
import com.muyu.vehicle.domain.req.VehicleConnectionReq;
import com.muyu.vehicle.service.CarInstanceService;
import lombok.extern.log4j.Log4j2;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/VehicleAuthenticationServiceImpl.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/VehicleAuthenticationServiceImpl.java
new file mode 100644
index 0000000..e85b35b
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/VehicleAuthenticationServiceImpl.java
@@ -0,0 +1,19 @@
+package com.muyu.vehicle.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.muyu.vehicle.domain.VehicleAuthentication;
+import com.muyu.vehicle.mapper.VehicleAuthenticationMapper;
+import com.muyu.vehicle.service.VehicleAuthenticationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class VehicleAuthenticationServiceImpl extends ServiceImpl implements VehicleAuthenticationService {
+ @Autowired
+ private VehicleAuthenticationMapper vehicleAuthenticationMapper;
+ @Override
+ public Integer insertVehicleAuthentication(VehicleAuthentication vehicleAuthentication) {
+ return vehicleAuthenticationMapper.insert(vehicleAuthentication);
+ }
+}
From 9499d9738e2b013dbe79c01517ebee01d2382076 Mon Sep 17 00:00:00 2001
From: Liu Wu <2780205363@qq.com>
Date: Mon, 7 Oct 2024 12:06:18 +0800
Subject: [PATCH 05/17] =?UTF-8?q?fix():=20=E4=BA=8B=E4=BB=B6=E5=9F=BA?=
=?UTF-8?q?=E7=A1=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
cloud-common/cloud-common-rabbit/pom.xml | 1 +
.../consumer/RabbitMQConsumerUtil.java | 8 +-
.../producer/RabbitMQProducerUtil.java | 202 +++++++++---------
.../com/muyu/rabbitmq/util/CacheUtil.java | 37 ----
cloud-modules/cloud-event/pom.xml | 6 +
.../com/muyu/event/basic/EventPublisher.java | 2 -
.../com/muyu/event/consumer/MqConsumer.java | 71 ++++++
.../muyu/event/controller/DataController.java | 1 +
.../event/controller/IoTDBController.java | 14 --
.../event/listener/AddDatabaseListener.java | 1 +
.../server/controller/TemplateController.java | 3 +-
11 files changed, 186 insertions(+), 160 deletions(-)
delete mode 100644 cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/util/CacheUtil.java
diff --git a/cloud-common/cloud-common-rabbit/pom.xml b/cloud-common/cloud-common-rabbit/pom.xml
index 5d535ad..f8daff2 100644
--- a/cloud-common/cloud-common-rabbit/pom.xml
+++ b/cloud-common/cloud-common-rabbit/pom.xml
@@ -35,6 +35,7 @@
cloud-common-redis
+
diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/consumer/RabbitMQConsumerUtil.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/consumer/RabbitMQConsumerUtil.java
index aa41b60..f823509 100644
--- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/consumer/RabbitMQConsumerUtil.java
+++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/consumer/RabbitMQConsumerUtil.java
@@ -2,7 +2,7 @@ package com.muyu.rabbitmq.consumer;
import com.alibaba.fastjson2.JSONObject;
import com.muyu.common.redis.service.RedisService;
-import com.muyu.rabbitmq.util.CacheUtil;
+//import com.muyu.rabbitmq.util.CacheUtil;
import com.rabbitmq.client.Channel;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j2;
@@ -26,8 +26,8 @@ public class RabbitMQConsumerUtil {
private final RedisService redisService;
- @Autowired
- private CacheUtil cacheUtil;
+// @Autowired
+// private CacheUtil cacheUtil;
/**
@@ -54,7 +54,7 @@ public class RabbitMQConsumerUtil {
* -----------------------------------以下为异步业务操作----------------------------
*/
String carList = (String) redisService.redisTemplate.opsForValue().get("carList");
- cacheUtil.put("carList",carList);
+
/**
diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/producer/RabbitMQProducerUtil.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/producer/RabbitMQProducerUtil.java
index 9050496..3d9a148 100644
--- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/producer/RabbitMQProducerUtil.java
+++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/producer/RabbitMQProducerUtil.java
@@ -47,107 +47,107 @@ public class RabbitMQProducerUtil {
}
- /**
- * Work queue 工作模型
- *
- * @param obj 传递的消息 (如果是对象需要序列化)
- * @return 结果集
- * 多个消费者,你一个我一个分配消费消息,有预取机制,默认公平消费,可配置 能者多劳模式(),谁完成的快,谁多做一点
- */
- public Result> workSendMessage(String queueName, Object obj, String msg) {
-
- log.info("【工作模型mq】 : method: 【 workSendMessage 】 - ages: 【 String : {}, Object : {}, String : {} 】 ---> 【 消息发送中。。。 】", queueName, obj, msg);
- // 发送简单模型消息
- // 第一个参数: 绑定规则 相当于 队列名称
- // 第二个参数:消息内容
- rabbitTemplate.convertAndSend(queueName, obj, message -> {
- message.getMessageProperties().setMessageId(UUID.randomUUID().toString());
- return message;
- } );
-
- log.info("【工作模型mq】 : method: 【 workSendMessage 】- queue: 【 {} 】 ---> 【 消息发送成功 】", queueName);
-
- return Result.success("消息发送成功");
- }
-
- /**
- * Publish/Subscribe 发布订阅者模型
- * 多个消费者,多个消费者可以同时接收到消息 有交换机 类型 fanout
- *
- * @param exchange 交换机名称
- * @param obj 发送的消息Object
- * @param msg 响应的内容
- * @return 结果集
- */
- public Result> publishSubscribeSendMessage(String exchange, Object obj, String msg) {
-
- log.info("【订阅模型mq】 : method: 【 workSendMessage 】 - ages: 【 String : {}, Object : {}, String : {} 】 ---> 【 消息发送中。。。 】", exchange, obj, msg);
- // 发送简单模型消息
- // 第一个参数: exchange 交换机的名称
- // 第二个参数: 绑定规则 发布订阅者模型 不写 默认 "" 只要绑定就行 不需要规则
- // 第三个参数:消息内容
- rabbitTemplate.convertAndSend(exchange, "", obj, message -> {
- message.getMessageProperties().setMessageId(UUID.randomUUID().toString());
- return message;
- } );
-
- log.info("【订阅模型mq】 : method: 【 workSendMessage 】- exchange: 【 {} 】 ---> 【 消息发送成功 】", exchange);
-
- return Result.success("消息发送成功");
- }
-
- /**
- * Routing路由模型
- * 使用的是 Direct 类型的交换机,会将接收到的消息根据 规则 路由到指定的Queue(队列),因此称为路由模式
- *
- * @param exchange 交换机名称
- * @param rule 绑定规则 一个字符串即可
- * @param obj 发送的消息Object
- * @param msg 响应的内容
- * @return 结果集
- */
- public Result> routingSendMessage(String exchange, String rule, Object obj, String msg) {
-
- log.info("【路由模型mq】 : method: 【 workSendMessage 】 - ages: 【 String : {}, Object : {}, String : {} 】 ---> 【 消息发送中。。。 】", exchange, obj, msg);
- // 发送简单模型消息
- // 第一个参数: 绑定规则 相当于 队列名称
- // 第二个参数:消息内容
- rabbitTemplate.convertAndSend(exchange, rule, obj, message -> {
- message.getMessageProperties().setMessageId(UUID.randomUUID().toString());
- return message;
- } );
-
- log.info("【路由模型mq】 : method: 【 workSendMessage 】- exchange: 【 {} 】 ---> 【 消息发送成功 】", exchange);
-
- return Result.success("消息发送成功");
- }
-
-
- /**
- * Topic主题模型模型
- * 使用的是 topic 类型的交换机
- *
- * @param exchange 交换机名称
- * @param rule 绑定规则 可以绑定多个单词以 . 拼接 也可以使用 #(匹配 零个 一个 或 多个 单词) 或 *(匹配 一个 单词) 通配符(例如:name.msg, *.msg, age.# )
- * @param obj 发送的消息Object
- * @param msg 响应的内容
- * @return 结果集
- */
- public Result> topicSendMessage(String exchange, String rule, Object obj) {
-
- log.info("【主题模型mq】 : method: 【 workSendMessage 】 - ages: 【 String : {}, Object : {} 】 ---> 【 消息发送中。。。 】", exchange, obj);
- // 发送简单模型消息
- // 第一个参数: 绑定规则 相当于 队列名称
- // 第二个参数:消息内容
- rabbitTemplate.convertAndSend(exchange, rule, obj, message -> {
- message.getMessageProperties().setMessageId(UUID.randomUUID().toString());
- return message;
- } );
-
- log.info("【主题模型mq】 : method: 【 workSendMessage 】- exchange: 【 {} 】 ---> 【 消息发送成功 】", exchange);
-
- return Result.success(obj,"消息发送成功");
- }
+// /**
+// * Work queue 工作模型
+// *
+// * @param obj 传递的消息 (如果是对象需要序列化)
+// * @return 结果集
+// * 多个消费者,你一个我一个分配消费消息,有预取机制,默认公平消费,可配置 能者多劳模式(),谁完成的快,谁多做一点
+// */
+// public Result> workSendMessage(String queueName, Object obj, String msg) {
+//
+// log.info("【工作模型mq】 : method: 【 workSendMessage 】 - ages: 【 String : {}, Object : {}, String : {} 】 ---> 【 消息发送中。。。 】", queueName, obj, msg);
+// // 发送简单模型消息
+// // 第一个参数: 绑定规则 相当于 队列名称
+// // 第二个参数:消息内容
+// rabbitTemplate.convertAndSend(queueName, obj, message -> {
+// message.getMessageProperties().setMessageId(UUID.randomUUID().toString());
+// return message;
+// } );
+//
+// log.info("【工作模型mq】 : method: 【 workSendMessage 】- queue: 【 {} 】 ---> 【 消息发送成功 】", queueName);
+//
+// return Result.success("消息发送成功");
+// }
+//
+// /**
+// * Publish/Subscribe 发布订阅者模型
+// * 多个消费者,多个消费者可以同时接收到消息 有交换机 类型 fanout
+// *
+// * @param exchange 交换机名称
+// * @param obj 发送的消息Object
+// * @param msg 响应的内容
+// * @return 结果集
+// */
+// public Result> publishSubscribeSendMessage(String exchange, Object obj, String msg) {
+//
+// log.info("【订阅模型mq】 : method: 【 workSendMessage 】 - ages: 【 String : {}, Object : {}, String : {} 】 ---> 【 消息发送中。。。 】", exchange, obj, msg);
+// // 发送简单模型消息
+// // 第一个参数: exchange 交换机的名称
+// // 第二个参数: 绑定规则 发布订阅者模型 不写 默认 "" 只要绑定就行 不需要规则
+// // 第三个参数:消息内容
+// rabbitTemplate.convertAndSend(exchange, "", obj, message -> {
+// message.getMessageProperties().setMessageId(UUID.randomUUID().toString());
+// return message;
+// } );
+//
+// log.info("【订阅模型mq】 : method: 【 workSendMessage 】- exchange: 【 {} 】 ---> 【 消息发送成功 】", exchange);
+//
+// return Result.success("消息发送成功");
+// }
+//
+// /**
+// * Routing路由模型
+// * 使用的是 Direct 类型的交换机,会将接收到的消息根据 规则 路由到指定的Queue(队列),因此称为路由模式
+// *
+// * @param exchange 交换机名称
+// * @param rule 绑定规则 一个字符串即可
+// * @param obj 发送的消息Object
+// * @param msg 响应的内容
+// * @return 结果集
+// */
+// public Result> routingSendMessage(String exchange, String rule, Object obj, String msg) {
+//
+// log.info("【路由模型mq】 : method: 【 workSendMessage 】 - ages: 【 String : {}, Object : {}, String : {} 】 ---> 【 消息发送中。。。 】", exchange, obj, msg);
+// // 发送简单模型消息
+// // 第一个参数: 绑定规则 相当于 队列名称
+// // 第二个参数:消息内容
+// rabbitTemplate.convertAndSend(exchange, rule, obj, message -> {
+// message.getMessageProperties().setMessageId(UUID.randomUUID().toString());
+// return message;
+// } );
+//
+// log.info("【路由模型mq】 : method: 【 workSendMessage 】- exchange: 【 {} 】 ---> 【 消息发送成功 】", exchange);
+//
+// return Result.success("消息发送成功");
+// }
+//
+//
+// /**
+// * Topic主题模型模型
+// * 使用的是 topic 类型的交换机
+// *
+// * @param exchange 交换机名称
+// * @param rule 绑定规则 可以绑定多个单词以 . 拼接 也可以使用 #(匹配 零个 一个 或 多个 单词) 或 *(匹配 一个 单词) 通配符(例如:name.msg, *.msg, age.# )
+// * @param obj 发送的消息Object
+// * @param msg 响应的内容
+// * @return 结果集
+// */
+// public Result> topicSendMessage(String exchange, String rule, Object obj) {
+//
+// log.info("【主题模型mq】 : method: 【 workSendMessage 】 - ages: 【 String : {}, Object : {} 】 ---> 【 消息发送中。。。 】", exchange, obj);
+// // 发送简单模型消息
+// // 第一个参数: 绑定规则 相当于 队列名称
+// // 第二个参数:消息内容
+// rabbitTemplate.convertAndSend(exchange, rule, obj, message -> {
+// message.getMessageProperties().setMessageId(UUID.randomUUID().toString());
+// return message;
+// } );
+//
+// log.info("【主题模型mq】 : method: 【 workSendMessage 】- exchange: 【 {} 】 ---> 【 消息发送成功 】", exchange);
+//
+// return Result.success(obj,"消息发送成功");
+// }
/**
diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/util/CacheUtil.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/util/CacheUtil.java
deleted file mode 100644
index 16ed054..0000000
--- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/util/CacheUtil.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.muyu.rabbitmq.util;
-
-import com.github.benmanes.caffeine.cache.Cache;
-import com.github.benmanes.caffeine.cache.Caffeine;
-import org.springframework.stereotype.Component;
-
-/**
- * 缓存工具类
- *
- * @program: cloud-server
- * @author: 刘武
- * @create: 2024-09-30 10:08
- **/
-@Component
-public class CacheUtil {
-
- private final Cache cache;
-
- public CacheUtil() {
- this.cache = Caffeine.newBuilder()
- .maximumSize(500L)
- .build();
- }
-
- public T get(String key) {
- return cache.getIfPresent(key);
- }
-
- public void put(String key, T value) {
- cache.put(key, value);
- }
-
- public void remove(String key) {
- cache.invalidate(key);
- }
-
-}
diff --git a/cloud-modules/cloud-event/pom.xml b/cloud-modules/cloud-event/pom.xml
index cae475e..d9321b3 100644
--- a/cloud-modules/cloud-event/pom.xml
+++ b/cloud-modules/cloud-event/pom.xml
@@ -115,6 +115,12 @@
cloud-common-rabbit
+
+ com.muyu
+ saas-cache
+ 3.6.3
+
+
diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/basic/EventPublisher.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/basic/EventPublisher.java
index 624f7fa..f724836 100644
--- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/basic/EventPublisher.java
+++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/basic/EventPublisher.java
@@ -28,6 +28,4 @@ public class EventPublisher implements ApplicationEventPublisherAware {
publisher.publishEvent(event);
}
-
-
}
diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java
index e8aeb7d..4f10b09 100644
--- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java
+++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java
@@ -1,9 +1,24 @@
package com.muyu.event.consumer;
+import com.alibaba.fastjson2.JSONObject;
+import com.muyu.cache.ElectronicFenceGroupCacheService;
+import com.muyu.cache.SysCarCacheService;
+import com.muyu.common.domain.database.ElectronicFenceGroup;
+import com.muyu.common.domain.resp.SysCarVo;
+import com.muyu.common.redis.service.RedisService;
import com.muyu.rabbitmq.consumer.RabbitMQConsumerUtil;
+import com.rabbitmq.client.Channel;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.Queue;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import java.io.IOException;
+import java.util.Date;
+import java.util.List;
+
/**
* rabbitmq 监听器
* @author 刘武
@@ -13,9 +28,65 @@ import org.springframework.stereotype.Component;
*/
@Component
+@Log4j2
public class MqConsumer {
+ @Autowired
+ private RedisService redisService;
+ @Autowired
+ private SysCarCacheService sysCarCacheService;
+ @Autowired
+ private ElectronicFenceGroupCacheService electronicFenceGroupCacheService;
+
+ @RabbitListener(queuesToDeclare = @Queue(name = "basic"))
+ public void rabbitMQBasicConsumer(String data , Message message , Channel channel) {
+ log.info("当前时间:{} :RabbitMQConsumerUtil : {}", new Date(), message);
+ try {
+ // 获取到消息 开始消费
+ log.info("消息消费者接收到消息,消息内容:{}", JSONObject.toJSONString(data));
+
+ Long add = redisService.redisTemplate.opsForSet().add(data, message.getMessageProperties().getMessageId());
+
+ if (add != 1) {
+ return;
+ }
+
+ /**
+ * -----------------------------------以下为异步业务操作----------------------------
+ */
+ List carList = sysCarCacheService.get("carList");
+ ElectronicFenceGroup fenceGroupList = electronicFenceGroupCacheService.get("electronicFenceGroupList");
+
+
+ /**
+ * ------------------------------------------------------------------------------
+ */
+ // 消费消息成功之后需要确认
+ // long deliveryTag 消息投递序号 自增的数字 在整个队列中唯一 拿到这个序号就相当于拿到这条消息
+ // boolean multiple 是否批量确认 true 批量 确认小于等于当前投递序号的消息 false 单个确认
+ channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+ log.info("xxx消费者接收到消息,消息内容:{},消费成功...", message);
+
+ } catch (Exception e) {
+ log.error("xxx消费者接收到消息,消息内容:{},消费消息异常,异常信息:{}", message, e);
+ // 消息回退 拒绝消费消息
+ // long deliveryTag 消息投递序号 自增的数字 在整个队列中唯一 拿到这个序号就相当于拿到这条消息
+ // boolean requeue 是否回到原来的队列
+ try {
+ channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
+// channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);
+ } catch (IOException ex) {
+ log.error("xxx消费者接收到消息,消息内容:{},回退消息异常,异常信息:{}", message, ex);
+ }
+ }finally {
+ try {
+ channel.close();
+ } catch (Exception e) {
+ log.error("xxx消费者关闭Channel异常,消息内容:{},异常信息:{}", message, e);
+ }
+ }
+ }
}
diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/DataController.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/DataController.java
index 3603367..d02d4b7 100644
--- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/DataController.java
+++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/DataController.java
@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RestController;
* @name:DataController
* @date:2024/9/29 20:16
*/
+
@RestController
@RequestMapping("data")
public class DataController {
diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/IoTDBController.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/IoTDBController.java
index 7bbfed5..d73514c 100644
--- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/IoTDBController.java
+++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/controller/IoTDBController.java
@@ -57,18 +57,4 @@ public class IoTDBController {
return Result.success("添加成功");
};
-
-
-
-
-
-
-
-
-
-
-
-
-
-
}
diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/listener/AddDatabaseListener.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/listener/AddDatabaseListener.java
index e3fc4a7..bfbfd04 100644
--- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/listener/AddDatabaseListener.java
+++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/listener/AddDatabaseListener.java
@@ -28,6 +28,7 @@ public class AddDatabaseListener implements EventListener {
keys.add(key);
values.add((String) value);
});
+
}
@Override
diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/TemplateController.java b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/TemplateController.java
index 89dc512..4b4d6c9 100644
--- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/TemplateController.java
+++ b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/TemplateController.java
@@ -33,7 +33,6 @@ public class TemplateController {
@Autowired
private TemplateService templateService;
-
/**
* 报文模版列表
* @return
@@ -58,7 +57,7 @@ public class TemplateController {
}
/**
- * 报文模版添加
+ * 报文模版添加0002222220
* @param template
* @return
*/
From c539a55f1ebdd541382a1be501aa33f81424cc6a Mon Sep 17 00:00:00 2001
From: Number7 <1845377266@qq.com>
Date: Mon, 7 Oct 2024 14:07:32 +0800
Subject: [PATCH 06/17] =?UTF-8?q?fix():=E5=B0=86=E5=8D=8F=E8=AE=AE?=
=?UTF-8?q?=E8=A7=A3=E6=9E=90=E4=B8=AD=E7=9A=84=E5=8F=96=E5=80=BC=E6=8D=A2?=
=?UTF-8?q?=E6=88=90Redis=E7=BC=93=E5=AD=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
cloud-auth/pom.xml | 10 ++
cloud-modules/cloud-modules-template/pom.xml | 9 +
.../template/CloudTemplateApplication.java | 4 -
.../muyu/template/config/MqttConfigure.java | 87 ++++-----
.../template/controller/KafkaController.java | 10 --
.../controller/TemplateController.java | 21 +++
.../src/main/java/com/muyu/template/test.java | 167 ++++++++++++++++--
.../main/java/com/muyu/template/test2.java | 85 +++++++++
.../com/muyu/common/domain/resp/SysCarVo.java | 6 +-
9 files changed, 325 insertions(+), 74 deletions(-)
delete mode 100644 cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/KafkaController.java
create mode 100644 cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/TemplateController.java
create mode 100644 cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test2.java
diff --git a/cloud-auth/pom.xml b/cloud-auth/pom.xml
index 4cd0756..c38fc2b 100644
--- a/cloud-auth/pom.xml
+++ b/cloud-auth/pom.xml
@@ -17,6 +17,11 @@
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.5.5
+
@@ -36,6 +41,11 @@
spring-cloud-starter-alibaba-sentinel
+
+ com.muyu
+ cloud-common-saas
+
+
org.springframework.boot
diff --git a/cloud-modules/cloud-modules-template/pom.xml b/cloud-modules/cloud-modules-template/pom.xml
index fa19206..12015f9 100644
--- a/cloud-modules/cloud-modules-template/pom.xml
+++ b/cloud-modules/cloud-modules-template/pom.xml
@@ -89,6 +89,15 @@
com.muyu
cloud-common-xxl
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+ redis.clients
+ jedis
+
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/CloudTemplateApplication.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/CloudTemplateApplication.java
index 80804e6..359305f 100644
--- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/CloudTemplateApplication.java
+++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/CloudTemplateApplication.java
@@ -13,11 +13,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableMyFeignClients
@SpringBootApplication
public class CloudTemplateApplication {
-
public static void main(String[] args) {
-
SpringApplication.run(CloudTemplateApplication.class, args);
-
}
-
}
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java
index 065aa80..1e81a87 100644
--- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java
+++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java
@@ -1,11 +1,19 @@
package com.muyu.template.config;
import cn.hutool.json.JSONObject;
import com.alibaba.fastjson2.JSON;
+import com.muyu.cache.MessageTemplateCacheService;
+import com.muyu.cache.MessageTemplateTypeCacheService;
+import com.muyu.cache.SysCarCacheService;
+import com.muyu.cache.TemplateCacheService;
+import com.muyu.common.domain.MessageTemplate;
import com.muyu.common.domain.MessageTemplateType;
import com.muyu.common.domain.SysCar;
+import com.muyu.common.domain.Template;
+import com.muyu.common.domain.resp.SysCarVo;
import com.muyu.common.redis.service.RedisService;
import lombok.extern.log4j.Log4j2;
+import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.eclipse.paho.client.mqttv3.*;
import org.springframework.beans.factory.annotation.Autowired;
@@ -33,10 +41,17 @@ public class MqttConfigure {
private RedisService redisService;
@Autowired
- private RedisTemplate redisTemplate;
+ private SysCarCacheService service;
-// @Autowired
-// private KafkaProducer kafkaProducer;
+ @Autowired
+ private MessageTemplateCacheService messageTemplateCacheService;
+
+ @Autowired
+ private MessageTemplateTypeCacheService messageTemplateTypeCacheService;
+
+
+ @Autowired
+ private KafkaProducer kafkaProducer;
@PostConstruct
public void MQTTMonitoring(){
@@ -69,8 +84,8 @@ public class MqttConfigure {
JSONObject jsonObject = new JSONObject(messageContent);
// 从JSON对象中获取"msg"字段的值
String msgValue = jsonObject.getStr("msg");
+ log.info("接收到的报文为:"+msgValue);
messageParsing(msgValue);
- log.info("接收到的值为:"+msgValue);
}
//交付完成
@Override
@@ -103,49 +118,36 @@ public class MqttConfigure {
result.append((char) decimal);
}
//取出VIN码
- String carVin = result.substring(0, 18 - 1);
+ String carVin = result.substring(1, 18 );
log.info("carVin码为:" + carVin);
//根据VIN码获取车辆信息
SysCar carByVin = null;
- List carList = redisService.getCacheList("carList");
- for (SysCar sysCar : carList) {
- if(sysCar.getCarVin().equals(carVin)){
- carByVin=sysCar;
+ List carList = service.get("carList");
+ if(carList==null){
+ log.info("redis未取到数据");
+ }else{
+ for (SysCarVo sysCarVo : carList) {
+ if(sysCarVo.getCarVin().equals(carVin)){
+ carByVin = sysCarVo;
+ }
}
}
-// SysCar carByVin = service.findCarByVin(carVin);
log.info("车辆信息为:" + carByVin);
//对应车辆所对应的报文模版
Integer templateId = carByVin.getTemplateId();
- List templateTypeList;
- //key
- String redisKey = "messageTemplateType" + templateId;
+ List templateTypeList=null;
+ List messageTemplateTypes=null;
+ String redisKey = "messageTemplateTypeList";
//key存在
- if (redisTemplate.hasKey(redisKey)) {
+ Boolean b = redisService.hasKey(redisKey);
+ if (b) {
+ messageTemplateTypes = messageTemplateTypeCacheService.get(redisKey);
- List list = redisTemplate.opsForList().range(redisKey, 0, -1);
-
- templateTypeList = list.stream().map(o -> JSON.parseObject(o.toString(), MessageTemplateType.class))
- .toList();
- } else {
- List templateTypeList1=null;
- List templateTypeList2 = redisService.getCacheList("templateTypeList");
- for (MessageTemplateType messageTemplateType : templateTypeList2) {
- if(messageTemplateType.getTemplateId()==templateId){
- templateTypeList1.add(messageTemplateType);
- }
- }
-// List templateTypeList1 = messageTemplateTypeService.findTemplateById(templateId);
- templateTypeList = templateTypeList1;
- templateTypeList.forEach(
- templateType ->
- redisTemplate.opsForList().rightPush(
- redisKey, JSON.toJSONString(templateType)
- )
- );
+ }else{
+ throw new RuntimeException("请先将配置存入Redis!!!");
}
//将模版里面有的配置进行循环
- for (MessageTemplateType messageTemplateType : templateTypeList) {
+ for (MessageTemplateType messageTemplateType : messageTemplateTypes) {
//开始位置
Integer startIndex = messageTemplateType.getStartIndex() - 1;
//结束位置
@@ -154,17 +156,16 @@ public class MqttConfigure {
jsonObject.put(messageTemplateType.getMessageField(), result.substring(startIndex, endIndex));
}
log.info("解析后的报文是:" + jsonObject);
-// sendKafka(jsonObject);
+ sendKafka(jsonObject);
log.info("发送kafka成功");
return jsonObject;
}
-
-// //kafka发送消息
-// public void sendKafka(JSONObject jsonObject){
-// ProducerRecord stringStringProducerRecord = new ProducerRecord<>("four_car", jsonObject.toString());
-// kafkaProducer.send(stringStringProducerRecord);
-// log.info("kafka发送成功");
-// }
+ //kafka发送消息
+ public void sendKafka(JSONObject jsonObject){
+ ProducerRecord stringStringProducerRecord = new ProducerRecord<>("four_car", jsonObject.toString());
+ kafkaProducer.send(stringStringProducerRecord);
+ log.info("kafka发送成功");
+ }
}
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/KafkaController.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/KafkaController.java
deleted file mode 100644
index 34e4ccd..0000000
--- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/KafkaController.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.muyu.template.controller;
-
-/**
- * @author liuxinyue
- * @Package:com.muyu.template.controller
- * @name:KafkaController
- * @Date:2024/10/4 16:11
- */
-public class KafkaController {
-}
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/TemplateController.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/TemplateController.java
new file mode 100644
index 0000000..1e55cda
--- /dev/null
+++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/TemplateController.java
@@ -0,0 +1,21 @@
+package com.muyu.template.controller;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author liuxinyue
+ * @Package:com.muyu.template.controller
+ * @name:TemplateController
+ * @Date:2024/10/7 10:28
+ */
+@RestController
+@RequestMapping("/template")
+@AllArgsConstructor
+@Tag(name = "协议解析管理",description = "协议解析管理")
+@Log4j2
+public class TemplateController {
+}
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java
index e602a8d..e7d8821 100644
--- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java
+++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java
@@ -1,34 +1,44 @@
package com.muyu.template;
-
-import com.muyu.common.domain.SysCar;
-import com.muyu.common.domain.Template;
-import com.muyu.common.domain.WarnRule;
-import com.muyu.common.domain.WarnStrategy;
+import cn.hutool.json.JSONObject;
+import com.alibaba.fastjson2.JSON;
+import com.muyu.common.domain.*;
import com.muyu.common.redis.service.RedisService;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.data.redis.core.RedisTemplate;
import javax.annotation.Resource;
+import java.util.ArrayList;
import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
/**
* @author liuxinyue
* @Package:com.muyu.template
* @name:test
* @Date:2024/10/4 9:42
*/
+@Log4j2
public class test {
+ private static int DURATION_SECONDS = 60;
+ private static List receivedStrings = new ArrayList<>();
+ private static int elapsedSeconds = 0;
+ private static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
+ private static String file="elapsed";
+ @Resource
+ private RedisTemplate redisTemplate;
+
@Resource
private RedisService redisService;
public void main(String[] args) {
-
+ String message="7E 36 33 59 43 5a 44 59 36 33 33 36 43 38 48 34 43 41 31 37 32 37 36 36 38 35 39 37 37 38 39 31 32 31 2e 34 37 34 30 30 30 30 33 31 2e 32 33 30 30 30 31 30 31 38 2e 30 30 30 31 38 38 31 2e 37 39 30 30 30 30 35 36 31 30 30 30 33 31 30 30 30 36 38 39 39 30 30 30 30 30 50 31 30 39 30 39 2e 35 30 30 32 34 30 30 30 30 31 33 32 36 35 37 33 39 30 36 37 30 30 30 30 32 31 31 30 30 31 33 32 35 30 30 30 30 36 37 30 30 30 2e 32 32 30 30 30 30 37 35 30 30 30 30 31 33 31 30 30 30 30 35 37 30 30 30 30 33 30 30 30 34 30 30 30 37 39 30 30 30 30 32 30 30 30 30 30 31 37 30 30 30 30 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 55 7E";
//车类型
Long carTypeId=null;
//查找车对应的类型
List carList = redisService.getCacheList("car");
for (SysCar sysCar : carList) {
- if(sysCar.getCarVin().equals("")){
+ if(sysCar.getCarVin().equals("1HGCM82633A123456")){
//获取到车的类型ID
carTypeId = sysCar.getCarTypeId();
}
@@ -47,16 +57,147 @@ public class test {
}
}
- //根据ID取出对应的报文模版
- List templateList = redisService.getCacheList("template");
+ //报文模版 根据templateId取出对应的模版
+ List templateTypeList1=null;
+ List templateTypeList = redisService.getCacheList("templateTypeList");
+ for (MessageTemplateType messageTemplateType : templateTypeList) {
+ if(messageTemplateType.getTemplateId().equals(templateId)){
+ templateTypeList1.add(messageTemplateType);
+ }
+ }
//获取策略对应的规则列表
List warnRule = redisService.getCacheList("warnRule");
-
+ //车辆对应的规则
List warnRuleList = null;
+ for (WarnRule rule : warnRule) {
+ for (WarnStrategy strategy : warnStrategyList) {
+ if(rule.getStrategyId()==strategy.getId()){
+ warnRuleList.add(rule);
+ }
+ }
+ }
+ String templateIds=null;
+ for (WarnRule rule : warnRuleList) {
+ //滑窗时间
+ Long slideTime = rule.getSlideTime();
+ if(slideTime!=null){
+ DURATION_SECONDS= Math.toIntExact(slideTime);
+ }
+ templateIds+=","+rule.getMsgTypeId();
+ }
+ String[] templateIdSplit = templateIds.split(",");
+ //最终获取到的报文模版 使用他进行比较
+ List messageTemplateTypes=null;
+ for (String s : templateIdSplit) {
+ for (MessageTemplateType messageTemplateType : templateTypeList1) {
+ if(s.equals(messageTemplateType.getTemplateId())){
+ messageTemplateTypes.add(messageTemplateType);
+ }
+ }
+ }
+ JSONObject entries = messageParsing(message);
+ //将解析后的数据添加到List receivedStrings中
+ receivedStrings.add(entries);
+ cleanUpOldStrings();
+ checkForSpeeding();
}
+
+ // 清理超过指定秒数内的数据
+ private static void cleanUpOldStrings() {
+ long currentTime = System.currentTimeMillis();
+ receivedStrings.removeIf(jsonObject ->
+ currentTime - jsonObject.getLong("time") > TimeUnit.SECONDS.toMillis(DURATION_SECONDS)
+ );
+ }
+
+ // 检查是否有超速情况
+ private static void checkForSpeeding() {
+ if (receivedStrings.size() < 2) return; // 如果数据不足,直接返回
+ for (int i = 0; i < receivedStrings.size() - 1; i++) {
+ JSONObject current = receivedStrings.get(i);
+ JSONObject next = receivedStrings.get(i + 1);
+ Short currentElapsed = current.getShort(file);
+ Short nextElapsed = next.getShort(file);
+ // 检查条件,如果相差大于12,则记录错误
+ if (nextElapsed > currentElapsed + 12) {
+ System.out.println("出错啦,出错啦,车子超速啦!!!");
+ }
+ }
+ }
+
+
+
+ //解析报文的方法
+ public JSONObject messageParsing(String templateMessage) {
+ //给一个JSON对象
+ JSONObject jsonObject = new JSONObject();
+ //先截取出VIN码 然后根据VIN码查询这个车属于什么类型
+ if (templateMessage.length() < 18) {
+ throw new RuntimeException("The vehicle message is incorrect");
+ }
+ //将报文进行切割
+ String[] hexArray = templateMessage.split(" ");
+ StringBuilder result = new StringBuilder();
+ for (String hex : hexArray) {
+ int decimal = Integer.parseInt(hex, 16);
+ result.append((char) decimal);
+ }
+ //取出VIN码
+ String carVin = result.substring(0, 18 - 1);
+ log.info("carVin码为:" + carVin);
+ //根据VIN码获取车辆信息
+ SysCar carByVin = null;
+ List carList = redisService.getCacheList("carList");
+ for (SysCar sysCar : carList) {
+ if(sysCar.getCarVin().equals(carVin)){
+ carByVin=sysCar;
+ }
+ }
+ log.info("车辆信息为:" + carByVin);
+ //对应车辆所对应的报文模版
+ Integer templateId = carByVin.getTemplateId();
+ List templateTypeList;
+ //key
+ String redisKey = "messageTemplateType" + templateId;
+ //key存在
+ if (redisTemplate.hasKey(redisKey)) {
+
+ List list = redisTemplate.opsForList().range(redisKey, 0, -1);
+
+ templateTypeList = list.stream().map(o -> JSON.parseObject(o.toString(), MessageTemplateType.class))
+ .toList();
+ } else {
+ List templateTypeList1=null;
+ List templateTypeList2 = redisService.getCacheList("templateTypeList");
+ for (MessageTemplateType messageTemplateType : templateTypeList2) {
+ if(messageTemplateType.getTemplateId()==templateId){
+ templateTypeList1.add(messageTemplateType);
+ }
+ }
+ templateTypeList = templateTypeList1;
+ templateTypeList.forEach(
+ templateType ->
+ redisTemplate.opsForList().rightPush(
+ redisKey, JSON.toJSONString(templateType)
+ )
+ );
+ }
+ //将模版里面有的配置进行循环
+ for (MessageTemplateType messageTemplateType : templateTypeList) {
+ //开始位置
+ Integer startIndex = messageTemplateType.getStartIndex() - 1;
+ //结束位置
+ Integer endIndex = messageTemplateType.getEndIndex();
+ //将每个解析后的字段都存入到JSON对象中
+ jsonObject.put(messageTemplateType.getMessageField(),result.substring(startIndex, endIndex));
+ }
+ log.info("解析后的报文是:" + jsonObject);
+
+ return jsonObject;
+ }
}
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test2.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test2.java
new file mode 100644
index 0000000..32f1447
--- /dev/null
+++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test2.java
@@ -0,0 +1,85 @@
+package com.muyu.template;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.log4j.Log4j2;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+/**
+ * @author liuxinyue
+ * @Package:com.muyu.template
+ * @name:test2
+ * @Date:2024/10/6 10:34
+ */
+@Log4j2
+public class test2 {
+
+ private static final int DURATION_SECONDS = 5;
+ private static List receivedStrings = new ArrayList<>();
+ private static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
+ private static int elapsedSeconds = 0;
+ private static String file="elapsed";
+
+ public static void main(String[] args) {
+ // 定义一个任务,每秒执行一次
+ Runnable task = new Runnable() {
+ @Override
+ public void run() {
+ JSONObject stringFromSource = getStringFromSource(); // 模拟获取字符串
+ receivedStrings.add(stringFromSource);
+ System.out.println("Received: " + stringFromSource);
+ // 清理超过的数据
+ cleanUpOldStrings();
+ // 检查超速条件
+ checkForSpeeding();
+ }
+ };
+ // 每隔1秒执行一次任务
+ scheduler.scheduleAtFixedRate(task, 0, 1, TimeUnit.SECONDS);
+ }
+
+
+ // 模拟从某个源获取字符串的方法
+ private static JSONObject getStringFromSource() {
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("message", "Hello World");
+ jsonObject.put("time", System.currentTimeMillis());
+ jsonObject.put("elapsed", elapsedSeconds);
+ return jsonObject;
+ }
+
+
+ // 清理超过60秒的数据
+ private static void cleanUpOldStrings() {
+ long currentTime = System.currentTimeMillis();
+ receivedStrings.removeIf(jsonObject ->
+ currentTime - jsonObject.getLong("time") > TimeUnit.SECONDS.toMillis(DURATION_SECONDS)
+ );
+ }
+
+ // 检查是否有超速情况
+ private static void checkForSpeeding() {
+ if (receivedStrings.size() < 2) return; // 如果数据不足,直接返回
+
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("message", "Hello World");
+ jsonObject.put("time", System.currentTimeMillis());
+ jsonObject.put("elapsed", 100);
+
+ for (int i = 0; i < receivedStrings.size() - 1; i++) {
+ JSONObject current = receivedStrings.get(i);
+ JSONObject next = receivedStrings.get(i + 1);
+
+ Short currentElapsed = current.getShort(file);
+ Short nextElapsed = next.getShort(file);
+ receivedStrings.add(jsonObject);
+ // 检查条件,如果相差大于12,则记录错误
+ if (nextElapsed > currentElapsed + 12) {
+ System.out.println("出错啦,出错啦,车子超速啦!!!");
+ }
+ }
+ }
+
+
+}
diff --git a/cloud-modules/saas/saas-common/src/main/java/com/muyu/common/domain/resp/SysCarVo.java b/cloud-modules/saas/saas-common/src/main/java/com/muyu/common/domain/resp/SysCarVo.java
index c798859..966d328 100644
--- a/cloud-modules/saas/saas-common/src/main/java/com/muyu/common/domain/resp/SysCarVo.java
+++ b/cloud-modules/saas/saas-common/src/main/java/com/muyu/common/domain/resp/SysCarVo.java
@@ -2,10 +2,7 @@ package com.muyu.common.domain.resp;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.domain.SysCar;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
+import lombok.*;
/**
* 车辆管理返回值
@@ -18,6 +15,7 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
public class SysCarVo extends SysCar {
@Excel(name = "车辆类型名称")
From b395a24329d17b4fa22a52d35ba224782d1face9 Mon Sep 17 00:00:00 2001
From: Number7 <1845377266@qq.com>
Date: Mon, 7 Oct 2024 14:30:30 +0800
Subject: [PATCH 07/17] =?UTF-8?q?fix():=E4=BC=98=E5=8C=96=E5=8D=8F?=
=?UTF-8?q?=E8=AE=AE=E8=A7=A3=E6=9E=90=E4=B8=AD=E7=9A=84=E9=9B=86=E5=90=88?=
=?UTF-8?q?=E9=81=8D=E5=8E=86=E6=96=B9=E6=B3=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../muyu/template/config/MqttConfigure.java | 21 +++++++++++--------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java
index 1e81a87..48bb64c 100644
--- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java
+++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java
@@ -25,6 +25,12 @@ import org.springframework.web.bind.annotation.RequestParam;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
/**
*
* @author liuxinyue
@@ -49,7 +55,6 @@ public class MqttConfigure {
@Autowired
private MessageTemplateTypeCacheService messageTemplateTypeCacheService;
-
@Autowired
private KafkaProducer kafkaProducer;
@@ -124,25 +129,23 @@ public class MqttConfigure {
SysCar carByVin = null;
List carList = service.get("carList");
if(carList==null){
- log.info("redis未取到数据");
+ throw new RuntimeException("Redis未获取到车辆数据!!!");
}else{
- for (SysCarVo sysCarVo : carList) {
- if(sysCarVo.getCarVin().equals(carVin)){
- carByVin = sysCarVo;
- }
- }
+ // 使用 HashMap 存储车信息,以 VIN 作为键
+ Map carMap = carList.stream()
+ .collect(Collectors.toMap(SysCarVo::getCarVin, Function.identity()));
+ carByVin = carMap.get(carVin);
}
+
log.info("车辆信息为:" + carByVin);
//对应车辆所对应的报文模版
Integer templateId = carByVin.getTemplateId();
- List templateTypeList=null;
List messageTemplateTypes=null;
String redisKey = "messageTemplateTypeList";
//key存在
Boolean b = redisService.hasKey(redisKey);
if (b) {
messageTemplateTypes = messageTemplateTypeCacheService.get(redisKey);
-
}else{
throw new RuntimeException("请先将配置存入Redis!!!");
}
From ca505dc2c47cbd23136b154855f6e0ada0677706 Mon Sep 17 00:00:00 2001
From: Liu Wu <2780205363@qq.com>
Date: Mon, 7 Oct 2024 21:35:30 +0800
Subject: [PATCH 08/17] =?UTF-8?q?fix():=20=E4=BB=A3=E7=A0=81=E5=90=88?=
=?UTF-8?q?=E5=B9=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/java/com/muyu/auth/service/SysLoginService.java | 4 +++-
cloud-gateway/src/main/resources/bootstrap.yml | 2 +-
.../src/main/java/com/muyu/event/consumer/MqConsumer.java | 1 -
.../cloud-modules-system/src/main/resources/bootstrap.yml | 2 +-
cloud-modules/saas/pom.xml | 3 +++
.../saas/saas-server/src/main/resources/bootstrap.yml | 2 +-
6 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java b/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java
index 28cb748..665a504 100644
--- a/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java
+++ b/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java
@@ -13,8 +13,10 @@ import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.utils.ip.IpUtils;
import com.muyu.common.redis.service.RedisService;
import com.muyu.common.security.utils.SecurityUtils;
-import com.muyu.common.system.domain.Business;
+
+
import com.muyu.common.system.remote.RemoteUserService;
+import com.muyu.common.system.domain.Business;
import com.muyu.common.system.domain.SysUser;
import com.muyu.common.system.domain.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/cloud-gateway/src/main/resources/bootstrap.yml b/cloud-gateway/src/main/resources/bootstrap.yml
index de95a70..cf1cc9f 100644
--- a/cloud-gateway/src/main/resources/bootstrap.yml
+++ b/cloud-gateway/src/main/resources/bootstrap.yml
@@ -7,7 +7,7 @@ nacos:
addr: 47.101.53.251:8848
user-name: nacos
password: nacos
- namespace: yzl
+ namespace: four
# Spring
spring:
diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java
index 4f10b09..b5bac67 100644
--- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java
+++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java
@@ -56,7 +56,6 @@ public class MqConsumer {
* -----------------------------------以下为异步业务操作----------------------------
*/
List carList = sysCarCacheService.get("carList");
- ElectronicFenceGroup fenceGroupList = electronicFenceGroupCacheService.get("electronicFenceGroupList");
/**
diff --git a/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml
index afe1a22..566c624 100644
--- a/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml
+++ b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml
@@ -7,7 +7,7 @@ nacos:
addr: 47.101.53.251:8848
user-name: nacos
password: nacos
- namespace: yzl
+ namespace: four
# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all
# Spring
spring:
diff --git a/cloud-modules/saas/pom.xml b/cloud-modules/saas/pom.xml
index 6810929..7e02284 100644
--- a/cloud-modules/saas/pom.xml
+++ b/cloud-modules/saas/pom.xml
@@ -51,6 +51,9 @@
org.apache.kafka
kafka-clients
+
+
+
diff --git a/cloud-modules/saas/saas-server/src/main/resources/bootstrap.yml b/cloud-modules/saas/saas-server/src/main/resources/bootstrap.yml
index 25cea25..7ce8b80 100644
--- a/cloud-modules/saas/saas-server/src/main/resources/bootstrap.yml
+++ b/cloud-modules/saas/saas-server/src/main/resources/bootstrap.yml
@@ -7,7 +7,7 @@ nacos:
addr: 47.101.53.251:8848
user-name: nacos
password: nacos
- namespace: yzl
+ namespace: four
# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all
# Spring
spring:
From 2235097f051628748801c73d025852820b7ef0fe Mon Sep 17 00:00:00 2001
From: SuiXxx <1752599835@qq.com>
Date: Mon, 7 Oct 2024 21:39:01 +0800
Subject: [PATCH 09/17] =?UTF-8?q?feat():=E8=B4=A6=E5=8F=B7=E5=AF=86?=
=?UTF-8?q?=E7=A0=81=E5=AD=98=E5=85=A5=E6=95=B0=E6=8D=AE=E5=BA=93?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../cloud-modules-vehiclegateway/pom.xml | 9 +-
.../java/com/muyu/vehicle/ManageInstance.java | 154 +++++++++---------
.../muyu/vehicle/config/CloseInstance.java | 3 +-
.../muyu/vehicle/config/ConnectFluxMq.java | 46 ++++++
.../muyu/vehicle/config/CreateExchange.java | 41 +++++
.../muyu/vehicle/config/SelectInstance.java | 9 +
.../controller/CarInstanceController.java | 11 +-
.../muyu/vehicle/domain/MqttServerModel.java | 3 +
.../vehicle/domain/VehicleAuthentication.java | 51 ------
.../domain/req/VehicleConnectionReq.java | 22 +++
.../mapper/VehicleAuthenticationMapper.java | 9 -
.../vehicle/mapper/VehicleConnectMapper.java | 12 ++
.../vehicle/service/CarInstanceService.java | 19 ---
.../service/VehicleAuthenticationService.java | 10 --
.../service/VehicleConnectService.java | 12 ++
.../service/impl/CarInstanceServiceImpl.java | 37 -----
.../VehicleAuthenticationServiceImpl.java | 19 ---
.../impl/VehicleConnectServiceImpl.java | 36 ++++
.../com/muyu/vehicle/utils/CreateClient.java | 1 +
19 files changed, 272 insertions(+), 232 deletions(-)
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/CreateExchange.java
delete mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/VehicleAuthentication.java
delete mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/mapper/VehicleAuthenticationMapper.java
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/mapper/VehicleConnectMapper.java
delete mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/CarInstanceService.java
delete mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/VehicleAuthenticationService.java
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/VehicleConnectService.java
delete mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/CarInstanceServiceImpl.java
delete mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/VehicleAuthenticationServiceImpl.java
create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/VehicleConnectServiceImpl.java
diff --git a/cloud-modules/cloud-modules-vehiclegateway/pom.xml b/cloud-modules/cloud-modules-vehiclegateway/pom.xml
index 33e4264..b4a45f4 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/pom.xml
+++ b/cloud-modules/cloud-modules-vehiclegateway/pom.xml
@@ -86,10 +86,10 @@
-
- com.muyu
- cloud-common-rabbit
-
+
+
+
+
org.springframework.boot
@@ -143,6 +143,7 @@
forest-spring-boot-starter
1.5.36
+
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/ManageInstance.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/ManageInstance.java
index 51e009b..c8457c5 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/ManageInstance.java
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/ManageInstance.java
@@ -1,16 +1,15 @@
package com.muyu.vehicle;
+import com.alibaba.fastjson.JSONObject;
import com.aliyun.ecs20140526.Client;
import com.aliyun.ecs20140526.models.*;
import com.aliyun.tea.TeaException;
-import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.Common;
import com.aliyun.teautil.models.RuntimeOptions;
import com.muyu.common.redis.service.RedisService;
import com.muyu.vehicle.config.SelectInstance;
import com.muyu.vehicle.domain.InstanceInfo;
import com.muyu.vehicle.utils.CreateClient;
-import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
@@ -21,6 +20,7 @@ import java.util.ArrayList;
import java.util.List;
+
@Component
@Log4j2
/**
@@ -30,88 +30,89 @@ public class ManageInstance implements ApplicationRunner {
@Autowired
private RedisService redisService;
- /**
- * 镜像ID
- */
- public static final String IMAGE_ID = "m-uf6ffgkry85fwu4znr6s";
+ /**
+ * 镜像ID
+ */
+ public static final String IMAGE_ID = "m-uf6ffgkry85fwu4znr6s";
- /**
- * 实例类型
- */
- public static final String INSTANCE_TYPE = "ecs.e-c1m1.large";
+ /**
+ * 实例类型
+ */
+ public static final String INSTANCE_TYPE = "ecs.e-c1m1.large";
- /**
- * 安全组ID
- */
- public static final String SECURITY_GROUP_ID = "sg-uf6glo8c4k17szhxu7sk";
+ /**
+ * 安全组ID
+ */
+ public static final String SECURITY_GROUP_ID = "sg-uf6glo8c4k17szhxu7sk";
- /**
- *交换机ID
- */
- public static final String V_SWITCH_ID = "vsw-uf6xy4rbt9ggcz93t6oib";
+ /**
+ *交换机ID
+ */
+ public static final String V_SWITCH_ID = "vsw-uf6xy4rbt9ggcz93t6oib";
- /**
- * 实例付费类型
- */
- public static final String INSTANCE_CHARGE_TY = "PostPaid";
+ /**
+ * 实例付费类型
+ */
+ public static final String INSTANCE_CHARGE_TY = "PostPaid";
- public static List generateInstance() throws Exception {
- // 创建阿里云ECS客户端
- // 创建ECS客户端对象,用于后续调用ECS相关API
- Client client = CreateClient.createClient();
- // 配置系统盘参数
- RunInstancesRequest.RunInstancesRequestSystemDisk systemDisk =
- new RunInstancesRequest.RunInstancesRequestSystemDisk()
- .setSize("40")
- .setCategory("cloud_essd");
+ public static List generateInstance() throws Exception {
+ // 创建阿里云ECS客户端
+ // 创建ECS客户端对象,用于后续调用ECS相关API
+ Client client = CreateClient.createClient();
+ // 配置系统盘参数
+ RunInstancesRequest.RunInstancesRequestSystemDisk systemDisk =
+ new RunInstancesRequest.RunInstancesRequestSystemDisk()
+ .setSize("40")
+ .setCategory("cloud_essd");
- // 创建创建实例请求对象并设置参数
+ // 创建创建实例请求对象并设置参数
- RunInstancesRequest runInstancesRequest = new RunInstancesRequest()
- .setRegionId("cn-shanghai") // 设置地域ID
- .setImageId(IMAGE_ID) // 设置镜像ID
- .setInstanceType(INSTANCE_TYPE) // 设置实例类型
- .setSecurityGroupId(SECURITY_GROUP_ID) // 设置安全组ID
- .setVSwitchId(V_SWITCH_ID) // 设置虚拟交换机ID
- .setInstanceName("cloud-MQTT") // 设置实例名称
- .setInstanceChargeType(INSTANCE_CHARGE_TY) // 设置实例付费类型为后付费按量付费
- .setSystemDisk(systemDisk) // 设置系统盘配置
- .setHostName("root") // 设置主机名
- .setPassword("2112A-four") // 设置实例密码
- .setAmount(2) // 设置创建实例的数量
- .setInternetChargeType("PayByTraffic")
- .setInternetMaxBandwidthOut(1);
+ RunInstancesRequest runInstancesRequest = new RunInstancesRequest()
+ .setRegionId("cn-shanghai") // 设置地域ID
+ .setImageId(IMAGE_ID) // 设置镜像ID
+ .setInstanceType(INSTANCE_TYPE) // 设置实例类型
+ .setSecurityGroupId(SECURITY_GROUP_ID) // 设置安全组ID
+ .setVSwitchId(V_SWITCH_ID) // 设置虚拟交换机ID
+ .setInstanceName("cloud-MQTT") // 设置实例名称
+ .setInstanceChargeType(INSTANCE_CHARGE_TY) // 设置实例付费类型为后付费按量付费
+ .setSystemDisk(systemDisk) // 设置系统盘配置
+ .setHostName("root") // 设置主机名
+ .setPassword("2112A-four") // 设置实例密码
+ .setAmount(2) // 设置创建实例的数量
+ .setInternetChargeType("PayByTraffic")
+ .setInternetMaxBandwidthOut(1);
- //创建运行时选择对象
- RuntimeOptions runTime =
- new RuntimeOptions();
- // 尝试执行创建实例请求
- try {
- ArrayList list = new ArrayList<>();
- // 复制代码运行请自行打印 API 的返回值
- RunInstancesResponse runInstancesResponse = client.runInstancesWithOptions(runInstancesRequest, runTime);
- RunInstancesResponseBody body = runInstancesResponse.getBody();
- for (String instance : body.getInstanceIdSets().getInstanceIdSet()) {
- list.add(instance);
- }
- log.info("ESC创建成功,实例ID为:" + list);
- return list;
- } catch (TeaException error) {
- // 错误 message
- log.info(error.getMessage());
- // 诊断地址
- log.info(error.getData().get("Recommend"));
- Common.assertAsString(error.message);
- } catch (Exception _error) {
- TeaException error = new TeaException(_error.getMessage(), _error);
- // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
- // 错误 message
- log.info("实例创建失败:" + error.getMessage());
+ //创建运行时选择对象
+ RuntimeOptions runTime =
+ new RuntimeOptions();
+ // 尝试执行创建实例请求
+ try {
+ ArrayList list = new ArrayList<>();
+ // 复制代码运行请自行打印 API 的返回值
+ RunInstancesResponse runInstancesResponse = client.runInstancesWithOptions(runInstancesRequest, runTime);
+ RunInstancesResponseBody body = runInstancesResponse.getBody();
+ for (String instance : body.getInstanceIdSets().getInstanceIdSet()) {
+ list.add(instance);
}
- return null;
+ log.info("ESC创建成功,实例ID为:" + list);
+ return list;
+ } catch (TeaException error) {
+ // 错误 message
+ log.info(error.getMessage());
+ // 诊断地址
+ log.info(error.getData().get("Recommend"));
+ Common.assertAsString(error.message);
+ } catch (Exception _error) {
+ TeaException error = new TeaException(_error.getMessage(), _error);
+ // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
+ // 错误 message
+ log.info("实例创建失败:" + error.getMessage());
}
+ return null;
+ }
+
@Override
@@ -122,10 +123,11 @@ public class ManageInstance implements ApplicationRunner {
Thread.sleep(30000);
List instanceInfos = SelectInstance.selectInstance(list);
log.info("实例信息查询成功");
-// for (InstanceInfo instanceInfo : instanceInfos) {
-// redisService.getCacheObject(instanceInfo.getInstanceId());
-// }
- log.info("实例信息:",instanceInfos);
+ for (InstanceInfo instanceInfo : instanceInfos) {
+ redisService.setCacheObject("FourInstanceIdKey:"+instanceInfo.getInstanceId(),instanceInfo);
+ }
+ System.out.println("实例信息:"+instanceInfos);
+ log.info("实例信息:", JSONObject.toJSONString(instanceInfos));
}
}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/CloseInstance.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/CloseInstance.java
index d8ad297..dd6ab92 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/CloseInstance.java
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/CloseInstance.java
@@ -11,6 +11,7 @@ import com.aliyun.teautil.models.RuntimeOptions;
import com.muyu.vehicle.utils.CreateClient;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.DisposableBean;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
@@ -18,6 +19,7 @@ import java.util.ArrayList;
/**
* 删除实例信息
*/
+
@Component
@Log4j2
public class CloseInstance implements DisposableBean{
@@ -96,4 +98,3 @@ public class CloseInstance implements DisposableBean{
}
}
-
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/ConnectFluxMq.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/ConnectFluxMq.java
index 44fa9e6..fbe5ae6 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/ConnectFluxMq.java
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/ConnectFluxMq.java
@@ -1,8 +1,54 @@
package com.muyu.vehicle.config;
+import com.muyu.vehicle.domain.MqttServerModel;
+import feign.Client;
+import lombok.extern.log4j.Log4j2;
+import org.eclipse.paho.client.mqttv3.*;
+
/**
* 链接fluxMq
*/
+@Log4j2
public class ConnectFluxMq {
+
+
+ public void FluxMqConnect(String IP,String vin){
+ String topic = "car";
+ String broker = "tcp://"+IP+":1883";
+ String clientId = vin+"vehicleGateway";
+ MqttClient client;
+ try {
+ //创建
+ client = new MqttClient(broker,clientId);
+ //设置连接参数
+ MqttConnectOptions options = new MqttConnectOptions();
+ options.setCleanSession(true);
+ //连接到Broker
+ client.connect(options);
+ log.info("Connecting to broker: " + broker);
+ //连接
+ client.subscribe(topic,0);
+ client.setCallback(new MqttCallback() {
+ @Override
+ public void connectionLost(Throwable throwable) {
+
+ }
+
+ @Override
+ public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
+
+ }
+
+ @Override
+ public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
+
+ }
+ });
+
+ } catch (MqttException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/CreateExchange.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/CreateExchange.java
new file mode 100644
index 0000000..eb7436b
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/CreateExchange.java
@@ -0,0 +1,41 @@
+package com.muyu.vehicle.config;
+
+import lombok.extern.log4j.Log4j2;
+import org.springframework.amqp.core.*;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.amqp.rabbit.core.RabbitAdmin;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+@Log4j2
+@Component
+public class CreateExchange implements ApplicationRunner {
+
+ @Autowired
+ private ConnectionFactory connectionFactory;
+
+ @Override
+ public void run(ApplicationArguments args) throws Exception {
+ log.info("=====>开始创建交换机");
+
+ RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
+
+ // 创建Fanout类型的交换机
+ FanoutExchange exchange = new FanoutExchange("ONLINE_EXCHANGE", true, false);
+
+ rabbitAdmin.declareExchange(exchange);
+
+ // 创建队列
+ Queue queue = new Queue("GO_ONLINE", true, false, false);
+
+ rabbitAdmin.declareQueue(queue);
+
+ // Fanout交换机绑定
+ rabbitAdmin.declareBinding(BindingBuilder.bind(queue).to(exchange));
+
+ log.info("=====>交换机创建成功");
+ log.info("=====>队列创建成功并绑定到交换机");
+ }
+}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/SelectInstance.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/SelectInstance.java
index c6645c2..71a3643 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/SelectInstance.java
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/SelectInstance.java
@@ -1,19 +1,28 @@
package com.muyu.vehicle.config;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.aliyun.ecs20140526.Client;
import com.aliyun.ecs20140526.models.DescribeInstancesRequest;
import com.aliyun.ecs20140526.models.DescribeInstancesResponse;
import com.aliyun.ecs20140526.models.DescribeInstancesResponseBody;
import com.aliyun.teautil.Common;
import com.aliyun.teautil.models.RuntimeOptions;
+import com.muyu.common.core.exception.ServiceException;
+import com.muyu.common.redis.service.RedisService;
import com.muyu.vehicle.domain.InstanceInfo;
import com.muyu.vehicle.utils.CreateClient;
import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
+/**
+ * 查询实例信息
+ */
+
/**
* 查询实例信息
*/
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/controller/CarInstanceController.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/controller/CarInstanceController.java
index 4c90f15..0ba1477 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/controller/CarInstanceController.java
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/controller/CarInstanceController.java
@@ -1,8 +1,8 @@
package com.muyu.vehicle.controller;
import com.muyu.common.core.domain.Result;
-import com.muyu.vehicle.domain.VehicleAuthentication;
+import com.muyu.vehicle.domain.MqttServerModel;
import com.muyu.vehicle.domain.req.VehicleConnectionReq;
-import com.muyu.vehicle.service.VehicleAuthenticationService;
+import com.muyu.vehicle.service.VehicleConnectService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -13,15 +13,14 @@ import org.springframework.web.bind.annotation.*;
public class CarInstanceController {
@Autowired
- private VehicleAuthenticationService vehicleAuthenticationService;
+ private VehicleConnectService vehicleConnectService;
@PostMapping("/receiveMsg")
public Result receiveMsg(@RequestBody VehicleConnectionReq vehicleConnectionReq){
log.info("=======>"+vehicleConnectionReq);
- VehicleAuthentication vehicleAuthentication = VehicleAuthentication.buildVehicle(vehicleConnectionReq);
- Integer i = vehicleAuthenticationService.insertVehicleAuthentication(vehicleAuthentication);
- return i>0?Result.success():Result.error();
+ Result connect = vehicleConnectService.getConnect(vehicleConnectionReq);
+ return Result.success(connect);
}
}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/MqttServerModel.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/MqttServerModel.java
index c6009ae..4436afb 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/MqttServerModel.java
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/MqttServerModel.java
@@ -21,8 +21,11 @@ public class MqttServerModel {
*/
private String broker;
+
/**
* MQTT订阅主题
*/
private String topic;
+
+
}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/VehicleAuthentication.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/VehicleAuthentication.java
deleted file mode 100644
index 1a3a95e..0000000
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/VehicleAuthentication.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.muyu.vehicle.domain;
-
-import com.muyu.vehicle.domain.req.VehicleConnectionReq;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.experimental.SuperBuilder;
-
-
-/**
- * 车辆鉴权表
- */
-@Data
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class VehicleAuthentication {
-
- /**
- * ID
- */
- private Integer id;
-
- /**
- * 车辆VIN码
- */
- private String vin;
-
- /**
- * 用户名
- */
- private String userName;
-
- /**
- * 密码
- */
- private String password;
-
-
- public static VehicleAuthentication buildVehicle(VehicleConnectionReq req){
- return builder()
- .vin(req.getVehicleVin())
- .userName(req.getUsername())
- .password((req.getVehicleVin()+req.getTimestamp()+req.getNonce()))
- .build();
- }
-
-
-
-}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/req/VehicleConnectionReq.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/req/VehicleConnectionReq.java
index e47991c..5a984e1 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/req/VehicleConnectionReq.java
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/domain/req/VehicleConnectionReq.java
@@ -1,5 +1,8 @@
package com.muyu.vehicle.domain.req;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -12,8 +15,19 @@ import lombok.NoArgsConstructor;
@Builder
@AllArgsConstructor
@NoArgsConstructor
+@TableName(value = "vehicle_connection")
public class VehicleConnectionReq {
+ /**
+ * ID
+ */
+ @TableId(type = IdType.AUTO)
+ private Integer id;
+
+
+ /**
+ * 车辆VIN
+ */
private String vehicleVin;
/**
@@ -28,9 +42,17 @@ public class VehicleConnectionReq {
private String username;
+
/**
* 随机字符串
*/
private String nonce;
+
+ /**
+ * 密码
+ */
+ private String password;
+
+
}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/mapper/VehicleAuthenticationMapper.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/mapper/VehicleAuthenticationMapper.java
deleted file mode 100644
index 0777888..0000000
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/mapper/VehicleAuthenticationMapper.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.muyu.vehicle.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.muyu.vehicle.domain.VehicleAuthentication;
-import org.apache.ibatis.annotations.Mapper;
-
-@Mapper
-public interface VehicleAuthenticationMapper extends BaseMapper {
-}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/mapper/VehicleConnectMapper.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/mapper/VehicleConnectMapper.java
new file mode 100644
index 0000000..50af952
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/mapper/VehicleConnectMapper.java
@@ -0,0 +1,12 @@
+package com.muyu.vehicle.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.muyu.vehicle.domain.req.VehicleConnectionReq;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface VehicleConnectMapper extends BaseMapper {
+
+ VehicleConnectionReq selectByVehicleVin(String vin);
+
+}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/CarInstanceService.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/CarInstanceService.java
deleted file mode 100644
index cb519b4..0000000
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/CarInstanceService.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.muyu.vehicle.service;
-
-import com.muyu.common.core.domain.Result;
-import com.muyu.vehicle.domain.MqttServerModel;
-import com.muyu.vehicle.domain.req.VehicleConnectionReq;
-
-/**
- * 车辆业务层
- */
-public interface CarInstanceService {
-
- Result getConnect(VehicleConnectionReq carConnectionReq);
-
- /**
- * 车辆初始化
- */
- void carClientStart(String vin);
-
-}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/VehicleAuthenticationService.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/VehicleAuthenticationService.java
deleted file mode 100644
index 6a4833e..0000000
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/VehicleAuthenticationService.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.muyu.vehicle.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.muyu.common.domain.DataType;
-import com.muyu.vehicle.domain.VehicleAuthentication;
-import org.springframework.beans.factory.annotation.Autowired;
-
-public interface VehicleAuthenticationService extends IService {
- Integer insertVehicleAuthentication(VehicleAuthentication vehicleAuthentication);
-}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/VehicleConnectService.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/VehicleConnectService.java
new file mode 100644
index 0000000..cf276da
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/VehicleConnectService.java
@@ -0,0 +1,12 @@
+package com.muyu.vehicle.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.muyu.common.core.domain.Result;
+import com.muyu.vehicle.domain.MqttServerModel;
+import com.muyu.vehicle.domain.req.VehicleConnectionReq;
+
+public interface VehicleConnectService extends IService {
+
+ Result getConnect(VehicleConnectionReq vehicleConnectionReq);
+
+}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/CarInstanceServiceImpl.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/CarInstanceServiceImpl.java
deleted file mode 100644
index e5f57a6..0000000
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/CarInstanceServiceImpl.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.muyu.vehicle.service.impl;
-
-import com.muyu.common.core.domain.Result;
-import com.muyu.common.core.utils.uuid.UUID;
-import com.muyu.vehicle.domain.MqttServerModel;
-import com.muyu.vehicle.domain.req.VehicleConnectionReq;
-import com.muyu.vehicle.service.CarInstanceService;
-import lombok.extern.log4j.Log4j2;
-import org.springframework.stereotype.Service;
-
-/**
- * 车辆业务实现层
- */
-@Service
-@Log4j2
-public class CarInstanceServiceImpl implements CarInstanceService {
-
-
-
- @Override
- public Result getConnect(VehicleConnectionReq carConnectionReq) {
- return null;
- }
-
- @Override
- public void carClientStart(String vin) {
- String timestamp = String.valueOf(System.currentTimeMillis());
- VehicleConnectionReq carConnectionReq = VehicleConnectionReq.builder()
- .vehicleVin(vin)
- .timestamp(timestamp)
- .username(vin + timestamp)
- .nonce(UUID.fastUUID().toString().replaceAll("-", ""))
- .build();
-
- //获取网关节点信息
- }
-}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/VehicleAuthenticationServiceImpl.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/VehicleAuthenticationServiceImpl.java
deleted file mode 100644
index e85b35b..0000000
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/VehicleAuthenticationServiceImpl.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.muyu.vehicle.service.impl;
-
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.muyu.vehicle.domain.VehicleAuthentication;
-import com.muyu.vehicle.mapper.VehicleAuthenticationMapper;
-import com.muyu.vehicle.service.VehicleAuthenticationService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-@Service
-public class VehicleAuthenticationServiceImpl extends ServiceImpl implements VehicleAuthenticationService {
- @Autowired
- private VehicleAuthenticationMapper vehicleAuthenticationMapper;
- @Override
- public Integer insertVehicleAuthentication(VehicleAuthentication vehicleAuthentication) {
- return vehicleAuthenticationMapper.insert(vehicleAuthentication);
- }
-}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/VehicleConnectServiceImpl.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/VehicleConnectServiceImpl.java
new file mode 100644
index 0000000..340c273
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/service/impl/VehicleConnectServiceImpl.java
@@ -0,0 +1,36 @@
+package com.muyu.vehicle.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.muyu.common.core.domain.Result;
+import com.muyu.vehicle.domain.MqttServerModel;
+import com.muyu.vehicle.domain.req.VehicleConnectionReq;
+import com.muyu.vehicle.mapper.VehicleConnectMapper;
+import com.muyu.vehicle.service.VehicleConnectService;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+@Log4j2
+public class VehicleConnectServiceImpl extends ServiceImpl implements VehicleConnectService {
+ @Autowired
+ private VehicleConnectMapper vehicleConnectMapper;
+
+ @Override
+ public Result getConnect(VehicleConnectionReq vehicleConnectionReq) {
+ log.info("车辆连接信息:{}", vehicleConnectionReq);
+ //生成密码
+ vehicleConnectionReq.setPassword(vehicleConnectionReq.getVehicleVin() + vehicleConnectionReq.getTimestamp()
+ + vehicleConnectionReq.getNonce());
+
+ VehicleConnectionReq connection = vehicleConnectMapper.selectByVehicleVin(vehicleConnectionReq.getVehicleVin());
+ if (connection==null){
+ vehicleConnectMapper.insert(vehicleConnectionReq);
+ log.info("车辆预上线成功");
+ }else {
+ log.info("车辆已预上线成功,禁止重复");
+ }
+ return null;
+ }
+}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/utils/CreateClient.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/utils/CreateClient.java
index 092215a..abb7023 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/utils/CreateClient.java
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/utils/CreateClient.java
@@ -1,3 +1,4 @@
+
package com.muyu.vehicle.utils;
import com.aliyun.ecs20140526.Client;
From cd5e46b6503d442a5d37db2aabc690aecd615d42 Mon Sep 17 00:00:00 2001
From: SuiXxx <1752599835@qq.com>
Date: Mon, 7 Oct 2024 21:51:04 +0800
Subject: [PATCH 10/17] =?UTF-8?q?feat():=E9=A1=B9=E7=9B=AE=E5=90=AF?=
=?UTF-8?q?=E5=8A=A8=E5=88=9B=E5=BB=BA=E4=BA=A4=E6=8D=A2=E6=9C=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
cloud-modules/cloud-modules-vehiclegateway/pom.xml | 8 ++++----
.../main/java/com/muyu/vehicle/config/SelectInstance.java | 3 ++-
.../src/main/resources/bootstrap.yml | 4 +++-
3 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/cloud-modules/cloud-modules-vehiclegateway/pom.xml b/cloud-modules/cloud-modules-vehiclegateway/pom.xml
index b4a45f4..112b41e 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/pom.xml
+++ b/cloud-modules/cloud-modules-vehiclegateway/pom.xml
@@ -86,10 +86,10 @@
-
-
-
-
+
+ com.muyu
+ cloud-common-rabbit
+
org.springframework.boot
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/SelectInstance.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/SelectInstance.java
index 71a3643..e2048d7 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/SelectInstance.java
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/vehicle/config/SelectInstance.java
@@ -55,8 +55,9 @@ public class SelectInstance {
log.info("实例IP:{}",instanceInfo.getIpAddress());
list.add(instanceInfo);
}
+ System.out.println("实例信息:"+list);
log.info("实例信息:",list);
- return instanceInfos;
+ return list;
}
}
diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/bootstrap.yml
index 8ac2666..7739f36 100644
--- a/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/bootstrap.yml
+++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/bootstrap.yml
@@ -7,10 +7,12 @@ nacos:
addr: 47.101.53.251:8848
user-name: nacos
password: nacos
- namespace: four
+ namespace: sx
# Spring
spring:
+ main:
+ allow-bean-definition-overriding: true
application:
# 应用名称
name: cloud-vehicleGateway
From 97994a04527ca41643341a2b5cb8962761d78b0d Mon Sep 17 00:00:00 2001
From: Liu Wu <2780205363@qq.com>
Date: Mon, 7 Oct 2024 22:38:09 +0800
Subject: [PATCH 11/17] =?UTF-8?q?fix():=20=E4=BB=A3=E7=A0=81=E5=90=88?=
=?UTF-8?q?=E5=B9=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
cloud-auth/src/main/resources/bootstrap.yml | 2 +-
.../consumer/RabbitMQConsumerUtil.java | 2 +-
cloud-common/cloud-common-saas/pom.xml | 7 +-
.../many/datasource/ManyDataSource.java | 16 +-
.../constents/DatasourceContent.java | 7 +-
.../domain/model/DataSourceInfo.java | 3 +-
.../factory/DruidDataSourceFactory.java | 3 +-
.../holder/DynamicDataSourceHolder.java | 2 +-
.../many/datasource/init/InitDataSource.java | 58 ++++++++
.../common/saas/contents/SaaSConstant.java | 3 +-
.../common/saas/domain/model/EntInfo.java | 2 +-
.../common/saas/exception/SaaSException.java | 3 +-
.../saas/interceptor/SaaSInterceptor.java | 8 +-
...ot.autoconfigure.AutoConfiguration.imports | 3 +
.../com/muyu/event/consumer/MqConsumer.java | 1 -
.../event/listener/AddDatabaseListener.java | 1 +
cloud-modules/saas/pom.xml | 7 +
cloud-modules/saas/saas-server/pom.xml | 1 +
.../server/controller/CarTypeController.java | 2 -
.../service/impl/CarTypeServiceImpl.java | 3 +-
.../main/resources/mapper/CarTypeMapper.xml | 9 ++
.../resources/mapper/EnterpriseMapper.xml | 12 +-
.../main/resources/mapper/SysCarMapper.xml | 4 +-
.../resources/mapper/TemplateNeedMapper.xml | 10 ++
.../mapper/breakdown/SysCarFaultMapper.xml | 140 ++++++++++++++++++
.../mapper/message/DataTypeMapper.xml | 7 +
.../message/MessageTemplateTypeMapper.xml | 7 +
.../mapper/message/TemplateMapper.xml | 23 +++
28 files changed, 302 insertions(+), 44 deletions(-)
create mode 100644 cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/init/InitDataSource.java
create mode 100644 cloud-common/cloud-common-saas/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 cloud-modules/saas/saas-server/src/main/resources/mapper/CarTypeMapper.xml
create mode 100644 cloud-modules/saas/saas-server/src/main/resources/mapper/TemplateNeedMapper.xml
create mode 100644 cloud-modules/saas/saas-server/src/main/resources/mapper/breakdown/SysCarFaultMapper.xml
create mode 100644 cloud-modules/saas/saas-server/src/main/resources/mapper/message/DataTypeMapper.xml
create mode 100644 cloud-modules/saas/saas-server/src/main/resources/mapper/message/MessageTemplateTypeMapper.xml
create mode 100644 cloud-modules/saas/saas-server/src/main/resources/mapper/message/TemplateMapper.xml
diff --git a/cloud-auth/src/main/resources/bootstrap.yml b/cloud-auth/src/main/resources/bootstrap.yml
index 57dca73..fdf3847 100644
--- a/cloud-auth/src/main/resources/bootstrap.yml
+++ b/cloud-auth/src/main/resources/bootstrap.yml
@@ -7,7 +7,7 @@ nacos:
addr: 47.101.53.251:8848
user-name: nacos
password: nacos
- namespace: yzl
+ namespace: four
# Spring
spring:
application:
diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/consumer/RabbitMQConsumerUtil.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/consumer/RabbitMQConsumerUtil.java
index f823509..5d462ce 100644
--- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/consumer/RabbitMQConsumerUtil.java
+++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/rabbitmq/consumer/RabbitMQConsumerUtil.java
@@ -36,7 +36,7 @@ public class RabbitMQConsumerUtil {
* @param message
* @param channel
*/
- @RabbitListener(queuesToDeclare = @Queue(name = "basic"))
+// @RabbitListener(queuesToDeclare = @Queue(name = "basic"))
public void rabbitMQBasicConsumer(String data ,Message message , Channel channel) {
log.info("当前时间:{} :RabbitMQConsumerUtil : {}", new Date(), message);
try {
diff --git a/cloud-common/cloud-common-saas/pom.xml b/cloud-common/cloud-common-saas/pom.xml
index 6c0d2f6..bb7f692 100644
--- a/cloud-common/cloud-common-saas/pom.xml
+++ b/cloud-common/cloud-common-saas/pom.xml
@@ -33,9 +33,10 @@
com.muyu
cloud-common-security
-
-
-
+
+ com.mysql
+ mysql-connector-j
+
diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java
index 7245b4d..58d672f 100644
--- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java
+++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java
@@ -6,17 +6,17 @@ import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
import com.muyu.cloud.common.many.datasource.constents.DatasourceContent;
import com.muyu.cloud.common.many.datasource.domain.model.DataSourceInfo;
import com.muyu.cloud.common.many.datasource.factory.DruidDataSourceFactory;
+import com.muyu.cloud.common.many.datasource.init.InitDataSource;
import com.muyu.cloud.common.many.datasource.role.DynamicDataSource;
+import com.muyu.cloud.common.saas.domain.Datasource;
import com.muyu.cloud.common.saas.domain.model.EntInfo;
import com.muyu.cloud.common.saas.exception.SaaSException;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.SpringUtils;
-import com.muyu.common.system.domain.Datasource;
-import com.muyu.common.system.domain.SysUser;
import com.muyu.common.system.remote.RemoteSaaSService;
-import com.muyu.common.system.remote.RemoteUserService;
import lombok.extern.log4j.Log4j2;
import org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.autoconfigure.AutoConfiguration;
@@ -29,8 +29,7 @@ import java.util.List;
import java.util.Map;
/**
- * 多数据源
- * @author liuwu
+ * @Author: DongZeLiang
* @date: 2024/6/3
* @Description: 多数据源
* @Version: 1.0
@@ -39,9 +38,14 @@ import java.util.Map;
@Component
@AutoConfiguration(before = {MybatisPlusAutoConfiguration.class, MybatisAutoConfiguration.class})
public class ManyDataSource implements ApplicationRunner{
+
+ @Autowired
+ private InitDataSource initDataSource;
+
+
private List dataSourceInfoList(){
RemoteSaaSService remoteSaaSService = SpringUtils.getBean(RemoteSaaSService.class);
- Result> tableDataInfoResult = remoteSaaSService.findDatabaseList();
+ Result> tableDataInfoResult = initDataSource.initDatasource();
if (tableDataInfoResult==null){
throw new SaaSException("saas远调数据源错误");
}
diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/constents/DatasourceContent.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/constents/DatasourceContent.java
index bb27584..b69b858 100644
--- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/constents/DatasourceContent.java
+++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/constents/DatasourceContent.java
@@ -1,8 +1,7 @@
package com.muyu.cloud.common.many.datasource.constents;
/**
- * 数据源常量
- * @author liuwu
+ * @author DongZl
* @description: 数据源常量
* @Date 2023-8-1 上午 11:02
*/
@@ -17,8 +16,4 @@ public class DatasourceContent {
public final static String IP = "47.101.53.251";
public final static Integer PORT = 3306;
-
- public static String getDatasourceUrl(String databaseName) {
- return String.format(DATASOURCE_URL,USER_NAME,PASSWORD,IP,PORT, databaseName);
- }
}
diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/domain/model/DataSourceInfo.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/domain/model/DataSourceInfo.java
index 6406cfc..73cc26e 100644
--- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/domain/model/DataSourceInfo.java
+++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/domain/model/DataSourceInfo.java
@@ -8,8 +8,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
/**
- * 数据源实体类
- * @author liuwu
+ * @author DongZl
* @description: 数据源实体类
* @Date 2023-8-1 上午 11:15
*/
diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/factory/DruidDataSourceFactory.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/factory/DruidDataSourceFactory.java
index 30eee74..7ceb782 100644
--- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/factory/DruidDataSourceFactory.java
+++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/factory/DruidDataSourceFactory.java
@@ -8,8 +8,7 @@ import org.springframework.stereotype.Component;
import java.sql.SQLException;
/**
- * Druid工厂
- * @author liuwu
+ * @Author: DongZeLiang
* @date: 2024/6/3
* @Description: Druid工厂
* @Version: 1.0
diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/holder/DynamicDataSourceHolder.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/holder/DynamicDataSourceHolder.java
index 5cafaa0..e53229a 100644
--- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/holder/DynamicDataSourceHolder.java
+++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/holder/DynamicDataSourceHolder.java
@@ -6,7 +6,7 @@ import org.springframework.util.Assert;
/**
* 数据源切换处理
*
- * @author liuwu
+ * @author Dongzl
*/
@Slf4j
public class DynamicDataSourceHolder {
diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/init/InitDataSource.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/init/InitDataSource.java
new file mode 100644
index 0000000..3dc4237
--- /dev/null
+++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/init/InitDataSource.java
@@ -0,0 +1,58 @@
+package com.muyu.cloud.common.many.datasource.init;
+
+
+import com.muyu.cloud.common.saas.domain.Datasource;
+import com.muyu.common.core.domain.Result;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Component;
+
+import java.sql.*;
+import java.util.ArrayList;
+import java.util.List;
+
+@Component
+@Log4j2
+public class InitDataSource {
+
+ public static final String USER="root";
+ public static final String PASSWORD="Lw030106";
+
+ @Bean
+ @Primary
+ public Result> initDatasource(){
+ ArrayList list = new ArrayList<>();
+
+ try {
+ DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
+ Connection connection= DriverManager.getConnection("jdbc:mysql://47.101.53.251:3306/datasource?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT&useSSL=false",USER,PASSWORD);
+ String sql="select * from `datasource` ";
+
+ Statement stmt = connection.createStatement();
+ ResultSet rs = stmt.executeQuery(sql);
+
+ while (rs.next()){
+ Datasource datasource = new Datasource();
+ datasource.setId(rs.getInt("id"));
+ datasource.setFirmName(rs.getString("firm_name"));
+ datasource.setDatabaseName(rs.getString("database_name"));
+ list.add(datasource);
+ }
+
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ return Result.success(list);
+ };
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/contents/SaaSConstant.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/contents/SaaSConstant.java
index 042fe95..241ce32 100644
--- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/contents/SaaSConstant.java
+++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/contents/SaaSConstant.java
@@ -1,8 +1,7 @@
package com.muyu.cloud.common.saas.contents;
/**
- * SAAS常量
- * @author liuwu
+ * @Author: DongZeLiang
* @date: 2024/6/3
* @Description: SAAS常量
* @Version: 1.0
diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/domain/model/EntInfo.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/domain/model/EntInfo.java
index db7e230..5c1985a 100644
--- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/domain/model/EntInfo.java
+++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/domain/model/EntInfo.java
@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
/**
- * @Author: liuwu
+ * @Author: DongZeLiang
* @date: 2024/6/3
* @Description: 企业信息
* @Version: 1.0
diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/exception/SaaSException.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/exception/SaaSException.java
index 60e5054..b2b4cc7 100644
--- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/exception/SaaSException.java
+++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/exception/SaaSException.java
@@ -4,8 +4,7 @@ package com.muyu.cloud.common.saas.exception;
import com.muyu.common.core.exception.ServiceException;
/**
- * SaaS异常类
- * @author liuwu
+ * @Author: DongZeLiang
* @date: 2024/6/3
* @Description: SaaS异常类
* @Version: 1.0
diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/SaaSInterceptor.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/SaaSInterceptor.java
index 997fe6b..d4d87b6 100644
--- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/SaaSInterceptor.java
+++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/saas/interceptor/SaaSInterceptor.java
@@ -1,10 +1,9 @@
package com.muyu.cloud.common.saas.interceptor;
-import com.alibaba.fastjson2.JSONObject;
-import com.muyu.cloud.common.saas.contents.SaaSConstant;
import com.muyu.cloud.common.many.datasource.holder.DynamicDataSourceHolder;
-import com.muyu.cloud.common.saas.exception.SaaSException;
import com.muyu.cloud.common.many.datasource.role.DynamicDataSource;
+import com.muyu.cloud.common.saas.contents.SaaSConstant;
+import com.muyu.cloud.common.saas.exception.SaaSException;
import com.muyu.common.core.utils.ServletUtils;
import com.muyu.common.core.utils.SpringUtils;
import jakarta.servlet.http.HttpServletRequest;
@@ -14,8 +13,7 @@ import org.springframework.web.servlet.AsyncHandlerInterceptor;
/**
- * SAAS拦截器
- * @author liuwu
+ * @Author: DongZeLiang
* @date: 2024/6/3
* @Description: SAAS拦截器
* @Version: 1.0
diff --git a/cloud-common/cloud-common-saas/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-saas/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..70148cf
--- /dev/null
+++ b/cloud-common/cloud-common-saas/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1,3 @@
+com.muyu.cloud.common.saas.interceptor.WebMvcSaaSConfig
+com.muyu.cloud.common.many.datasource.ManyDataSource
+com.muyu.cloud.common.many.datasource.factory.DruidDataSourceFactory
diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java
index b5bac67..89babbf 100644
--- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java
+++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/consumer/MqConsumer.java
@@ -55,7 +55,6 @@ public class MqConsumer {
/**
* -----------------------------------以下为异步业务操作----------------------------
*/
- List carList = sysCarCacheService.get("carList");
/**
diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/listener/AddDatabaseListener.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/listener/AddDatabaseListener.java
index bfbfd04..45f6bdd 100644
--- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/listener/AddDatabaseListener.java
+++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/listener/AddDatabaseListener.java
@@ -29,6 +29,7 @@ public class AddDatabaseListener implements EventListener {
values.add((String) value);
});
+
}
@Override
diff --git a/cloud-modules/saas/pom.xml b/cloud-modules/saas/pom.xml
index 7e02284..a9e66f5 100644
--- a/cloud-modules/saas/pom.xml
+++ b/cloud-modules/saas/pom.xml
@@ -52,6 +52,13 @@
kafka-clients
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.5.1
+
+
+
diff --git a/cloud-modules/saas/saas-server/pom.xml b/cloud-modules/saas/saas-server/pom.xml
index 4286b11..1546f6d 100644
--- a/cloud-modules/saas/saas-server/pom.xml
+++ b/cloud-modules/saas/saas-server/pom.xml
@@ -106,6 +106,7 @@
com.muyu
cloud-common-xxl
+
org.apache.iotdb
service-rpc
diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/CarTypeController.java b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/CarTypeController.java
index 6311e4c..6bdfd55 100644
--- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/CarTypeController.java
+++ b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/CarTypeController.java
@@ -21,8 +21,6 @@ import java.util.List;
* @Date 2024/9/29 12:06
*/
-
-
@RestController
@RequestMapping("/carType")
@AllArgsConstructor
diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/CarTypeServiceImpl.java b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/CarTypeServiceImpl.java
index 5e6cd80..163062a 100644
--- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/CarTypeServiceImpl.java
+++ b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/CarTypeServiceImpl.java
@@ -10,6 +10,7 @@ import com.muyu.server.service.CarTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import java.util.List;
/**
@@ -22,7 +23,7 @@ import java.util.List;
@Service
public class CarTypeServiceImpl extends ServiceImpl implements CarTypeService{
- @Autowired
+ @Resource
private CarTypeMapper carTypeMapper;
diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/CarTypeMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/CarTypeMapper.xml
new file mode 100644
index 0000000..63274cf
--- /dev/null
+++ b/cloud-modules/saas/saas-server/src/main/resources/mapper/CarTypeMapper.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/EnterpriseMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/EnterpriseMapper.xml
index cc25010..76e2c13 100644
--- a/cloud-modules/saas/saas-server/src/main/resources/mapper/EnterpriseMapper.xml
+++ b/cloud-modules/saas/saas-server/src/main/resources/mapper/EnterpriseMapper.xml
@@ -6,7 +6,7 @@
1.在mybats的开发中namespace有特殊的意思,一定要是对应接口的全限定名
通过namespace可以简历mapper.xml和接口之间的关系(名字不重要,位置不重要)
-->
-
+
-
+
insert into tb_enterprise
set enterprise_name = #{enterpriseName},
enterprise_car_count = #{enterpriseCarCount},
- enterprise_fence_count = #{enterpriseFenceCount},
- enterprise_database_name=#{enterpriseDatabaseName}
+ enterprise_fence_count = #{enterpriseFenceCount}
@@ -48,8 +47,7 @@
update tb_enterprise
set enterprise_name = #{enterpriseName},
enterprise_car_count = #{enterpriseCarCount},
- enterprise_fence_count = #{enterpriseFenceCount},
- enterprise_database_name=#{enterpriseDatabaseName}
+ enterprise_fence_count = #{enterpriseFenceCount}
where enterprise_id = #{enterpriseId} and enterprise_id != 0
diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/SysCarMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/SysCarMapper.xml
index 77a3724..792d531 100644
--- a/cloud-modules/saas/saas-server/src/main/resources/mapper/SysCarMapper.xml
+++ b/cloud-modules/saas/saas-server/src/main/resources/mapper/SysCarMapper.xml
@@ -77,5 +77,7 @@
-
+
diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/TemplateNeedMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/TemplateNeedMapper.xml
new file mode 100644
index 0000000..5ea4090
--- /dev/null
+++ b/cloud-modules/saas/saas-server/src/main/resources/mapper/TemplateNeedMapper.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/breakdown/SysCarFaultMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/breakdown/SysCarFaultMapper.xml
new file mode 100644
index 0000000..44abe85
--- /dev/null
+++ b/cloud-modules/saas/saas-server/src/main/resources/mapper/breakdown/SysCarFaultMapper.xml
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, fault_code, fault_name, type_id, fault_label, fault_bit, fault_value, fault_rank, fault_desc, fault_min_threshold, fault_max_threshold, status, warn_status, remark, create_by, create_time, update_by, update_time,car_type_id from sys_car_fault
+
+
+
+
+
+
+
+
+ insert into sys_car_fault
+
+ fault_code,
+ fault_name,
+ type_id,
+ fault_label,
+ fault_bit,
+ fault_value,
+ fault_rank,
+ fault_desc,
+ fault_min_threshold,
+ fault_max_threshold,
+ status,
+ warn_status,
+ remark,
+ create_by,
+ create_time,
+ update_by,
+ update_time,
+ car_type_id
+
+
+ #{faultCode},
+ #{faultName},
+ #{typeId},
+ #{faultLabel},
+ #{faultBit},
+ #{faultValue},
+ #{faultRank},
+ #{faultDesc},
+ #{faultMinThreshold},
+ #{faultMaxThreshold},
+ #{status},
+ #{warnStatus},
+ #{remark},
+ #{createBy},
+ #{createTime},
+ #{updateBy},
+ #{updateTime},
+ #{catTypeId}
+
+
+
+
+ update sys_car_fault
+
+ fault_code = #{faultCode},
+ fault_name = #{faultName},
+ type_id = #{typeId},
+ fault_label = #{faultLabel},
+ fault_bit = #{faultBit},
+ fault_value = #{faultValue},
+ fault_rank = #{faultRank},
+ fault_desc = #{faultDesc},
+ fault_min_threshold = #{faultMinThreshold},
+ fault_max_threshold = #{faultMaxThreshold},
+ status = #{status},
+ warn_status = #{warnStatus},
+ remark = #{remark},
+ create_by = #{createBy},
+ create_time = #{createTime},
+ update_by = #{updateBy},
+ update_time = #{updateTime},
+ car_type_id=#{catTypeId}
+
+ where id = #{id}
+
+
+
+ delete from sys_car_fault where id = #{id}
+
+
+
+ delete from sys_car_fault where id in
+
+ #{id}
+
+
+
+
+ update sys_car_fault set warn_status = 0 where id = #{id}
+
+
+ update sys_car_fault set warn_status = 1 where id = #{id}
+
+
diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/message/DataTypeMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/message/DataTypeMapper.xml
new file mode 100644
index 0000000..52d673c
--- /dev/null
+++ b/cloud-modules/saas/saas-server/src/main/resources/mapper/message/DataTypeMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/message/MessageTemplateTypeMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/message/MessageTemplateTypeMapper.xml
new file mode 100644
index 0000000..9385d6c
--- /dev/null
+++ b/cloud-modules/saas/saas-server/src/main/resources/mapper/message/MessageTemplateTypeMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/message/TemplateMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/message/TemplateMapper.xml
new file mode 100644
index 0000000..ec3778a
--- /dev/null
+++ b/cloud-modules/saas/saas-server/src/main/resources/mapper/message/TemplateMapper.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
From 0ebf046e253b9d6eed92964034265893f9f0c8e3 Mon Sep 17 00:00:00 2001
From: Liu Wu <2780205363@qq.com>
Date: Tue, 8 Oct 2024 10:05:09 +0800
Subject: [PATCH 12/17] =?UTF-8?q?fix():=20=E4=BB=A3=E7=A0=81=E5=90=88?=
=?UTF-8?q?=E5=B9=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...ot.autoconfigure.AutoConfiguration.imports | 1 +
.../event/listener/AddDatabaseListener.java | 2 +
cloud-modules/saas/pom.xml | 10 +--
.../java/com/muyu/server/SaasApplication.java | 12 +++-
.../service/impl/CarTypeServiceImpl.java | 2 +-
.../src/main/resources/bootstrap.yml | 70 -------------------
.../main/resources/mapper/CarTypeMapper.xml | 9 ---
.../resources/mapper/EnterpriseMapper.xml | 4 +-
8 files changed, 22 insertions(+), 88 deletions(-)
delete mode 100644 cloud-modules/saas/saas-server/src/main/resources/mapper/CarTypeMapper.xml
diff --git a/cloud-common/cloud-common-saas/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-saas/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 70148cf..4076e9f 100644
--- a/cloud-common/cloud-common-saas/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/cloud-common/cloud-common-saas/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1,3 +1,4 @@
com.muyu.cloud.common.saas.interceptor.WebMvcSaaSConfig
com.muyu.cloud.common.many.datasource.ManyDataSource
com.muyu.cloud.common.many.datasource.factory.DruidDataSourceFactory
+com.muyu.cloud.common.many.datasource.init.InitDataSource
diff --git a/cloud-modules/cloud-event/src/main/java/com/muyu/event/listener/AddDatabaseListener.java b/cloud-modules/cloud-event/src/main/java/com/muyu/event/listener/AddDatabaseListener.java
index 45f6bdd..95e33bd 100644
--- a/cloud-modules/cloud-event/src/main/java/com/muyu/event/listener/AddDatabaseListener.java
+++ b/cloud-modules/cloud-event/src/main/java/com/muyu/event/listener/AddDatabaseListener.java
@@ -30,6 +30,8 @@ public class AddDatabaseListener implements EventListener {
});
+
+
}
@Override
diff --git a/cloud-modules/saas/pom.xml b/cloud-modules/saas/pom.xml
index a9e66f5..ec2653a 100644
--- a/cloud-modules/saas/pom.xml
+++ b/cloud-modules/saas/pom.xml
@@ -52,11 +52,11 @@
kafka-clients
-
- com.baomidou
- mybatis-plus-boot-starter
- 3.5.1
-
+
+
+
+
+
diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/SaasApplication.java b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/SaasApplication.java
index 7186808..4232b74 100644
--- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/SaasApplication.java
+++ b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/SaasApplication.java
@@ -1,9 +1,14 @@
package com.muyu.server;
+import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure;
+import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration;
+import com.muyu.common.security.annotation.EnableCustomConfig;
import com.muyu.common.security.annotation.EnableMyFeignClients;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+
/**
* saas模块启动类
* @author YuPing
@@ -11,7 +16,12 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
* @Version 1.0
* @Data 2024-09-28 17:34:31
*/
-@SpringBootApplication
+@SpringBootApplication(exclude = {
+ DataSourceAutoConfiguration.class,
+ DruidDataSourceAutoConfigure.class,
+ DynamicDataSourceAutoConfiguration.class
+})
+@EnableCustomConfig
@EnableMyFeignClients
public class SaasApplication {
public static void main(String[] args) {
diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/CarTypeServiceImpl.java b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/CarTypeServiceImpl.java
index 163062a..e1a584c 100644
--- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/CarTypeServiceImpl.java
+++ b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/CarTypeServiceImpl.java
@@ -23,7 +23,7 @@ import java.util.List;
@Service
public class CarTypeServiceImpl extends ServiceImpl implements CarTypeService{
- @Resource
+ @Autowired
private CarTypeMapper carTypeMapper;
diff --git a/cloud-modules/saas/saas-server/src/main/resources/bootstrap.yml b/cloud-modules/saas/saas-server/src/main/resources/bootstrap.yml
index 7ce8b80..02b5edc 100644
--- a/cloud-modules/saas/saas-server/src/main/resources/bootstrap.yml
+++ b/cloud-modules/saas/saas-server/src/main/resources/bootstrap.yml
@@ -11,76 +11,6 @@ nacos:
# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all
# Spring
spring:
- kafka:
- producer:
- # Kafka服务器
- bootstrap-servers: 150.158.33.234:9092
- # 开启事务,必须在开启了事务的方法中发送,否则报错
- transaction-id-prefix: kafkaTx-
- # 发生错误后,消息重发的次数,开启事务必须设置大于0。
- retries: 3
- # acks=0 : 生产者在成功写入消息之前不会等待任何来自服务器的响应。
- # acks=1 : 只要集群的首领节点收到消息,生产者就会收到一个来自服务器成功响应。
- # acks=all :只有当所有参与复制的节点全部收到消息时,生产者才会收到一个来自服务器的成功响应。
- acks: all
- # 开启事务时,必须设置为all
- # 当有多个消息需要被发送到同一个分区时,生产者会把它们放在同一个批次里。该参数指定了一个批次可以使用的内存大小,按照字节数计算。
- batch-size: 16384
- # 生产者内存缓冲区的大小。
- buffer-memory: 1024000
- # 键的序列化方式
- key-serializer: org.apache.kafka.common.serialization.StringSerializer
- # 值的序列化方式(建议使用Json,这种序列化方式可以无需额外配置传输实体类)
- value-serializer: org.apache.kafka.common.serialization.StringSerializer
- consumer:
- # Kafka服务器
- group-id: my-kafka
- # 自动提交的时间间隔 在spring boot 2.X 版本中这里采用的是值的类型为Duration 需要符合特定的格式,如1S,1M,2H,5D
- #auto-commit-interval: 2s
- # 该属性指定了消费者在读取一个没有偏移量的分区或者偏移量无效的情况下该作何处理:
- # earliest:当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费分区的记录
- # latest:当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据(在消费者启动之后生成的记录)
- # none:当各分区都存在已提交的offset时,从提交的offset开始消费;只要有一个分区不存在已提交的offset,则抛出异常
- auto-offset-reset: latest
- # 是否自动提交偏移量,默认值是true,为了避免出现重复数据和数据丢失,可以把它设置为false,然后手动提交偏移量
- enable-auto-commit: true
- # 键的反序列化方式
- #key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
- key-deserializer: org.apache.kafka.common.serialization.StringSerializer
- # 值的反序列化方式(建议使用Json,这种序列化方式可以无需额外配置传输实体类)
- value-deserializer: org.apache.kafka.common.serialization.StringSerializer
- # 这个参数定义了poll方法最多可以拉取多少条消息,默认值为500。如果在拉取消息的时候新消息不足500条,那有多少返回多少;如果超过500条,每次只返回500。
- # 这个默认值在有些场景下太大,有些场景很难保证能够在5min内处理完500条消息,
- # 如果消费者无法在5分钟内处理完500条消息的话就会触发reBalance,
- # 然后这批消息会被分配到另一个消费者中,还是会处理不完,这样这批消息就永远也处理不完。
- # 要避免出现上述问题,提前评估好处理一条消息最长需要多少时间,然后覆盖默认的max.poll.records参数
- # 注:需要开启BatchListener批量监听才会生效,如果不开启BatchListener则不会出现reBalance情况
- max-poll-records: 500
- bootstrap-servers: 150.158.33.234:9092
- auto-commit-interval: 5000
- fetch-max-wait: 500
- fetch-min-size: 1
- heartbeat-interval: 3000
- properties:
- # 两次poll之间的最大间隔,默认值为5分钟。如果超过这个间隔会触发reBalance
- max:
- poll:
- interval:
- ms: 600000
- # 当broker多久没有收到consumer的心跳请求后就触发reBalance,默认值是10s
- session:
- timeout:
- ms: 10000
- listener:
- # 在侦听器容器中运行的线程数,一般设置为 机器数*分区数
- concurrency: 4
- # 自动提交关闭,需要设置手动消息确认
- ack-mode: manual_immediate
- # 消费监听接口监听的主题不存在时,默认会报错,所以设置为false忽略错误
- missing-topics-fatal: false
- # 两次poll之间的最大间隔,默认值为5分钟。如果超过这个间隔会触发reBalance
- poll-timeout: 600000
-
mvc:
pathmatch:
matching-strategy: ant_path_matcher
diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/CarTypeMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/CarTypeMapper.xml
deleted file mode 100644
index 63274cf..0000000
--- a/cloud-modules/saas/saas-server/src/main/resources/mapper/CarTypeMapper.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
diff --git a/cloud-modules/saas/saas-server/src/main/resources/mapper/EnterpriseMapper.xml b/cloud-modules/saas/saas-server/src/main/resources/mapper/EnterpriseMapper.xml
index 76e2c13..aa32d53 100644
--- a/cloud-modules/saas/saas-server/src/main/resources/mapper/EnterpriseMapper.xml
+++ b/cloud-modules/saas/saas-server/src/main/resources/mapper/EnterpriseMapper.xml
@@ -6,7 +6,7 @@
1.在mybats的开发中namespace有特殊的意思,一定要是对应接口的全限定名
通过namespace可以简历mapper.xml和接口之间的关系(名字不重要,位置不重要)
-->
-
+
-
+
insert into tb_enterprise
set enterprise_name = #{enterpriseName},
enterprise_car_count = #{enterpriseCarCount},
From efa6861d2f15a4992e2088c20471a73c71dd033a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=A2=81=E5=AD=90=E9=BE=99?=
<14096380+qwe963852@user.noreply.gitee.com>
Date: Tue, 8 Oct 2024 11:31:17 +0800
Subject: [PATCH 13/17] =?UTF-8?q?test:()=E4=BF=AE=E6=94=B9=E4=BC=81?=
=?UTF-8?q?=E4=B8=9A=E6=B7=BB=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../muyu/common/system/remote/RemoteUserService.java | 9 +++++++++
.../remote/factory/RemoteUserFallbackFactory.java | 6 ++++++
.../com/muyu/system/controller/SysUserController.java | 7 +++++++
.../java/com/muyu/system/mapper/SysUserMapper.java | 3 +++
.../java/com/muyu/system/service/SysUserService.java | 1 +
.../muyu/system/service/impl/SysUserServiceImpl.java | 5 +++++
.../src/main/resources/mapper/system/SysUserMapper.xml | 8 ++++++++
.../muyu/server/controller/EnterpriseController.java | 10 ++++++++++
.../com/muyu/server/controller/TemplateController.java | 3 ++-
9 files changed, 51 insertions(+), 1 deletion(-)
diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteUserService.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteUserService.java
index 1154a72..d3cd939 100644
--- a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteUserService.java
+++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/RemoteUserService.java
@@ -8,6 +8,7 @@ import com.muyu.common.system.domain.SysUser;
import com.muyu.common.system.remote.factory.RemoteUserFallbackFactory;
import com.muyu.common.system.domain.LoginUser;
import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -52,4 +53,12 @@ public interface RemoteUserService {
*/
@PostMapping("/user/enterprise")
ResultsettlementEnterpriseInfo(@RequestBody Business enterprise, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+ /**
+ * 用户添加
+ * @param sysUser
+ * @return
+ */
+ @PostMapping("/user/addUser")
+ public Result addUser(@RequestBody SysUser sysUser,@RequestHeader(SecurityConstants.FROM_SOURCE)String source);
}
diff --git a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteUserFallbackFactory.java b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteUserFallbackFactory.java
index f725a4c..c9045dd 100644
--- a/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteUserFallbackFactory.java
+++ b/cloud-common/cloud-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteUserFallbackFactory.java
@@ -45,6 +45,12 @@ public class RemoteUserFallbackFactory implements FallbackFactory addUser(SysUser sysUser, String source) {
+ return Result.error("用户添加失败");
+ }
+
+
};
}
}
diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysUserController.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysUserController.java
index f8ef4d5..13bce5c 100644
--- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysUserController.java
+++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/controller/SysUserController.java
@@ -302,4 +302,11 @@ public class SysUserController extends BaseController {
public Result deptTree (SysDept dept) {
return success(deptService.selectDeptTreeList(dept));
}
+
+
+ @PostMapping("/addUser")
+ public Result addUser(@RequestBody SysUser sysUser){
+ Integer i = userService.addUser(sysUser);
+ return Result.success(i);
+ }
}
diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysUserMapper.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysUserMapper.java
index 3dc6b0b..4015eff 100644
--- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysUserMapper.java
+++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/mapper/SysUserMapper.java
@@ -158,5 +158,8 @@ public interface SysUserMapper extends BaseMapper {
List selectCompanyList();
+ Integer addUser(SysUser sysUser);
+
+
}
diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysUserService.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysUserService.java
index 7dc514c..6ac720a 100644
--- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysUserService.java
+++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/SysUserService.java
@@ -230,5 +230,6 @@ public interface SysUserService extends IService {
List selectCompanyList();
+ Integer addUser(SysUser sysUser);
}
diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java
index bc4162a..7c46437 100644
--- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java
+++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java
@@ -518,4 +518,9 @@ public class SysUserServiceImpl extends ServiceImpl impl
return userMapper.selectCompanyList();
}
+ @Override
+ public Integer addUser(SysUser sysUser) {
+ return userMapper.addUser(sysUser);
+ }
+
}
diff --git a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserMapper.xml b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserMapper.xml
index 6023ef5..95edafd 100644
--- a/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/cloud-modules/cloud-modules-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -24,6 +24,7 @@
+
@@ -204,6 +205,7 @@
status,
create_by,
remark,
+ database_name,
create_time
)values(
#{userId},
@@ -218,6 +220,7 @@
#{status},
#{createBy},
#{remark},
+ #{databaseName}
sysdate()
)
@@ -228,6 +231,11 @@
INSERT INTO `saas`.`tb_enterprise` (`enterprise_id`, `enterprise_name`, `enterprise_car_count`, `enterprise_fence_count`, `enterprise_database_name`)
VALUES (NULL, #{firmName}, 0, 0, #{databaseName});
+
+ INSERT INTO `four`.`sys_user`
+ (`dept_id`, `user_name`, `nick_name`, `user_type`, `email`, `phonenumber`, `sex`, `avatar`, `password`, `status`, `del_flag`, `login_ip`, `login_date`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`, `database_name`)
+ VALUES ( 105, #{userName}, '若依', '00', 'ry@qq.com', '15666666666', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '47.101.53.251', '2024-05-23 15:08:18', 'admin', #{createTime}, '', NULL, '测试员', #{databaseName});
+
update sys_user
diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/EnterpriseController.java b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/EnterpriseController.java
index fbe366d..8b315dc 100644
--- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/EnterpriseController.java
+++ b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/EnterpriseController.java
@@ -6,6 +6,7 @@ import com.muyu.common.core.constant.SecurityConstants;
import com.muyu.common.core.domain.Result;
import com.muyu.common.domain.Enterprise;
import com.muyu.common.system.domain.Business;
+import com.muyu.common.system.domain.SysUser;
import com.muyu.common.system.remote.RemoteUserService;
import com.muyu.common.util.PageUtils;
import com.muyu.server.controller.form.DeleteEnterpriseByIds;
@@ -27,6 +28,7 @@ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -95,8 +97,14 @@ public class EnterpriseController {
business.setDatabaseName(form.getEnterpriseDatabaseName());
remoteUserService.settlementEnterpriseInfo(business, SecurityConstants.INNER);
+ SysUser sysUser = new SysUser();
+ sysUser.setDatabaseName(form.getEnterpriseDatabaseName());
+ sysUser.setUserName(form.getEnterpriseName());
+ sysUser.setCreateTime(new Date());
+ remoteUserService.addUser(sysUser, SecurityConstants.INNER);
String createDatabaseUrl="jdbc:mysql://"+ DatasourceContent.IP+":"+DatasourceContent.PORT+"?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8";
String createDatabaseSql = "CREATE DATABASE IF NOT EXISTS " + form.getEnterpriseDatabaseName() + ";";
+
try (Connection adminConn = DriverManager.getConnection(createDatabaseUrl, DatasourceContent.USER_NAME, DatasourceContent.PASSWORD);
Statement stmt = adminConn.createStatement()) {
@@ -122,6 +130,8 @@ public class EnterpriseController {
ClassPathResource rc = new ClassPathResource("static/saas.sql");
EncodedResource er = new EncodedResource(rc, "utf-8");
ScriptUtils.executeSqlScript(connection, er);
+
+
}
} catch (SQLException e) {
diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/TemplateController.java b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/TemplateController.java
index 4b4d6c9..30228b0 100644
--- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/TemplateController.java
+++ b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/TemplateController.java
@@ -17,7 +17,8 @@ import java.util.List;
import java.util.concurrent.ExecutionException;
/**
- * @Author:liuxinyue
+ * 报文模版管理
+ * @author liuxinyue
* @Package:com.template.controller
* @Project:cloud-server-c
* @name:TemplateController
From 59c16de298e61f87585309644f4352300819ff40 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=A2=81=E5=AD=90=E9=BE=99?=
<14096380+qwe963852@user.noreply.gitee.com>
Date: Tue, 8 Oct 2024 11:46:04 +0800
Subject: [PATCH 14/17] =?UTF-8?q?test:()=E4=BF=AE=E6=94=B9=E4=BC=81?=
=?UTF-8?q?=E4=B8=9A=E5=85=A5=E9=A9=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/muyu/auth/controller/TokenController.java | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/cloud-auth/src/main/java/com/muyu/auth/controller/TokenController.java b/cloud-auth/src/main/java/com/muyu/auth/controller/TokenController.java
index 0b2f6f5..e4e2615 100644
--- a/cloud-auth/src/main/java/com/muyu/auth/controller/TokenController.java
+++ b/cloud-auth/src/main/java/com/muyu/auth/controller/TokenController.java
@@ -7,6 +7,7 @@ import com.muyu.auth.form.RegisterBody;
import com.muyu.auth.service.SysFirmService;
import com.muyu.auth.service.SysLoginService;
import com.muyu.cloud.common.many.datasource.constents.DatasourceContent;
+import com.muyu.common.core.constant.SecurityConstants;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.JwtUtils;
import com.muyu.common.core.utils.StringUtils;
@@ -14,6 +15,8 @@ import com.muyu.common.security.auth.AuthUtil;
import com.muyu.common.security.service.TokenService;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.LoginUser;
+import com.muyu.common.system.domain.SysUser;
+import com.muyu.common.system.remote.RemoteUserService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.log4j.Log4j2;
@@ -32,6 +35,7 @@ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
+import java.util.Date;
/**
* token 控制
@@ -51,6 +55,9 @@ public class TokenController {
@Autowired
private SysFirmService sysFirmService;
+ @Autowired
+ private RemoteUserService remoteUserService;
+
@PostMapping("login")
@Operation(summary = "登录", description = "登录")
public Result> login (@RequestBody LoginBody form) {
@@ -120,6 +127,13 @@ public class TokenController {
} else {
log.warn("数据库 {} 创建成功", settlement.getDatabaseName());
+
+ SysUser sysUser = new SysUser();
+ sysUser.setCreateTime(new Date());
+ sysUser.setUserName(settlement.getFirmName());
+ sysUser.setDatabaseName(settlement.getDatabaseName());
+ remoteUserService.addUser(sysUser, SecurityConstants.INNER);
+
// 切换到新的数据库连接
Connection connection = null;
try {
From 4548e2c781be1a88f5c6a10f01dbe582e7be09d9 Mon Sep 17 00:00:00 2001
From: Number7 <1845377266@qq.com>
Date: Tue, 8 Oct 2024 11:55:04 +0800
Subject: [PATCH 15/17] =?UTF-8?q?fix():=E5=88=A0=E9=99=A4=E5=86=97?=
=?UTF-8?q?=E4=BD=99=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../muyu/template/config/MqttConfigure.java | 6 +-
.../src/main/java/com/muyu/template/test.java | 198 ++++--------------
.../main/java/com/muyu/template/test2.java | 85 --------
3 files changed, 41 insertions(+), 248 deletions(-)
delete mode 100644 cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test2.java
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java
index 48bb64c..9802526 100644
--- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java
+++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/config/MqttConfigure.java
@@ -30,9 +30,7 @@ import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-
/**
- *
* @author liuxinyue
* @Package:com.muyu.mqtt.configure
* @Project:cloud-server
@@ -60,7 +58,6 @@ public class MqttConfigure {
@PostConstruct
public void MQTTMonitoring(){
-
String topic = "car";
int qos = 2;
String broker = "tcp://47.101.53.251:1883";
@@ -115,7 +112,8 @@ public class MqttConfigure {
if (templateMessage.length() < 18) {
throw new RuntimeException("The vehicle message is incorrect");
}
- //将报文进行切割
+ //将 templateMessage 按空格切割成多个字符串,得到一个字符串数组 hexArray。接着,
+ // 将每个十六进制字符串转换成十进制整数,然后再转换为字符,最后将所有字符拼接成一个完整的字符串 result。
String[] hexArray = templateMessage.split(" ");
StringBuilder result = new StringBuilder();
for (String hex : hexArray) {
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java
index e7d8821..958969a 100644
--- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java
+++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java
@@ -1,11 +1,6 @@
package com.muyu.template;
-import cn.hutool.json.JSONObject;
-import com.alibaba.fastjson2.JSON;
-import com.muyu.common.domain.*;
-import com.muyu.common.redis.service.RedisService;
+import com.alibaba.fastjson.JSONObject;
import lombok.extern.log4j.Log4j2;
-import org.springframework.data.redis.core.RedisTemplate;
-import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
@@ -14,100 +9,46 @@ import java.util.concurrent.TimeUnit;
/**
* @author liuxinyue
* @Package:com.muyu.template
- * @name:test
- * @Date:2024/10/4 9:42
+ * @name:test2
+ * @Date:2024/10/6 10:34
*/
@Log4j2
public class test {
- private static int DURATION_SECONDS = 60;
+ private static int DURATION_SECONDS = 5;
private static List receivedStrings = new ArrayList<>();
- private static int elapsedSeconds = 0;
private static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
+ private static int elapsedSeconds = 0;
private static String file="elapsed";
- @Resource
- private RedisTemplate redisTemplate;
- @Resource
- private RedisService redisService;
-
- public void main(String[] args) {
- String message="7E 36 33 59 43 5a 44 59 36 33 33 36 43 38 48 34 43 41 31 37 32 37 36 36 38 35 39 37 37 38 39 31 32 31 2e 34 37 34 30 30 30 30 33 31 2e 32 33 30 30 30 31 30 31 38 2e 30 30 30 31 38 38 31 2e 37 39 30 30 30 30 35 36 31 30 30 30 33 31 30 30 30 36 38 39 39 30 30 30 30 30 50 31 30 39 30 39 2e 35 30 30 32 34 30 30 30 30 31 33 32 36 35 37 33 39 30 36 37 30 30 30 30 32 31 31 30 30 31 33 32 35 30 30 30 30 36 37 30 30 30 2e 32 32 30 30 30 30 37 35 30 30 30 30 31 33 31 30 30 30 30 35 37 30 30 30 30 33 30 30 30 34 30 30 30 37 39 30 30 30 30 32 30 30 30 30 30 31 37 30 30 30 30 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 55 7E";
- //车类型
- Long carTypeId=null;
- //查找车对应的类型
- List carList = redisService.getCacheList("car");
- for (SysCar sysCar : carList) {
- if(sysCar.getCarVin().equals("1HGCM82633A123456")){
- //获取到车的类型ID
- carTypeId = sysCar.getCarTypeId();
+ public static void main(String[] args) {
+ // 定义一个任务,每秒执行一次
+ Runnable task = new Runnable() {
+ @Override
+ public void run() {
+ JSONObject stringFromSource = getStringFromSource(); // 模拟获取字符串
+ receivedStrings.add(stringFromSource);
+ System.out.println("Received: " + stringFromSource);
+ // 清理超过的数据
+ cleanUpOldStrings();
+ // 检查超速条件
+ checkForSpeeding();
}
- }
-
- //查找车类型对应的策略
- List warnStrategyList = null;
- //该车绑定的报文模版
- Long templateId=null;
- //获取到车的类型之后 查找对应的策略
- List warnStrategy = redisService.getCacheList("warnStrategy");
- for (WarnStrategy strategy : warnStrategy) {
- if(strategy.getCarTypeId().equals(carTypeId)){
- templateId=strategy.getTemplateId();
- warnStrategyList.add(strategy);
- }
- }
-
- //报文模版 根据templateId取出对应的模版
- List templateTypeList1=null;
- List templateTypeList = redisService.getCacheList("templateTypeList");
- for (MessageTemplateType messageTemplateType : templateTypeList) {
- if(messageTemplateType.getTemplateId().equals(templateId)){
- templateTypeList1.add(messageTemplateType);
- }
- }
-
- //获取策略对应的规则列表
- List warnRule = redisService.getCacheList("warnRule");
- //车辆对应的规则
- List warnRuleList = null;
- for (WarnRule rule : warnRule) {
- for (WarnStrategy strategy : warnStrategyList) {
- if(rule.getStrategyId()==strategy.getId()){
- warnRuleList.add(rule);
- }
- }
- }
-
- String templateIds=null;
- for (WarnRule rule : warnRuleList) {
- //滑窗时间
- Long slideTime = rule.getSlideTime();
- if(slideTime!=null){
- DURATION_SECONDS= Math.toIntExact(slideTime);
- }
- templateIds+=","+rule.getMsgTypeId();
- }
-
- String[] templateIdSplit = templateIds.split(",");
- //最终获取到的报文模版 使用他进行比较
- List messageTemplateTypes=null;
- for (String s : templateIdSplit) {
- for (MessageTemplateType messageTemplateType : templateTypeList1) {
- if(s.equals(messageTemplateType.getTemplateId())){
- messageTemplateTypes.add(messageTemplateType);
- }
- }
- }
-
- JSONObject entries = messageParsing(message);
- //将解析后的数据添加到List receivedStrings中
- receivedStrings.add(entries);
- cleanUpOldStrings();
- checkForSpeeding();
+ };
+ // 每隔1秒执行一次任务
+ scheduler.scheduleAtFixedRate(task, 0, 1, TimeUnit.SECONDS);
}
+ // 模拟从某个源获取字符串的方法
+ private static JSONObject getStringFromSource() {
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("message", "Hello World");
+ jsonObject.put("time", System.currentTimeMillis());
+ jsonObject.put("elapsed", elapsedSeconds);
+ return jsonObject;
+ }
- // 清理超过指定秒数内的数据
+ // 清理超过60秒的数据
private static void cleanUpOldStrings() {
long currentTime = System.currentTimeMillis();
receivedStrings.removeIf(jsonObject ->
@@ -118,11 +59,19 @@ public class test {
// 检查是否有超速情况
private static void checkForSpeeding() {
if (receivedStrings.size() < 2) return; // 如果数据不足,直接返回
+
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("message", "Hello World");
+ jsonObject.put("time", System.currentTimeMillis());
+ jsonObject.put("elapsed", 100);
+
for (int i = 0; i < receivedStrings.size() - 1; i++) {
- JSONObject current = receivedStrings.get(i);
- JSONObject next = receivedStrings.get(i + 1);
+ JSONObject current = receivedStrings.get(i);
+ JSONObject next = receivedStrings.get(i + 1);
+
Short currentElapsed = current.getShort(file);
Short nextElapsed = next.getShort(file);
+ receivedStrings.add(jsonObject);
// 检查条件,如果相差大于12,则记录错误
if (nextElapsed > currentElapsed + 12) {
System.out.println("出错啦,出错啦,车子超速啦!!!");
@@ -131,73 +80,4 @@ public class test {
}
-
- //解析报文的方法
- public JSONObject messageParsing(String templateMessage) {
- //给一个JSON对象
- JSONObject jsonObject = new JSONObject();
- //先截取出VIN码 然后根据VIN码查询这个车属于什么类型
- if (templateMessage.length() < 18) {
- throw new RuntimeException("The vehicle message is incorrect");
- }
- //将报文进行切割
- String[] hexArray = templateMessage.split(" ");
- StringBuilder result = new StringBuilder();
- for (String hex : hexArray) {
- int decimal = Integer.parseInt(hex, 16);
- result.append((char) decimal);
- }
- //取出VIN码
- String carVin = result.substring(0, 18 - 1);
- log.info("carVin码为:" + carVin);
- //根据VIN码获取车辆信息
- SysCar carByVin = null;
- List carList = redisService.getCacheList("carList");
- for (SysCar sysCar : carList) {
- if(sysCar.getCarVin().equals(carVin)){
- carByVin=sysCar;
- }
- }
- log.info("车辆信息为:" + carByVin);
- //对应车辆所对应的报文模版
- Integer templateId = carByVin.getTemplateId();
- List templateTypeList;
- //key
- String redisKey = "messageTemplateType" + templateId;
- //key存在
- if (redisTemplate.hasKey(redisKey)) {
-
- List list = redisTemplate.opsForList().range(redisKey, 0, -1);
-
- templateTypeList = list.stream().map(o -> JSON.parseObject(o.toString(), MessageTemplateType.class))
- .toList();
- } else {
- List templateTypeList1=null;
- List templateTypeList2 = redisService.getCacheList("templateTypeList");
- for (MessageTemplateType messageTemplateType : templateTypeList2) {
- if(messageTemplateType.getTemplateId()==templateId){
- templateTypeList1.add(messageTemplateType);
- }
- }
- templateTypeList = templateTypeList1;
- templateTypeList.forEach(
- templateType ->
- redisTemplate.opsForList().rightPush(
- redisKey, JSON.toJSONString(templateType)
- )
- );
- }
- //将模版里面有的配置进行循环
- for (MessageTemplateType messageTemplateType : templateTypeList) {
- //开始位置
- Integer startIndex = messageTemplateType.getStartIndex() - 1;
- //结束位置
- Integer endIndex = messageTemplateType.getEndIndex();
- //将每个解析后的字段都存入到JSON对象中
- jsonObject.put(messageTemplateType.getMessageField(),result.substring(startIndex, endIndex));
- }
- log.info("解析后的报文是:" + jsonObject);
-
- return jsonObject;
- }
}
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test2.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test2.java
deleted file mode 100644
index 32f1447..0000000
--- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test2.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.muyu.template;
-import com.alibaba.fastjson.JSONObject;
-import lombok.extern.log4j.Log4j2;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-/**
- * @author liuxinyue
- * @Package:com.muyu.template
- * @name:test2
- * @Date:2024/10/6 10:34
- */
-@Log4j2
-public class test2 {
-
- private static final int DURATION_SECONDS = 5;
- private static List receivedStrings = new ArrayList<>();
- private static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
- private static int elapsedSeconds = 0;
- private static String file="elapsed";
-
- public static void main(String[] args) {
- // 定义一个任务,每秒执行一次
- Runnable task = new Runnable() {
- @Override
- public void run() {
- JSONObject stringFromSource = getStringFromSource(); // 模拟获取字符串
- receivedStrings.add(stringFromSource);
- System.out.println("Received: " + stringFromSource);
- // 清理超过的数据
- cleanUpOldStrings();
- // 检查超速条件
- checkForSpeeding();
- }
- };
- // 每隔1秒执行一次任务
- scheduler.scheduleAtFixedRate(task, 0, 1, TimeUnit.SECONDS);
- }
-
-
- // 模拟从某个源获取字符串的方法
- private static JSONObject getStringFromSource() {
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("message", "Hello World");
- jsonObject.put("time", System.currentTimeMillis());
- jsonObject.put("elapsed", elapsedSeconds);
- return jsonObject;
- }
-
-
- // 清理超过60秒的数据
- private static void cleanUpOldStrings() {
- long currentTime = System.currentTimeMillis();
- receivedStrings.removeIf(jsonObject ->
- currentTime - jsonObject.getLong("time") > TimeUnit.SECONDS.toMillis(DURATION_SECONDS)
- );
- }
-
- // 检查是否有超速情况
- private static void checkForSpeeding() {
- if (receivedStrings.size() < 2) return; // 如果数据不足,直接返回
-
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("message", "Hello World");
- jsonObject.put("time", System.currentTimeMillis());
- jsonObject.put("elapsed", 100);
-
- for (int i = 0; i < receivedStrings.size() - 1; i++) {
- JSONObject current = receivedStrings.get(i);
- JSONObject next = receivedStrings.get(i + 1);
-
- Short currentElapsed = current.getShort(file);
- Short nextElapsed = next.getShort(file);
- receivedStrings.add(jsonObject);
- // 检查条件,如果相差大于12,则记录错误
- if (nextElapsed > currentElapsed + 12) {
- System.out.println("出错啦,出错啦,车子超速啦!!!");
- }
- }
- }
-
-
-}
From d5d17321ff5130aa53ee955139f86effc2ece981 Mon Sep 17 00:00:00 2001
From: Number7 <1845377266@qq.com>
Date: Tue, 8 Oct 2024 17:11:03 +0800
Subject: [PATCH 16/17] =?UTF-8?q?fix():=E4=BF=AE=E5=A4=8D=E5=8D=8F?=
=?UTF-8?q?=E8=AE=AE=E8=A7=A3=E6=9E=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../template/CloudTemplateApplication.java | 1 +
.../controller/TemplateController.java | 21 ----
.../src/main/java/com/muyu/template/test.java | 99 +++++++++++++++++--
.../common/domain/MessageTemplateType.java | 2 +-
4 files changed, 91 insertions(+), 32 deletions(-)
delete mode 100644 cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/TemplateController.java
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/CloudTemplateApplication.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/CloudTemplateApplication.java
index 359305f..2040f47 100644
--- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/CloudTemplateApplication.java
+++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/CloudTemplateApplication.java
@@ -13,6 +13,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableMyFeignClients
@SpringBootApplication
public class CloudTemplateApplication {
+
public static void main(String[] args) {
SpringApplication.run(CloudTemplateApplication.class, args);
}
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/TemplateController.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/TemplateController.java
deleted file mode 100644
index 1e55cda..0000000
--- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/controller/TemplateController.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.muyu.template.controller;
-
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.AllArgsConstructor;
-import lombok.extern.log4j.Log4j2;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * @author liuxinyue
- * @Package:com.muyu.template.controller
- * @name:TemplateController
- * @Date:2024/10/7 10:28
- */
-@RestController
-@RequestMapping("/template")
-@AllArgsConstructor
-@Tag(name = "协议解析管理",description = "协议解析管理")
-@Log4j2
-public class TemplateController {
-}
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java
index 958969a..dead53c 100644
--- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java
+++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java
@@ -1,11 +1,27 @@
package com.muyu.template;
-import com.alibaba.fastjson.JSONObject;
+import cn.hutool.json.JSONObject;
+import com.muyu.cache.MessageTemplateTypeCacheService;
+import com.muyu.cache.SysCarCacheService;
+import com.muyu.cache.WarnRuleCacheService;
+import com.muyu.cache.WarnStrategyCacheService;
+import com.muyu.common.domain.MessageTemplateType;
+import com.muyu.common.domain.SysCar;
+import com.muyu.common.domain.resp.SysCarVo;
+import com.muyu.common.domain.resp.WarnRuleResp;
+import com.muyu.common.domain.resp.WarnStrategyResp;
import lombok.extern.log4j.Log4j2;
+
+import javax.annotation.Resource;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
* @author liuxinyue
* @Package:com.muyu.template
@@ -14,14 +30,82 @@ import java.util.concurrent.TimeUnit;
*/
@Log4j2
public class test {
-
private static int DURATION_SECONDS = 5;
private static List receivedStrings = new ArrayList<>();
private static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
private static int elapsedSeconds = 0;
private static String file="elapsed";
-
- public static void main(String[] args) {
+ //预警策略
+ @Resource
+ private WarnStrategyCacheService warnStrategyCacheService;
+ //车辆
+ @Resource
+ private SysCarCacheService sysCarCacheService;
+ //预警规则
+ @Resource
+ private WarnRuleCacheService warnRuleCacheService;
+ //报文模版
+ @Resource
+ private MessageTemplateTypeCacheService messageTemplateTypeCacheService;
+ public void main(String[] args) {
+ //协议解析:每秒穿过来一个JSONObject jsonObject; 添加进receivedStrings
+ //根据这个车辆VIN查询出他对应的车辆类型
+ String carVin=null;
+ //报文模版的ID
+ Integer templateId=null;
+ for (JSONObject receivedString : receivedStrings) {
+ carVin = receivedString.getStr("carVin");
+ }
+ SysCar carByVin = null;
+ List carVoList = sysCarCacheService.get(sysCarCacheService.keyPre());
+ Map carMap = carVoList.stream()
+ .collect(Collectors.toMap(SysCarVo::getCarVin, Function.identity()));
+ //获取到了这个车辆的信息
+ carByVin = carMap.get(carVin);
+ //获取到这辆车绑定的报文模版
+ templateId=carByVin.getTemplateId();
+ //这个是这辆车对应的所有策略
+ List carWithWarnStrategyList=null;
+ List warnStrategyResps = warnStrategyCacheService.get(warnStrategyCacheService.keyPre());
+ for (WarnStrategyResp warnStrategyResp : warnStrategyResps) {
+ if(warnStrategyResp.getCarTypeId()==carByVin.getCarTypeId()){
+ carWithWarnStrategyList.add(warnStrategyResp);
+ }
+ }
+ //该车对应的所有预警规则
+ List warnRuleResp=null;
+ List warnRuleResps = warnRuleCacheService.get(warnRuleCacheService.keyPre());
+ for (WarnStrategyResp warnStrategyResp : carWithWarnStrategyList) {
+ for (WarnRuleResp ruleResp : warnRuleResps) {
+ if(warnStrategyResp.getId().equals(ruleResp.getStrategyId())){
+ warnRuleResp.add(ruleResp);
+ }
+ }
+ }
+ //报文模版
+ List messageTemplateTypes = messageTemplateTypeCacheService.get(messageTemplateTypeCacheService.keyPre());
+ Long msgTypeId=null;
+ //滑窗时间
+ Long slideTime=null;
+ //增长率
+ Long slideFrequency=null;
+ for (WarnRuleResp ruleResp : warnRuleResp) {
+ //每一个规则他绑定了报文模版里面对应的一个配置 比如:电池,或者车速
+ msgTypeId = ruleResp.getMsgTypeId();
+ slideTime = ruleResp.getSlideTime();
+ slideFrequency = ruleResp.getSlideFrequency();
+ }
+ for (JSONObject receivedString : receivedStrings) {
+ for (MessageTemplateType messageTemplateType : messageTemplateTypes) {
+ if(messageTemplateType.getMessageTemplateTypeId().equals(msgTypeId)){
+ //例如: 车速 {"车速":127}
+ Long str = Long.valueOf(receivedString.getStr(messageTemplateType.getMessageField()));
+ if(str+slideFrequency>slideFrequency){
+ log.info("出错啦,出错啦,您的"+messageTemplateType.getMessageField()+"不正常,请检查!!!");
+ }
+ }
+ }
+ }
// 定义一个任务,每秒执行一次
Runnable task = new Runnable() {
@Override
@@ -39,6 +123,7 @@ public class test {
scheduler.scheduleAtFixedRate(task, 0, 1, TimeUnit.SECONDS);
}
+
// 模拟从某个源获取字符串的方法
private static JSONObject getStringFromSource() {
JSONObject jsonObject = new JSONObject();
@@ -47,7 +132,6 @@ public class test {
jsonObject.put("elapsed", elapsedSeconds);
return jsonObject;
}
-
// 清理超过60秒的数据
private static void cleanUpOldStrings() {
long currentTime = System.currentTimeMillis();
@@ -55,16 +139,13 @@ public class test {
currentTime - jsonObject.getLong("time") > TimeUnit.SECONDS.toMillis(DURATION_SECONDS)
);
}
-
// 检查是否有超速情况
private static void checkForSpeeding() {
if (receivedStrings.size() < 2) return; // 如果数据不足,直接返回
-
JSONObject jsonObject = new JSONObject();
jsonObject.put("message", "Hello World");
jsonObject.put("time", System.currentTimeMillis());
jsonObject.put("elapsed", 100);
-
for (int i = 0; i < receivedStrings.size() - 1; i++) {
JSONObject current = receivedStrings.get(i);
JSONObject next = receivedStrings.get(i + 1);
@@ -78,6 +159,4 @@ public class test {
}
}
}
-
-
}
diff --git a/cloud-modules/saas/saas-common/src/main/java/com/muyu/common/domain/MessageTemplateType.java b/cloud-modules/saas/saas-common/src/main/java/com/muyu/common/domain/MessageTemplateType.java
index 3c2cd95..87cbb7f 100644
--- a/cloud-modules/saas/saas-common/src/main/java/com/muyu/common/domain/MessageTemplateType.java
+++ b/cloud-modules/saas/saas-common/src/main/java/com/muyu/common/domain/MessageTemplateType.java
@@ -30,7 +30,7 @@ public class MessageTemplateType implements Serializable {
* 主键
*/
@TableId(value = "message_template_type_id",type = IdType.AUTO)
- private String messageTemplateTypeId;
+ private Long messageTemplateTypeId;
/**
* 报文类别
*/
From 79f9309c0f4e6b2c2ee7bf5472a8cc3816910338 Mon Sep 17 00:00:00 2001
From: Number7 <1845377266@qq.com>
Date: Tue, 8 Oct 2024 20:02:00 +0800
Subject: [PATCH 17/17] =?UTF-8?q?fix():=E5=AE=8C=E5=96=84=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE=E9=A2=84=E8=AD=A6=E6=96=B9=E6=B3=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../template/CloudTemplateApplication.java | 1 -
.../src/main/java/com/muyu/template/test.java | 64 ++++++-------------
2 files changed, 19 insertions(+), 46 deletions(-)
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/CloudTemplateApplication.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/CloudTemplateApplication.java
index 2040f47..359305f 100644
--- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/CloudTemplateApplication.java
+++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/CloudTemplateApplication.java
@@ -13,7 +13,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableMyFeignClients
@SpringBootApplication
public class CloudTemplateApplication {
-
public static void main(String[] args) {
SpringApplication.run(CloudTemplateApplication.class, args);
}
diff --git a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java
index dead53c..ad62d51 100644
--- a/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java
+++ b/cloud-modules/cloud-modules-template/src/main/java/com/muyu/template/test.java
@@ -10,10 +10,8 @@ import com.muyu.common.domain.resp.SysCarVo;
import com.muyu.common.domain.resp.WarnRuleResp;
import com.muyu.common.domain.resp.WarnStrategyResp;
import lombok.extern.log4j.Log4j2;
-
import javax.annotation.Resource;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Executors;
@@ -21,7 +19,6 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
-import java.util.stream.Stream;
/**
* @author liuxinyue
* @Package:com.muyu.template
@@ -35,6 +32,12 @@ public class test {
private static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
private static int elapsedSeconds = 0;
private static String file="elapsed";
+ private static List messageTemplateTypes=null;
+ private static Long msgTypeId=null;
+ //滑窗时间
+ private static Long slideTime=null;
+ //增长率
+ private static Long slideFrequency=null;
//预警策略
@Resource
private WarnStrategyCacheService warnStrategyCacheService;
@@ -83,36 +86,18 @@ public class test {
}
}
//报文模版
- List messageTemplateTypes = messageTemplateTypeCacheService.get(messageTemplateTypeCacheService.keyPre());
- Long msgTypeId=null;
- //滑窗时间
- Long slideTime=null;
- //增长率
- Long slideFrequency=null;
+ messageTemplateTypes = messageTemplateTypeCacheService.get(messageTemplateTypeCacheService.keyPre());
for (WarnRuleResp ruleResp : warnRuleResp) {
//每一个规则他绑定了报文模版里面对应的一个配置 比如:电池,或者车速
msgTypeId = ruleResp.getMsgTypeId();
- slideTime = ruleResp.getSlideTime();
+ //将规则中对应的滑窗时间赋值为DURATION_SECONDS
+ DURATION_SECONDS = Math.toIntExact(ruleResp.getSlideTime());
slideFrequency = ruleResp.getSlideFrequency();
}
- for (JSONObject receivedString : receivedStrings) {
- for (MessageTemplateType messageTemplateType : messageTemplateTypes) {
- if(messageTemplateType.getMessageTemplateTypeId().equals(msgTypeId)){
- //例如: 车速 {"车速":127}
- Long str = Long.valueOf(receivedString.getStr(messageTemplateType.getMessageField()));
- if(str+slideFrequency>slideFrequency){
- log.info("出错啦,出错啦,您的"+messageTemplateType.getMessageField()+"不正常,请检查!!!");
- }
- }
- }
- }
// 定义一个任务,每秒执行一次
Runnable task = new Runnable() {
@Override
public void run() {
- JSONObject stringFromSource = getStringFromSource(); // 模拟获取字符串
- receivedStrings.add(stringFromSource);
- System.out.println("Received: " + stringFromSource);
// 清理超过的数据
cleanUpOldStrings();
// 检查超速条件
@@ -123,15 +108,6 @@ public class test {
scheduler.scheduleAtFixedRate(task, 0, 1, TimeUnit.SECONDS);
}
-
- // 模拟从某个源获取字符串的方法
- private static JSONObject getStringFromSource() {
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("message", "Hello World");
- jsonObject.put("time", System.currentTimeMillis());
- jsonObject.put("elapsed", elapsedSeconds);
- return jsonObject;
- }
// 清理超过60秒的数据
private static void cleanUpOldStrings() {
long currentTime = System.currentTimeMillis();
@@ -139,23 +115,21 @@ public class test {
currentTime - jsonObject.getLong("time") > TimeUnit.SECONDS.toMillis(DURATION_SECONDS)
);
}
+
// 检查是否有超速情况
private static void checkForSpeeding() {
if (receivedStrings.size() < 2) return; // 如果数据不足,直接返回
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("message", "Hello World");
- jsonObject.put("time", System.currentTimeMillis());
- jsonObject.put("elapsed", 100);
- for (int i = 0; i < receivedStrings.size() - 1; i++) {
+ for (int i = 0; i < receivedStrings.size(); i++) {
JSONObject current = receivedStrings.get(i);
JSONObject next = receivedStrings.get(i + 1);
-
- Short currentElapsed = current.getShort(file);
- Short nextElapsed = next.getShort(file);
- receivedStrings.add(jsonObject);
- // 检查条件,如果相差大于12,则记录错误
- if (nextElapsed > currentElapsed + 12) {
- System.out.println("出错啦,出错啦,车子超速啦!!!");
+ for (MessageTemplateType messageTemplateType : messageTemplateTypes) {
+ if(messageTemplateType.getMessageTemplateTypeId().equals(msgTypeId)){
+ Short currentElapsed = current.getShort(messageTemplateType.getMessageField());
+ Short nextElapsed = next.getShort(messageTemplateType.getMessageField());
+ if (nextElapsed > currentElapsed + slideFrequency) {
+ log.info("出错啦,出错啦,您的"+messageTemplateType.getMessageField()+"不正常,请检查!!!");
+ }
+ }
}
}
}