From 9952d8b24dda25f1a90d7fafe6c10ddcbb1a64f6 Mon Sep 17 00:00:00 2001
From: Li HD <2930804527@qq.com>
Date: Mon, 30 Sep 2024 20:53:29 +0800
Subject: [PATCH] =?UTF-8?q?fix():=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../enterpise-client/pom.xml | 3 +-
.../enterpise-common/pom.xml | 3 +-
.../enterpise-remote/pom.xml | 3 +-
.../enterpise-service/pom.xml | 3 +-
.../cloud-modules-enterprise/pom.xml | 2 +-
.../pom.xml | 4 +-
.../muyu/CloudVehicleGatewayApplication.java | 0
.../muyu/vehicle/gateway/ClearInstance.java | 108 ++++++++++
.../muyu/vehicle/gateway/CreateInstance.java | 108 ++++++++++
.../vehicle/gateway/MqttPublishSample.java | 56 +++++
.../aliyun/controller/InstanceController.java | 44 ++++
.../gateway/aliyun/domain/Instance.java | 27 +++
.../gateway/aliyun/mapper/InstanceMapper.java | 16 ++
.../aliyun/service/InstanceService.java | 25 +++
.../service/impl/InstanceServiceImpl.java | 199 ++++++++++++++++++
.../gateway}/vehicle/VehicleInstance.java | 10 +-
.../gateway}/vehicle/model/VehicleData.java | 6 +-
.../vehicle/thread/VehicleThread.java | 4 +-
.../gateway}/web/domain/VehicleInfo.java | 8 +-
.../web/domain/model/PositionModel.java | 2 +-
.../web/mapper/VehicleInfoMapper.java | 4 +-
.../service/impl/VechileInfoServiceImpl.java | 6 +-
.../gateway}/web/util/VehicleUtils.java | 4 +-
.../src/main/resources/banner.txt | 0
.../src/main/resources/bootstrap.yml | 0
.../src/main/resources/logback/dev.xml | 0
.../src/main/resources/logback/prod.xml | 0
.../src/main/resources/logback/test.xml | 0
.../muyu/vehicleGateway/ClearInstance.java | 108 ----------
.../muyu/vehicleGateway/CreateInstance.java | 101 ---------
.../vehicleGateway/MqttPublishSample.java | 56 -----
cloud-modules/pom.xml | 1 +
32 files changed, 613 insertions(+), 298 deletions(-)
rename cloud-modules/{cloud-modules-vehicleGateway => cloud-modules-vehicle-gateway}/pom.xml (97%)
rename cloud-modules/{cloud-modules-vehicleGateway => cloud-modules-vehicle-gateway}/src/main/java/com/muyu/CloudVehicleGatewayApplication.java (100%)
create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/ClearInstance.java
create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/CreateInstance.java
create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/MqttPublishSample.java
create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/controller/InstanceController.java
create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/domain/Instance.java
create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/mapper/InstanceMapper.java
create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/service/InstanceService.java
create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/service/impl/InstanceServiceImpl.java
rename cloud-modules/{cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway => cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway}/vehicle/VehicleInstance.java (79%)
rename cloud-modules/{cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway => cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway}/vehicle/model/VehicleData.java (98%)
rename cloud-modules/{cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway => cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway}/vehicle/thread/VehicleThread.java (86%)
rename cloud-modules/{cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway => cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway}/web/domain/VehicleInfo.java (92%)
rename cloud-modules/{cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway => cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway}/web/domain/model/PositionModel.java (93%)
rename cloud-modules/{cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway => cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway}/web/mapper/VehicleInfoMapper.java (73%)
rename cloud-modules/{cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway => cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway}/web/service/impl/VechileInfoServiceImpl.java (74%)
rename cloud-modules/{cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway => cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway}/web/util/VehicleUtils.java (96%)
rename cloud-modules/{cloud-modules-vehicleGateway => cloud-modules-vehicle-gateway}/src/main/resources/banner.txt (100%)
rename cloud-modules/{cloud-modules-vehicleGateway => cloud-modules-vehicle-gateway}/src/main/resources/bootstrap.yml (100%)
rename cloud-modules/{cloud-modules-vehicleGateway => cloud-modules-vehicle-gateway}/src/main/resources/logback/dev.xml (100%)
rename cloud-modules/{cloud-modules-vehicleGateway => cloud-modules-vehicle-gateway}/src/main/resources/logback/prod.xml (100%)
rename cloud-modules/{cloud-modules-vehicleGateway => cloud-modules-vehicle-gateway}/src/main/resources/logback/test.xml (100%)
delete mode 100644 cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/ClearInstance.java
delete mode 100644 cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/CreateInstance.java
delete mode 100644 cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/MqttPublishSample.java
diff --git a/cloud-modules/cloud-modules-enterprise/enterpise-client/pom.xml b/cloud-modules/cloud-modules-enterprise/enterpise-client/pom.xml
index edb81d9..88ebf6b 100644
--- a/cloud-modules/cloud-modules-enterprise/enterpise-client/pom.xml
+++ b/cloud-modules/cloud-modules-enterprise/enterpise-client/pom.xml
@@ -5,9 +5,8 @@
4.0.0
com.muyu
- cloud-server
+ cloud-modules
3.6.3
- ../../../pom.xml
enterpise-client
diff --git a/cloud-modules/cloud-modules-enterprise/enterpise-common/pom.xml b/cloud-modules/cloud-modules-enterprise/enterpise-common/pom.xml
index c7087d1..6a4fbae 100644
--- a/cloud-modules/cloud-modules-enterprise/enterpise-common/pom.xml
+++ b/cloud-modules/cloud-modules-enterprise/enterpise-common/pom.xml
@@ -5,9 +5,8 @@
4.0.0
com.muyu
- cloud-server
+ cloud-modules
3.6.3
- ../../../pom.xml
enterpise-common
diff --git a/cloud-modules/cloud-modules-enterprise/enterpise-remote/pom.xml b/cloud-modules/cloud-modules-enterprise/enterpise-remote/pom.xml
index 959ac52..63c8105 100644
--- a/cloud-modules/cloud-modules-enterprise/enterpise-remote/pom.xml
+++ b/cloud-modules/cloud-modules-enterprise/enterpise-remote/pom.xml
@@ -5,9 +5,8 @@
4.0.0
com.muyu
- cloud-server
+ cloud-modules
3.6.3
- ../../../pom.xml
enterpise-remote
diff --git a/cloud-modules/cloud-modules-enterprise/enterpise-service/pom.xml b/cloud-modules/cloud-modules-enterprise/enterpise-service/pom.xml
index 330c114..9b369fd 100644
--- a/cloud-modules/cloud-modules-enterprise/enterpise-service/pom.xml
+++ b/cloud-modules/cloud-modules-enterprise/enterpise-service/pom.xml
@@ -5,9 +5,8 @@
4.0.0
com.muyu
- cloud-server
+ cloud-modules
3.6.3
- ../../../pom.xml
enterpise-service
diff --git a/cloud-modules/cloud-modules-enterprise/pom.xml b/cloud-modules/cloud-modules-enterprise/pom.xml
index 6d368cd..1159651 100644
--- a/cloud-modules/cloud-modules-enterprise/pom.xml
+++ b/cloud-modules/cloud-modules-enterprise/pom.xml
@@ -13,7 +13,7 @@
pom
- cloud-modules-enterprise
+ cloud-modules-enterprise闫🐕和🐂鹏
diff --git a/cloud-modules/cloud-modules-vehicleGateway/pom.xml b/cloud-modules/cloud-modules-vehicle-gateway/pom.xml
similarity index 97%
rename from cloud-modules/cloud-modules-vehicleGateway/pom.xml
rename to cloud-modules/cloud-modules-vehicle-gateway/pom.xml
index 23c665e..e42a0b6 100644
--- a/cloud-modules/cloud-modules-vehicleGateway/pom.xml
+++ b/cloud-modules/cloud-modules-vehicle-gateway/pom.xml
@@ -9,10 +9,10 @@
3.6.3
- cloud-modules-vehicleGateway
+ cloud-modules-vehicle-gateway
- cloud-modules-vehicleGateway车辆网关模块
+ cloud-modules-vehicle-gateway车辆网关模块
diff --git a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/CloudVehicleGatewayApplication.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/CloudVehicleGatewayApplication.java
similarity index 100%
rename from cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/CloudVehicleGatewayApplication.java
rename to cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/CloudVehicleGatewayApplication.java
diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/ClearInstance.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/ClearInstance.java
new file mode 100644
index 0000000..4a1437e
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/ClearInstance.java
@@ -0,0 +1,108 @@
+//package com.muyu.vehicle.gateway;
+//
+//import com.aliyun.ecs20140526.models.DescribeInstancesRequest;
+//import com.aliyun.ecs20140526.models.DescribeInstancesResponse;
+//import com.aliyun.ecs20140526.models.DescribeInstancesResponseBody;
+//import com.aliyun.tea.TeaException;
+//import com.aliyun.teautil.models.RuntimeOptions;
+//import lombok.extern.log4j.Log4j2;
+//import org.springframework.beans.factory.DisposableBean;
+//import org.springframework.stereotype.Component;
+//
+//import java.util.ArrayList;
+//
+///**
+// * 清除阿里云ECS实例
+// * @ClassName ClearInstance
+// * @author LiHD
+// * @Date 2024/9/28 22:29
+// */
+//@Component
+//@Log4j2
+//public class ClearInstance implements DisposableBean {
+//
+// /**
+// * description :
+// * 使用AK&SK初始化账号Client
+// * @return Client
+// *
+// * @throws Exception
+// */
+// public static com.aliyun.ecs20140526.Client createClient() throws Exception {
+// // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
+// // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。
+// com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
+// // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
+// .setAccessKeyId("LTAI5tM4LSerzWQ9wUPXgybq")
+// // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
+// .setAccessKeySecret("hkiPr0QwkKMZauhXucgg1SDriXUW0Q");
+// // Endpoint 请参考 https://api.aliyun.com/product/Ecs
+// config.endpoint = "ecs.cn-beijing.aliyuncs.com";
+// return new com.aliyun.ecs20140526.Client(config);
+// }
+//
+// public static void clearInstance() throws Exception {
+//
+// // 创建ECS客户端对象,用于后续调用ECS相关API
+// com.aliyun.ecs20140526.Client client = ClearInstance.createClient();
+//
+// DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest()
+// .setRegionId("cn-beijing");
+//
+// //创建运行时选择对象,用于配置运行时的选项参数
+// RuntimeOptions runtimeOptions = new RuntimeOptions();
+//
+// //获取实例列表
+// DescribeInstancesResponse describeInstancesResponse = client.describeInstancesWithOptions(describeInstancesRequest, runtimeOptions);
+//
+// //提取实例ID集合
+// ArrayList list = new ArrayList<>();
+// DescribeInstancesResponseBody body = describeInstancesResponse.getBody();
+//
+// for (DescribeInstancesResponseBody.DescribeInstancesResponseBodyInstancesInstance instance : body.getInstances().getInstance()) {
+// list.add(instance.getInstanceId());
+// }
+// log.info("Instance IDs: " + list);
+// // 创建删除实例请求对象,并设置请求参数
+// com.aliyun.ecs20140526.models.DeleteInstancesRequest deleteInstancesRequest = new com.aliyun.ecs20140526.models.DeleteInstancesRequest()
+// // 设置地域ID,指定删除实例的地域
+// .setRegionId("cn-beijing")
+// // 设置DryRun为true,用于验证请求是否可以成功,但不实际执行删除操作
+// .setDryRun(false)
+// // 设置Force为true,表示即使实例有正在运行的任务,也强制删除实例
+// .setForce(true)
+// // 设置TerminateSubscription为true,表示删除按订阅付费的实例时终止订阅
+// .setTerminateSubscription(true)
+// .setInstanceId(list);
+//
+// // 创建运行时选项对象,用于配置运行时的选项参数
+// com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
+// try {
+// // 复制代码运行请自行打印 API 的返回值
+// client.deleteInstancesWithOptions(deleteInstancesRequest, runtime);
+// } catch (TeaException error) {
+// // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
+// // 错误 message
+// System.out.println(error.getMessage());
+// // 诊断地址
+// System.out.println(error.getData().get("Recommend"));
+// com.aliyun.teautil.Common.assertAsString(error.message);
+// } catch (Exception _error) {
+// TeaException error = new TeaException(_error.getMessage(), _error);
+// // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
+// // 错误 message
+// System.out.println(error.getMessage());
+// // 诊断地址
+// System.out.println(error.getData().get("Recommend"));
+// com.aliyun.teautil.Common.assertAsString(error.message);
+// }
+// }
+//
+//
+// @Override
+// public void destroy() throws Exception {
+// log.info("开始执行删除实例方法");
+// clearInstance();
+// log.info("删除实例方法执行完毕");
+// }
+//}
diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/CreateInstance.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/CreateInstance.java
new file mode 100644
index 0000000..33ece66
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/CreateInstance.java
@@ -0,0 +1,108 @@
+//package com.muyu.vehicle.gateway;
+//
+//import com.aliyun.ecs20140526.models.RunInstancesResponse;
+//import com.aliyun.ecs20140526.models.RunInstancesResponseBody;
+//import com.aliyun.tea.TeaException;
+//import lombok.extern.log4j.Log4j2;
+//import org.springframework.boot.ApplicationArguments;
+//import org.springframework.boot.ApplicationRunner;
+//import org.springframework.stereotype.Component;
+//
+//import java.util.ArrayList;
+//
+///**
+// * 创建阿里云ECS实例
+// * @className Sample
+// * @author LiHD
+// * @date 2024/9/28 19:02
+// */
+//@Component
+//@Log4j2
+//public class CreateInstance implements ApplicationRunner{
+//
+// /**
+// * description :
+// * 使用AK&SK初始化账号Client
+// * @return Client
+// *
+// * @throws Exception
+// */
+// public static com.aliyun.ecs20140526.Client createClient() throws Exception {
+// // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
+// com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
+// // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
+// .setAccessKeyId("LTAI5tM4LSerzWQ9wUPXgybq")
+// // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
+// .setAccessKeySecret("hkiPr0QwkKMZauhXucgg1SDriXUW0Q");
+// // Endpoint 请参考 https://api.aliyun.com/product/Ecs
+// config.endpoint = "ecs.cn-beijing.aliyuncs.com";
+// return new com.aliyun.ecs20140526.Client(config);
+// }
+//
+// /**
+// * 本程序的入口点
+// * 主要功能是创建阿里云ECS实例
+// *
+// * @throws Exception 如果执行过程中发生错误则抛出异常
+// */
+// public static void sample() throws Exception {
+//
+// // 创建阿里云ECS客户端
+// com.aliyun.ecs20140526.Client client = CreateInstance.createClient();
+//
+// // 配置系统盘参数
+// com.aliyun.ecs20140526.models.RunInstancesRequest.RunInstancesRequestSystemDisk systemDisk = new com.aliyun.ecs20140526.models.RunInstancesRequest.RunInstancesRequestSystemDisk()
+// .setSize("40") // 设置系统盘大小为40GB
+// .setCategory("cloud_essd"); // 设置系统盘类型为cloud_essd
+//
+// // 创建创建实例请求对象并设置参数
+// com.aliyun.ecs20140526.models.RunInstancesRequest runInstancesRequest = new com.aliyun.ecs20140526.models.RunInstancesRequest()
+// .setRegionId("cn-beijing") // 设置地域ID
+// .setImageId("m-2ze801i45fclmf1qwes5") // 设置镜像ID
+// .setInstanceType("ecs.e-c1m1.large") // 设置实例类型
+// .setSecurityGroupId("sg-2ze63acc0bas9vjm5gtv") // 设置安全组ID
+// .setVSwitchId("vsw-2ze028qk4xpwk3i0ggket") // 设置虚拟交换机ID
+// .setInstanceName("server-mqtt") // 设置实例名称
+// .setInstanceChargeType("PostPaid") // 设置实例付费类型为后付费按量付费
+// .setSystemDisk(systemDisk) // 设置系统盘配置
+// .setHostName("root") // 设置主机名
+// .setPassword("Lhd.123456") // 设置实例密码
+// .setAmount(2) // 设置创建实例的数量
+// .setInternetChargeType("PayByTraffic") // 设置互联网计费类型为按流量计费
+// .setInternetMaxBandwidthOut(5); // 设置最大出带宽为5Mbps
+//
+// // 创建运行时选项对象
+// com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
+//
+// // 尝试执行创建实例请求
+// try {
+// // 复制代码运行请自行打印 API 的返回值
+// RunInstancesResponse runInstancesResponse = client.runInstancesWithOptions(runInstancesRequest, runtime);
+// RunInstancesResponseBody body = runInstancesResponse.getBody();
+// ArrayList list = new ArrayList<>(body.getInstanceIdSets().getInstanceIdSet());
+// log.info("实例ID:{}", list);
+// } catch (TeaException error) {
+// // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
+// // 错误 message
+// log.info(error.getMessage());
+// // 诊断地址
+// log.info(error.getData().get("Recommend"));
+// com.aliyun.teautil.Common.assertAsString(error.message);
+// } catch (Exception _error) {
+// TeaException error = new TeaException(_error.getMessage(), _error);
+// // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
+// // 错误 message
+// log.info(error.getMessage());
+// // 诊断地址
+// log.info(error.getData().get("Recommend"));
+// com.aliyun.teautil.Common.assertAsString(error.message);
+// }
+// }
+//
+// @Override
+// public void run(ApplicationArguments args) throws Exception {
+// log.info("开始执行创建实例方法");
+// sample();
+// log.info("创建实例方法执行完毕");
+// }
+//}
diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/MqttPublishSample.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/MqttPublishSample.java
new file mode 100644
index 0000000..e84bf4b
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/MqttPublishSample.java
@@ -0,0 +1,56 @@
+//package com.muyu.vehicle.gateway;
+//
+//import lombok.extern.log4j.Log4j2;
+//import lombok.extern.slf4j.Slf4j;
+//import org.eclipse.paho.client.mqttv3.*;
+//
+//@Log4j2
+//@Slf4j
+//public class MqttPublishSample {
+//
+// public static void main(String[] args) {
+//
+// // 定义一个用于MQTT消息发布的示例程序
+// String topic = "vehicleGateway";
+// String content = "Message from MqttPublishSample";
+// int qos = 2;
+// String broker = "tcp://123.57.152.124:1883";
+// String clientId = "JavaSample";
+//
+// try {
+// // 创建MQTT客户端并连接到指定的broker
+// MqttClient sampleClient = new MqttClient(broker, clientId);
+// MqttConnectOptions connOpts = new MqttConnectOptions();
+// connOpts.setCleanSession(true);
+// System.out.println("Connecting to broker: "+broker);
+// sampleClient.connect(connOpts);
+// sampleClient.subscribe(topic,0);
+// // 设置回调处理
+// sampleClient.setCallback(new MqttCallback() {
+// @Override
+// public void connectionLost(Throwable throwable) {
+// // 连接丢失的处理
+// }
+//
+// @Override
+// public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
+// // 消息到达的处理
+// System.out.println(new String(mqttMessage.getPayload()));
+// }
+//
+// @Override
+// public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
+// // 消息发送完成的处理
+// }
+// });
+// } catch(MqttException me) {
+// // 处理MQTT异常
+// System.out.println("reason "+me.getReasonCode());
+// System.out.println("msg "+me.getMessage());
+// System.out.println("loc "+me.getLocalizedMessage());
+// System.out.println("cause "+me.getCause());
+// System.out.println("excep "+me);
+// me.printStackTrace();
+// }
+// }
+//}
diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/controller/InstanceController.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/controller/InstanceController.java
new file mode 100644
index 0000000..4155a57
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/controller/InstanceController.java
@@ -0,0 +1,44 @@
+package com.muyu.vehicle.gateway.aliyun.controller;
+
+import com.muyu.common.core.web.controller.BaseController;
+import com.muyu.vehicle.gateway.aliyun.service.InstanceService;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+
+/**
+ * ECS实例 控制器
+ *
+ * @author LiHD
+ * @ClassName InstanceController
+ * @Date 2024/9/29 22:04
+ */
+@Log4j2
+@RestController
+@RequestMapping("/instance")
+public class InstanceController {
+
+ @Autowired
+ private InstanceService instanceService;
+
+ /**
+ * 创建实例
+ */
+ @PostConstruct
+ public void createInstance(){
+ instanceService.createInstance();
+ }
+
+ /**
+ * 清理实例
+ */
+ @PreDestroy
+ public void cleanInstance(){
+ instanceService.cleanInstance();
+ }
+
+}
diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/domain/Instance.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/domain/Instance.java
new file mode 100644
index 0000000..f4d5ff3
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/domain/Instance.java
@@ -0,0 +1,27 @@
+package com.muyu.vehicle.gateway.aliyun.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * ECS实例信息
+ *
+ * @author LiHD
+ * @ClassName Instance
+ * @Date 2024/9/29 22:04
+ */
+@Data
+@SuperBuilder
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("instance")
+public class Instance {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+}
diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/mapper/InstanceMapper.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/mapper/InstanceMapper.java
new file mode 100644
index 0000000..d472f5b
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/mapper/InstanceMapper.java
@@ -0,0 +1,16 @@
+package com.muyu.vehicle.gateway.aliyun.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.muyu.vehicle.gateway.aliyun.domain.Instance;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * ECS实例 数据层
+ *
+ * @author LiHD
+ * @ClassName InstanceMapper
+ * @Date 2024/9/29 20:19
+ */
+@Mapper
+public interface InstanceMapper {
+}
diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/service/InstanceService.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/service/InstanceService.java
new file mode 100644
index 0000000..0a009c3
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/service/InstanceService.java
@@ -0,0 +1,25 @@
+package com.muyu.vehicle.gateway.aliyun.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.muyu.vehicle.gateway.aliyun.domain.Instance;
+import org.apache.catalina.Service;
+
+/**
+ * ECS实例服务
+ *
+ * @author LiHD
+ * @ClassName InstanceService
+ * @Date 2024/9/29 20:22
+ */
+
+public interface InstanceService {
+ /**
+ * 创建ECS实例
+ */
+ void createInstance();
+
+ /**
+ * 清理ECS实例
+ */
+ void cleanInstance();
+}
diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/service/impl/InstanceServiceImpl.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/service/impl/InstanceServiceImpl.java
new file mode 100644
index 0000000..2b8b653
--- /dev/null
+++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/aliyun/service/impl/InstanceServiceImpl.java
@@ -0,0 +1,199 @@
+package com.muyu.vehicle.gateway.aliyun.service.impl;
+
+import com.aliyun.ecs20140526.Client;
+import com.aliyun.ecs20140526.models.*;
+import com.aliyun.tea.TeaException;
+import com.aliyun.teautil.models.RuntimeOptions;
+import com.muyu.vehicle.gateway.aliyun.mapper.InstanceMapper;
+import com.muyu.vehicle.gateway.aliyun.service.InstanceService;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+
+/**
+ * ECS实例服务 实现类
+ *
+ * @author LiHD
+ * @ClassName InstanceServiceImpl
+ * @Date 2024/9/29 20:23
+ */
+@Log4j2
+@Service
+public class InstanceServiceImpl implements InstanceService {
+
+ @Autowired
+ private InstanceMapper instanceMapper;
+
+ // 阿里云ECS相关参数
+ private final static String AccessKeyId = "LTAI5tM4LSerzWQ9wUPXgybq"; // 请替换成您的 AccessKeyId
+ private final static String AccessKeySecret = "hkiPr0QwkKMZauhXucgg1SDriXUW0Q"; // 请替换成您的 AccessKeySecret
+ private final static String Endpoint = "ecs.cn-beijing.aliyuncs.com"; // 请替换成您的访问域名
+ private final static String Size = "40"; // 请替换成您的实例系统盘大小,单位为GB
+ private final static String Category = "cloud_essd"; // 请替换成您的实例系统盘类型,可选值:cloud_efficiency、cloud_ssd、cloud_essd
+ private final static String RegionId = "cn-beijing"; // 请替换成您的实例所在地域ID
+ private final static String ImageId = "m-2ze801i45fclmf1qwes5"; // 请替换成您的实例镜像ID
+ private final static String InstanceType = "ecs.e-c1m1.large"; // 请替换成您的实例类型
+ private final static String SecurityGroupId = "sg-2ze63acc0bas9vjm5gtv"; // 请替换成您的安全组ID
+ private final static String VSwitchId = "vsw-2ze028qk4xpwk3i0ggket"; // 请替换成您的虚拟交换机ID
+ private final static String InstanceName = "server-mqtt"; // 请替换成您的实例名称
+ private final static String InstanceChargeType = "PostPaid"; // 请替换成您的实例付费类型,可选值:PrePaid、PostPaid
+ private final static String HostName = "root"; // 请替换成您的主机名
+ private final static String Password = "Lhd.123456"; // 请替换成您的实例密码
+ private final static Integer Amount = 1; // 请替换成您要创建的实例数量
+ private final static String InternetChargeType = "PayByTraffic"; // 请替换成您的实例网络计费类型,可选值:PayByBandwidth、PayByTraffic
+ private final static Integer InternetMaxBandwidthOut = 5; // 请替换成您的实例网络出带宽,单位为Mbps
+
+ /**
+ * description
+ * 用AK&SK初始化账号Client
+ * @returnClient
+ * @throws Exception
+ */
+ public com.aliyun.ecs20140526.Client createClient() throws Exception {
+ // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
+ com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
+ // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
+ .setAccessKeyId(AccessKeyId)
+ // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
+ .setAccessKeySecret(AccessKeySecret);
+ // Endpoint 请参考 https://api.aliyun.com/product/Ecs
+ config.endpoint = Endpoint;
+ return new com.aliyun.ecs20140526.Client(config);
+ }
+
+ /**
+ * 创建ECS实例
+ */
+ @Override
+ public void createInstance(){
+ log.info("创建ECS实例");
+ // 创建阿里云ECS客户端
+ Client client = null;
+ try {
+ client = this.createClient();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ // 配置系统盘参数
+ com.aliyun.ecs20140526.models.RunInstancesRequest.RunInstancesRequestSystemDisk systemDisk =
+ new com.aliyun.ecs20140526.models.RunInstancesRequest.RunInstancesRequestSystemDisk()
+ .setSize(Size) // 设置系统盘大小
+ .setCategory(Category);// 设置系统盘类型
+ // 创建创建实例请求对象并设置参数
+ com.aliyun.ecs20140526.models.RunInstancesRequest runInstancesRequest =
+ new com.aliyun.ecs20140526.models.RunInstancesRequest()
+ .setRegionId(RegionId) // 设置实例所在地域ID
+ .setImageId(ImageId) // 设置实例镜像ID
+ .setInstanceType(InstanceType) // 设置实例类型
+ .setSecurityGroupId(SecurityGroupId) // 设置安全组ID
+ .setVSwitchId(VSwitchId) // 设置虚拟交换机ID
+ .setInstanceName(InstanceName) // 设置实例名称
+ .setInstanceChargeType(InstanceChargeType) // 设置实例付费类型为后付费按量付费
+ .setSystemDisk(systemDisk) // 设置系统盘配置
+ .setHostName(HostName) // 设置主机名
+ .setPassword(Password) // 设置实例密码
+ .setAmount(Amount) // 设置创建实例的数量
+ .setInternetChargeType(InternetChargeType) // 设置互联网计费类型为按流量计费
+ .setInternetMaxBandwidthOut(InternetMaxBandwidthOut); // 设置最大出带宽为5Mbps
+
+ // 创建运行时选项对象
+ com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
+
+ // 尝试执行创建实例请求
+ try {
+ // 复制代码运行请自行打印 API 的返回值
+ RunInstancesResponse runInstancesResponse = client.runInstancesWithOptions(runInstancesRequest, runtime);
+ RunInstancesResponseBody body = runInstancesResponse.getBody();
+ ArrayList list = new ArrayList<>(body.getInstanceIdSets().getInstanceIdSet());
+ log.info("创建的实例ID:{}", list);
+ } catch (TeaException error) {
+ // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
+ // 错误 message
+ log.info(error.getMessage());
+ // 诊断地址
+ log.info(error.getData().get("Recommend"));
+ com.aliyun.teautil.Common.assertAsString(error.message);
+ } catch (Exception _error) {
+ TeaException error = new TeaException(_error.getMessage(), _error);
+ // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
+ // 错误 message
+ log.info(error.getMessage());
+ // 诊断地址
+ log.info(error.getData().get("Recommend"));
+ com.aliyun.teautil.Common.assertAsString(error.message);
+ }
+ }
+
+ /**
+ * 清除ECS实例
+ */
+ @Override
+ public void cleanInstance() {
+ log.info("清理ECS实例");
+ // 创建ECS客户端对象,用于后续调用ECS相关API
+ Client client = null;
+ try {
+ client = this.createClient();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest()
+ .setRegionId(RegionId);
+
+ //创建运行时选择对象,用于配置运行时的选项参数
+ RuntimeOptions runtimeOptions = new RuntimeOptions();
+
+ //获取实例列表
+ DescribeInstancesResponse describeInstancesResponse = null;
+ try {
+ describeInstancesResponse = client.describeInstancesWithOptions(describeInstancesRequest, runtimeOptions);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ //提取实例ID集合
+ ArrayList list = new ArrayList<>();
+ DescribeInstancesResponseBody body = describeInstancesResponse.getBody();
+
+ for (DescribeInstancesResponseBody.DescribeInstancesResponseBodyInstancesInstance instance : body.getInstances().getInstance()) {
+ list.add(instance.getInstanceId());
+ }
+ log.info("清除的实例ID:{}", list);
+ // 创建删除实例请求对象,并设置请求参数
+ com.aliyun.ecs20140526.models.DeleteInstancesRequest deleteInstancesRequest = new com.aliyun.ecs20140526.models.DeleteInstancesRequest()
+ // 设置地域ID,指定删除实例的地域
+ .setRegionId(RegionId)
+ // 设置DryRun为true,用于验证请求是否可以成功,但不实际执行删除操作
+ .setDryRun(false)
+ // 设置Force为true,表示即使实例有正在运行的任务,也强制删除实例
+ .setForce(true)
+ // 设置TerminateSubscription为true,表示删除按订阅付费的实例时终止订阅
+ .setTerminateSubscription(true)
+ .setInstanceId(list);
+
+ // 创建运行时选项对象,用于配置运行时的选项参数
+ com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
+ try {
+ // 复制代码运行请自行打印 API 的返回值
+ DeleteInstancesResponse deleteInstancesResponse = client.deleteInstancesWithOptions(deleteInstancesRequest, runtime);
+ } catch (TeaException error) {
+ // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
+ // 错误 message
+ System.out.println(error.getMessage());
+ // 诊断地址
+ System.out.println(error.getData().get("Recommend"));
+ com.aliyun.teautil.Common.assertAsString(error.message);
+ } catch (Exception _error) {
+ TeaException error = new TeaException(_error.getMessage(), _error);
+ // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
+ // 错误 message
+ System.out.println(error.getMessage());
+ // 诊断地址
+ System.out.println(error.getData().get("Recommend"));
+ com.aliyun.teautil.Common.assertAsString(error.message);
+ }
+ }
+}
diff --git a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/vehicle/VehicleInstance.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/vehicle/VehicleInstance.java
similarity index 79%
rename from cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/vehicle/VehicleInstance.java
rename to cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/vehicle/VehicleInstance.java
index f0c8d8e..571c728 100644
--- a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/vehicle/VehicleInstance.java
+++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/vehicle/VehicleInstance.java
@@ -1,9 +1,9 @@
-package com.muyu.vehicleGateway.vehicle;
+package com.muyu.vehicle.gateway.vehicle;
-import com.muyu.vehicleGateway.vehicle.model.VehicleData;
-import com.muyu.vehicleGateway.vehicle.thread.VehicleThread;
-import com.muyu.vehicleGateway.web.domain.VehicleInfo;
-import com.muyu.vehicleGateway.web.domain.model.PositionModel;
+import com.muyu.vehicle.gateway.vehicle.model.VehicleData;
+import com.muyu.vehicle.gateway.vehicle.thread.VehicleThread;
+import com.muyu.vehicle.gateway.web.domain.VehicleInfo;
+import com.muyu.vehicle.gateway.web.domain.model.PositionModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
diff --git a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/vehicle/model/VehicleData.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/vehicle/model/VehicleData.java
similarity index 98%
rename from cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/vehicle/model/VehicleData.java
rename to cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/vehicle/model/VehicleData.java
index d7cbaa9..50da831 100644
--- a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/vehicle/model/VehicleData.java
+++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/vehicle/model/VehicleData.java
@@ -1,7 +1,7 @@
-package com.muyu.vehicleGateway.vehicle.model;
+package com.muyu.vehicle.gateway.vehicle.model;
-import com.muyu.vehicleGateway.web.domain.VehicleInfo;
-import com.muyu.vehicleGateway.web.util.VehicleUtils;
+import com.muyu.vehicle.gateway.web.domain.VehicleInfo;
+import com.muyu.vehicle.gateway.web.util.VehicleUtils;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
diff --git a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/vehicle/thread/VehicleThread.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/vehicle/thread/VehicleThread.java
similarity index 86%
rename from cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/vehicle/thread/VehicleThread.java
rename to cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/vehicle/thread/VehicleThread.java
index 6a74528..422ff30 100644
--- a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/vehicle/thread/VehicleThread.java
+++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/vehicle/thread/VehicleThread.java
@@ -1,6 +1,6 @@
-package com.muyu.vehicleGateway.vehicle.thread;
+package com.muyu.vehicle.gateway.vehicle.thread;
-import com.muyu.vehicleGateway.vehicle.VehicleInstance;
+import com.muyu.vehicle.gateway.vehicle.VehicleInstance;
import lombok.Data;
import lombok.extern.log4j.Log4j2;
diff --git a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/web/domain/VehicleInfo.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/web/domain/VehicleInfo.java
similarity index 92%
rename from cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/web/domain/VehicleInfo.java
rename to cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/web/domain/VehicleInfo.java
index 6d5f335..3c6f4d8 100644
--- a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/web/domain/VehicleInfo.java
+++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/web/domain/VehicleInfo.java
@@ -1,9 +1,9 @@
-package com.muyu.vehicleGateway.web.domain;
+package com.muyu.vehicle.gateway.web.domain;
import com.baomidou.mybatisplus.annotation.*;
-import com.muyu.vehicleGateway.vehicle.VehicleInstance;
-import com.muyu.vehicleGateway.vehicle.model.VehicleData;
-import com.muyu.vehicleGateway.web.util.VehicleUtils;
+import com.muyu.vehicle.gateway.vehicle.VehicleInstance;
+import com.muyu.vehicle.gateway.vehicle.model.VehicleData;
+import com.muyu.vehicle.gateway.web.util.VehicleUtils;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
diff --git a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/web/domain/model/PositionModel.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/web/domain/model/PositionModel.java
similarity index 93%
rename from cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/web/domain/model/PositionModel.java
rename to cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/web/domain/model/PositionModel.java
index 6e6a2e8..ae841d0 100644
--- a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/web/domain/model/PositionModel.java
+++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/web/domain/model/PositionModel.java
@@ -1,4 +1,4 @@
-package com.muyu.vehicleGateway.web.domain.model;
+package com.muyu.vehicle.gateway.web.domain.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
diff --git a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/web/mapper/VehicleInfoMapper.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/web/mapper/VehicleInfoMapper.java
similarity index 73%
rename from cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/web/mapper/VehicleInfoMapper.java
rename to cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/web/mapper/VehicleInfoMapper.java
index 963dc90..5bd92ea 100644
--- a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/web/mapper/VehicleInfoMapper.java
+++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/web/mapper/VehicleInfoMapper.java
@@ -1,7 +1,7 @@
-package com.muyu.vehicleGateway.web.mapper;
+package com.muyu.vehicle.gateway.web.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.muyu.vehicleGateway.web.domain.VehicleInfo;
+import com.muyu.vehicle.gateway.web.domain.VehicleInfo;
import org.apache.ibatis.annotations.Mapper;
/**
diff --git a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/web/service/impl/VechileInfoServiceImpl.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/web/service/impl/VechileInfoServiceImpl.java
similarity index 74%
rename from cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/web/service/impl/VechileInfoServiceImpl.java
rename to cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/web/service/impl/VechileInfoServiceImpl.java
index a87b4ac..4cb9b5c 100644
--- a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/web/service/impl/VechileInfoServiceImpl.java
+++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/web/service/impl/VechileInfoServiceImpl.java
@@ -1,8 +1,8 @@
-package com.muyu.vehicleGateway.web.service.impl;
+package com.muyu.vehicle.gateway.web.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.muyu.vehicleGateway.web.domain.VehicleInfo;
-import com.muyu.vehicleGateway.web.mapper.VehicleInfoMapper;
+import com.muyu.vehicle.gateway.web.domain.VehicleInfo;
+import com.muyu.vehicle.gateway.web.mapper.VehicleInfoMapper;
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/vehicleGateway/web/util/VehicleUtils.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/web/util/VehicleUtils.java
similarity index 96%
rename from cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/web/util/VehicleUtils.java
rename to cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/web/util/VehicleUtils.java
index 0f3034a..66381ff 100644
--- a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/web/util/VehicleUtils.java
+++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/vehicle/gateway/web/util/VehicleUtils.java
@@ -1,6 +1,6 @@
-package com.muyu.vehicleGateway.web.util;
+package com.muyu.vehicle.gateway.web.util;
-import com.muyu.vehicleGateway.web.domain.model.PositionModel;
+import com.muyu.vehicle.gateway.web.domain.model.PositionModel;
import java.math.BigDecimal;
import java.math.RoundingMode;
diff --git a/cloud-modules/cloud-modules-vehicleGateway/src/main/resources/banner.txt b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/banner.txt
similarity index 100%
rename from cloud-modules/cloud-modules-vehicleGateway/src/main/resources/banner.txt
rename to cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/banner.txt
diff --git a/cloud-modules/cloud-modules-vehicleGateway/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/bootstrap.yml
similarity index 100%
rename from cloud-modules/cloud-modules-vehicleGateway/src/main/resources/bootstrap.yml
rename to cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/bootstrap.yml
diff --git a/cloud-modules/cloud-modules-vehicleGateway/src/main/resources/logback/dev.xml b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/dev.xml
similarity index 100%
rename from cloud-modules/cloud-modules-vehicleGateway/src/main/resources/logback/dev.xml
rename to cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/dev.xml
diff --git a/cloud-modules/cloud-modules-vehicleGateway/src/main/resources/logback/prod.xml b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/prod.xml
similarity index 100%
rename from cloud-modules/cloud-modules-vehicleGateway/src/main/resources/logback/prod.xml
rename to cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/prod.xml
diff --git a/cloud-modules/cloud-modules-vehicleGateway/src/main/resources/logback/test.xml b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/test.xml
similarity index 100%
rename from cloud-modules/cloud-modules-vehicleGateway/src/main/resources/logback/test.xml
rename to cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/logback/test.xml
diff --git a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/ClearInstance.java b/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/ClearInstance.java
deleted file mode 100644
index 11ac2cb..0000000
--- a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/ClearInstance.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package com.muyu.vehicleGateway;
-
-import com.aliyun.ecs20140526.models.DescribeInstancesRequest;
-import com.aliyun.ecs20140526.models.DescribeInstancesResponse;
-import com.aliyun.ecs20140526.models.DescribeInstancesResponseBody;
-import com.aliyun.tea.TeaException;
-import com.aliyun.teautil.models.RuntimeOptions;
-import lombok.extern.log4j.Log4j2;
-import org.springframework.beans.factory.DisposableBean;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-
-/**
- * 清除阿里云ECS实例
- * @ClassName ClearInstance
- * @author LiHD
- * @Date 2024/9/28 22:29
- */
-@Component
-@Log4j2
-public class ClearInstance implements DisposableBean {
-
- /**
- * description :
- * 使用AK&SK初始化账号Client
- * @return Client
- *
- * @throws Exception
- */
- public static com.aliyun.ecs20140526.Client createClient() throws Exception {
- // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
- // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。
- com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
- // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
- .setAccessKeyId("LTAI5tM4LSerzWQ9wUPXgybq")
- // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
- .setAccessKeySecret("hkiPr0QwkKMZauhXucgg1SDriXUW0Q");
- // Endpoint 请参考 https://api.aliyun.com/product/Ecs
- config.endpoint = "ecs.cn-beijing.aliyuncs.com";
- return new com.aliyun.ecs20140526.Client(config);
- }
-
- public static void clearInstance() throws Exception {
-
- // 创建ECS客户端对象,用于后续调用ECS相关API
- com.aliyun.ecs20140526.Client client = ClearInstance.createClient();
-
- DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest()
- .setRegionId("cn-beijing");
-
- //创建运行时选择对象,用于配置运行时的选项参数
- RuntimeOptions runtimeOptions = new RuntimeOptions();
-
- //获取实例列表
- DescribeInstancesResponse describeInstancesResponse = client.describeInstancesWithOptions(describeInstancesRequest, runtimeOptions);
-
- //提取实例ID集合
- ArrayList list = new ArrayList<>();
- DescribeInstancesResponseBody body = describeInstancesResponse.getBody();
-
- for (DescribeInstancesResponseBody.DescribeInstancesResponseBodyInstancesInstance instance : body.getInstances().getInstance()) {
- list.add(instance.getInstanceId());
- }
- log.info("Instance IDs: " + list);
- // 创建删除实例请求对象,并设置请求参数
- com.aliyun.ecs20140526.models.DeleteInstancesRequest deleteInstancesRequest = new com.aliyun.ecs20140526.models.DeleteInstancesRequest()
- // 设置地域ID,指定删除实例的地域
- .setRegionId("cn-beijing")
- // 设置DryRun为true,用于验证请求是否可以成功,但不实际执行删除操作
- .setDryRun(false)
- // 设置Force为true,表示即使实例有正在运行的任务,也强制删除实例
- .setForce(true)
- // 设置TerminateSubscription为true,表示删除按订阅付费的实例时终止订阅
- .setTerminateSubscription(true)
- .setInstanceId(list);
-
- // 创建运行时选项对象,用于配置运行时的选项参数
- com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
- try {
- // 复制代码运行请自行打印 API 的返回值
- client.deleteInstancesWithOptions(deleteInstancesRequest, runtime);
- } catch (TeaException error) {
- // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
- // 错误 message
- System.out.println(error.getMessage());
- // 诊断地址
- System.out.println(error.getData().get("Recommend"));
- com.aliyun.teautil.Common.assertAsString(error.message);
- } catch (Exception _error) {
- TeaException error = new TeaException(_error.getMessage(), _error);
- // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
- // 错误 message
- System.out.println(error.getMessage());
- // 诊断地址
- System.out.println(error.getData().get("Recommend"));
- com.aliyun.teautil.Common.assertAsString(error.message);
- }
- }
-
-
- @Override
- public void destroy() throws Exception {
- log.info("开始执行删除实例方法");
- clearInstance();
- log.info("删除实例方法执行完毕");
- }
-}
diff --git a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/CreateInstance.java b/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/CreateInstance.java
deleted file mode 100644
index 7d8860e..0000000
--- a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/CreateInstance.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package com.muyu.vehicleGateway;
-
-import com.aliyun.tea.TeaException;
-import lombok.extern.log4j.Log4j2;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.stereotype.Component;
-
-/**
- * 创建阿里云ECS实例
- * @className Sample
- * @author LiHD
- * @date 2024/9/28 19:02
- */
-@Component
-@Log4j2
-public class CreateInstance implements ApplicationRunner{
-
- /**
- * description :
- * 使用AK&SK初始化账号Client
- * @return Client
- *
- * @throws Exception
- */
- public static com.aliyun.ecs20140526.Client createClient() throws Exception {
- // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
- com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
- // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
- .setAccessKeyId("LTAI5tM4LSerzWQ9wUPXgybq")
- // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
- .setAccessKeySecret("hkiPr0QwkKMZauhXucgg1SDriXUW0Q");
- // Endpoint 请参考 https://api.aliyun.com/product/Ecs
- config.endpoint = "ecs.cn-beijing.aliyuncs.com";
- return new com.aliyun.ecs20140526.Client(config);
- }
-
- /**
- * 本程序的入口点
- * 主要功能是创建阿里云ECS实例
- *
- * @throws Exception 如果执行过程中发生错误则抛出异常
- */
- public static void sample() throws Exception {
-
- // 创建阿里云ECS客户端
- com.aliyun.ecs20140526.Client client = CreateInstance.createClient();
-
- // 配置系统盘参数
- com.aliyun.ecs20140526.models.RunInstancesRequest.RunInstancesRequestSystemDisk systemDisk = new com.aliyun.ecs20140526.models.RunInstancesRequest.RunInstancesRequestSystemDisk()
- .setSize("40") // 设置系统盘大小为40GB
- .setCategory("cloud_essd"); // 设置系统盘类型为cloud_essd
-
- // 创建创建实例请求对象并设置参数
- com.aliyun.ecs20140526.models.RunInstancesRequest runInstancesRequest = new com.aliyun.ecs20140526.models.RunInstancesRequest()
- .setRegionId("cn-beijing") // 设置地域ID
- .setImageId("m-2ze801i45fclmf1qwes5") // 设置镜像ID
- .setInstanceType("ecs.e-c1m1.large") // 设置实例类型
- .setSecurityGroupId("sg-2ze63acc0bas9vjm5gtv") // 设置安全组ID
- .setVSwitchId("vsw-2ze028qk4xpwk3i0ggket") // 设置虚拟交换机ID
- .setInstanceName("server-mqtt") // 设置实例名称
- .setInstanceChargeType("PostPaid") // 设置实例付费类型为后付费按量付费
- .setSystemDisk(systemDisk) // 设置系统盘配置
- .setHostName("root") // 设置主机名
- .setPassword("Lhd.123456") // 设置实例密码
- .setAmount(1) // 设置创建实例的数量
- .setInternetChargeType("PayByTraffic") // 设置互联网计费类型为按流量计费
- .setInternetMaxBandwidthOut(5); // 设置最大出带宽为5Mbps
-
- // 创建运行时选项对象
- com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
-
- // 尝试执行创建实例请求
- try {
- // 复制代码运行请自行打印 API 的返回值
- client.runInstancesWithOptions(runInstancesRequest, runtime);
- } catch (TeaException error) {
- // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
- // 错误 message
- System.out.println(error.getMessage());
- // 诊断地址
- System.out.println(error.getData().get("Recommend"));
- com.aliyun.teautil.Common.assertAsString(error.message);
- } catch (Exception _error) {
- TeaException error = new TeaException(_error.getMessage(), _error);
- // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
- // 错误 message
- System.out.println(error.getMessage());
- // 诊断地址
- System.out.println(error.getData().get("Recommend"));
- com.aliyun.teautil.Common.assertAsString(error.message);
- }
- }
-
- @Override
- public void run(ApplicationArguments args) throws Exception {
- log.info("开始执行创建实例方法");
- sample();
- log.info("创建实例方法执行完毕");
- }
-}
diff --git a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/MqttPublishSample.java b/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/MqttPublishSample.java
deleted file mode 100644
index f1b337a..0000000
--- a/cloud-modules/cloud-modules-vehicleGateway/src/main/java/com/muyu/vehicleGateway/MqttPublishSample.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.muyu.vehicleGateway;
-
-import lombok.extern.log4j.Log4j2;
-import lombok.extern.slf4j.Slf4j;
-import org.eclipse.paho.client.mqttv3.*;
-
-@Log4j2
-@Slf4j
-public class MqttPublishSample {
-
- public static void main(String[] args) {
-
- // 定义一个用于MQTT消息发布的示例程序
- String topic = "vehicleGateway";
- String content = "Message from MqttPublishSample";
- int qos = 2;
- String broker = "tcp://123.57.152.124:1883";
- String clientId = "JavaSample";
-
- try {
- // 创建MQTT客户端并连接到指定的broker
- MqttClient sampleClient = new MqttClient(broker, clientId);
- MqttConnectOptions connOpts = new MqttConnectOptions();
- connOpts.setCleanSession(true);
- System.out.println("Connecting to broker: "+broker);
- sampleClient.connect(connOpts);
- sampleClient.subscribe(topic,0);
- // 设置回调处理
- sampleClient.setCallback(new MqttCallback() {
- @Override
- public void connectionLost(Throwable throwable) {
- // 连接丢失的处理
- }
-
- @Override
- public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
- // 消息到达的处理
- System.out.println(new String(mqttMessage.getPayload()));
- }
-
- @Override
- public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
- // 消息发送完成的处理
- }
- });
- } catch(MqttException me) {
- // 处理MQTT异常
- System.out.println("reason "+me.getReasonCode());
- System.out.println("msg "+me.getMessage());
- System.out.println("loc "+me.getLocalizedMessage());
- System.out.println("cause "+me.getCause());
- System.out.println("excep "+me);
- me.printStackTrace();
- }
- }
-}
diff --git a/cloud-modules/pom.xml b/cloud-modules/pom.xml
index 93290d2..b8fc35b 100644
--- a/cloud-modules/pom.xml
+++ b/cloud-modules/pom.xml
@@ -14,6 +14,7 @@
cloud-modules-file
cloud-vx
cloud-modules-enterprise
+ cloud-modules-vehicle-gateway
cloud-modules