From 92595bf769f76198f434d2a70fbfea67188a6775 Mon Sep 17 00:00:00 2001 From: SuiXxx <1752599835@qq.com> Date: Thu, 26 Sep 2024 08:26:44 +0800 Subject: [PATCH] =?UTF-8?q?feat():=E8=BD=A6=E8=BE=86=E7=BD=91=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cloud-modules-vehiclegateway/pom.xml | 112 ++++++++++++++++++ .../com/muyu/VehicleGatewayApplication.java | 11 ++ .../java/com/muyu/core/LocalContainer.java | 24 ++++ .../com/muyu/core/VehicleConfiguration.java | 13 ++ .../java/com/muyu/domain/MqttProperties.java | 42 +++++++ .../java/com/muyu/domain/ServerConfig.java | 76 ++++++++++++ .../java/com/muyu/domain/VehicleInstance.java | 27 +++++ .../muyu/domain/model/MqttServerModel.java | 37 ++++++ .../com/muyu/domain/model/PositionModel.java | 33 ++++++ .../muyu/domain/model/ServerConfigModel.java | 53 +++++++++ .../src/main/resources/banner.txt | 2 + .../src/main/resources/logback/dev.xml | 74 ++++++++++++ .../src/main/resources/logback/prod.xml | 81 +++++++++++++ .../src/main/resources/logback/test.xml | 81 +++++++++++++ .../java/com/muyu/mapper/WarnLogsMapper.java | 2 + .../main/resources/mapper/WarnLogsMapper.xml | 6 + cloud-modules/pom.xml | 1 + 17 files changed, 675 insertions(+) create mode 100644 cloud-modules/cloud-modules-vehiclegateway/pom.xml create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/VehicleGatewayApplication.java create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/core/LocalContainer.java create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/core/VehicleConfiguration.java create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/MqttProperties.java create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/ServerConfig.java create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/VehicleInstance.java create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/model/MqttServerModel.java create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/model/PositionModel.java create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/model/ServerConfigModel.java create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/resources/banner.txt create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/resources/logback/dev.xml create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/resources/logback/prod.xml create mode 100644 cloud-modules/cloud-modules-vehiclegateway/src/main/resources/logback/test.xml diff --git a/cloud-modules/cloud-modules-vehiclegateway/pom.xml b/cloud-modules/cloud-modules-vehiclegateway/pom.xml new file mode 100644 index 0000000..75790e1 --- /dev/null +++ b/cloud-modules/cloud-modules-vehiclegateway/pom.xml @@ -0,0 +1,112 @@ + + + 4.0.0 + + com.muyu + cloud-modules + 3.6.3 + + + cloud-modules-vehiclegateway + + + 17 + 17 + UTF-8 + + + + + + + org.springframework.cloud + spring-cloud-starter-bootstrap + 4.1.2 + + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + com.mysql + mysql-connector-j + + + + + com.muyu + cloud-common-datasource + + + + + com.muyu + cloud-common-datascope + + + + + com.muyu + cloud-common-log + + + + + com.muyu + cloud-common-api-doc + + + + + com.muyu + cloud-common-rabbit + + + org.springframework.boot + spring-boot-autoconfigure + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + + 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 new file mode 100644 index 0000000..f3c8b40 --- /dev/null +++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/VehicleGatewayApplication.java @@ -0,0 +1,11 @@ +package com.muyu; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +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/core/LocalContainer.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/core/LocalContainer.java new file mode 100644 index 0000000..6e379a3 --- /dev/null +++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/core/LocalContainer.java @@ -0,0 +1,24 @@ +package com.muyu.core; + +import com.muyu.domain.VehicleInstance; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public class LocalContainer { + private static final Map> tenantVehicleDataMap + =new ConcurrentHashMap<>(); + + /** + * 获取租户ID下车辆 + */ + public static MapgetVehicleDataMap(String tenantId){ + return tenantVehicleDataMap.computeIfAbsent(tenantId,k->new ConcurrentHashMap<>()); + } + + /** + * + */ + + +} diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/core/VehicleConfiguration.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/core/VehicleConfiguration.java new file mode 100644 index 0000000..7b91529 --- /dev/null +++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/core/VehicleConfiguration.java @@ -0,0 +1,13 @@ +package com.muyu.core; + +import lombok.AllArgsConstructor; +import lombok.extern.log4j.Log4j2; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.context.annotation.Configuration; + +@Log4j2 +@Configuration +@AllArgsConstructor +public class VehicleConfiguration { +} diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/MqttProperties.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/MqttProperties.java new file mode 100644 index 0000000..f005027 --- /dev/null +++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/MqttProperties.java @@ -0,0 +1,42 @@ +package com.muyu.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * mqtt配置类 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class MqttProperties { + /** + * 节点 + */ + private String broker; + + /** + * 主题 + */ + private String topic; + /** + * 用户名 + */ + private String userName; + + /** + * 密码 + */ + private String password; + + /** + * 节点ID + */ + private String clientId; + /** + * 上报级别 + */ + private int qos=0; + +} diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/ServerConfig.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/ServerConfig.java new file mode 100644 index 0000000..ad4b607 --- /dev/null +++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/ServerConfig.java @@ -0,0 +1,76 @@ +package com.muyu.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.domain.model.ServerConfigModel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.function.Supplier; + +/** + * 服务器配置类 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@TableName(value = "server_config") +public class ServerConfig { + + /** + * 主键 + */ + @TableId(value = "id",type = IdType.AUTO) + private Long id; + + + /** + * 主机地址 + */ + private String host; + + /** + * 端口号 + */ + private String port; + + /** + * 负载地址 + */ + private String url; + + /** + * 默认MOTT地址 + */ + private String defaultMqttAddr; + + /** + * 默认MQTT主题 + */ + private String defaultMqttTopic; + + /** + * 默认MOTT交付级别 + */ + private Integer defaultMqttQos; + + + public static ServerConfig modeBuild(ServerConfigModel serverConfigModel, Supplier idKey){ + return builder() + .id(idKey.get()) + .host(serverConfigModel.getHost()) + .port(serverConfigModel.getPort()) + .url(serverConfigModel.getUrl()) + .defaultMqttAddr(serverConfigModel.getDefaultMqttAddr()) + .defaultMqttTopic(serverConfigModel.getDefaultMqttTopic()) + .defaultMqttQos(serverConfigModel.getDefaultMqttQos()) + .build(); + + + + } +} diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/VehicleInstance.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/VehicleInstance.java new file mode 100644 index 0000000..640ed37 --- /dev/null +++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/VehicleInstance.java @@ -0,0 +1,27 @@ +package com.muyu.domain; + +import com.muyu.domain.model.PositionModel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.concurrent.LinkedBlockingQueue; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class VehicleInstance { + /** + * 路线轨迹编码 + */ + private String positionCode; + + /** + * 路径队列 + */ + private LinkedBlockingQueue positionQueue=new LinkedBlockingQueue<>(); + + +} diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/model/MqttServerModel.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/model/MqttServerModel.java new file mode 100644 index 0000000..bdd921c --- /dev/null +++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/model/MqttServerModel.java @@ -0,0 +1,37 @@ +package com.muyu.domain.model; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + Mqtt服务器模型 + */ + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class MqttServerModel { + private static final Logger log=LoggerFactory.getLogger(MqttServerModel.class); + + /** + * MQTT服务节点 + */ + private String broker; + + /** + * MQTT订阅主题 + */ + private String topic; + + public String getBroker(){ + log.info("broker:{}",broker); + return broker.contains("tcp://")?broker:"tcp://"+broker+":1883"; + } + + +} + diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/model/PositionModel.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/model/PositionModel.java new file mode 100644 index 0000000..88d00e4 --- /dev/null +++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/model/PositionModel.java @@ -0,0 +1,33 @@ +package com.muyu.domain.model; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @description: 位置模型 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PositionModel { + /** + * 经度 + */ + private String longitude; + + /** + * 维度 + */ + private String latitude; + + public static PositionModel strBuild (String positionStr) { + String[] split = positionStr.split(","); + return PositionModel.builder() + .longitude(split[0]) + .latitude(split[1]) + .build(); + } +} diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/model/ServerConfigModel.java b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/model/ServerConfigModel.java new file mode 100644 index 0000000..fa63cdb --- /dev/null +++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/java/com/muyu/domain/model/ServerConfigModel.java @@ -0,0 +1,53 @@ +package com.muyu.domain.model; + +import com.muyu.domain.ServerConfig; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ServerConfigModel { + /** + * 主机地址 + */ + private String host; + + /** + * 端口号 + */ + private String port; + /** + * 负载地址 + */ + private String url; + + /** + * 默认MOTT地址 + */ + private String defaultMqttAddr; + + /** + * 默认MQTT主题 + */ + private String defaultMqttTopic; + + /** + * 默认MOTT交付级别 + */ + private Integer defaultMqttQos; + + public static ServerConfigModel serverConfigModelBuild(ServerConfig serverConfig){ + return builder() + .host(serverConfig.getHost().trim()) + .port(serverConfig.getPort()) + .url(serverConfig.getUrl().trim()) + .defaultMqttAddr(serverConfig.getDefaultMqttAddr().trim()) + .defaultMqttTopic(serverConfig.getDefaultMqttTopic().trim()) + .defaultMqttQos(serverConfig.getDefaultMqttQos()) + .build(); + } +} diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/banner.txt b/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/logback/dev.xml b/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/logback/dev.xml new file mode 100644 index 0000000..621579c --- /dev/null +++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/logback/dev.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/logback/prod.xml b/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/logback/prod.xml new file mode 100644 index 0000000..2419bf9 --- /dev/null +++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/logback/prod.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + ${log.sky.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/logback/test.xml b/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/logback/test.xml new file mode 100644 index 0000000..2419bf9 --- /dev/null +++ b/cloud-modules/cloud-modules-vehiclegateway/src/main/resources/logback/test.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + ${log.sky.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-modules/cloud-modules-warn/src/main/java/com/muyu/mapper/WarnLogsMapper.java b/cloud-modules/cloud-modules-warn/src/main/java/com/muyu/mapper/WarnLogsMapper.java index 8a2d610..98298af 100644 --- a/cloud-modules/cloud-modules-warn/src/main/java/com/muyu/mapper/WarnLogsMapper.java +++ b/cloud-modules/cloud-modules-warn/src/main/java/com/muyu/mapper/WarnLogsMapper.java @@ -18,4 +18,6 @@ public interface WarnLogsMapper extends BaseMapper{ List selectWarnLogsList(); WarnLogsResp selectWarnLogs(@Param("id")Long id); + + Integer addWarnLog(List list); } diff --git a/cloud-modules/cloud-modules-warn/src/main/resources/mapper/WarnLogsMapper.xml b/cloud-modules/cloud-modules-warn/src/main/resources/mapper/WarnLogsMapper.xml index 6d83fc0..5308b43 100644 --- a/cloud-modules/cloud-modules-warn/src/main/resources/mapper/WarnLogsMapper.xml +++ b/cloud-modules/cloud-modules-warn/src/main/resources/mapper/WarnLogsMapper.xml @@ -3,6 +3,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + INSERT INTO warn_logs VALUES + + (#{warnLogs.id}) + +