From 63906dc82945abeaaf44af4080beda630e440a40 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=86=AF=E5=87=AF?= <371894675@qq.com>
Date: Tue, 28 Nov 2023 10:14:49 +0800
Subject: [PATCH] COMMIT FIRST
---
.gitignore | 46 ++++++++++++++++
Dockerfile | 18 ++++++
pom.xml | 55 +++++++++++++++++++
.../controller/VehicleOnlineController.java | 39 +++++++++++++
.../domain/common/req/VehicleOnlineReq.java | 54 ++++++++++++++++++
.../vehicle/mapper/VehicleOnlineMapper.java | 17 ++++++
.../com/vehicle/service/VehicleService.java | 16 ++++++
.../service/impl/VehicleServiceImpl.java | 40 ++++++++++++++
src/main/java/com/vehicle/utils/Md5Util.java | 43 +++++++++++++++
src/main/resources/application.yml | 10 ++++
10 files changed, 338 insertions(+)
create mode 100644 .gitignore
create mode 100644 Dockerfile
create mode 100644 pom.xml
create mode 100644 src/main/java/com/vehicle/controller/VehicleOnlineController.java
create mode 100644 src/main/java/com/vehicle/domain/common/req/VehicleOnlineReq.java
create mode 100644 src/main/java/com/vehicle/mapper/VehicleOnlineMapper.java
create mode 100644 src/main/java/com/vehicle/service/VehicleService.java
create mode 100644 src/main/java/com/vehicle/service/impl/VehicleServiceImpl.java
create mode 100644 src/main/java/com/vehicle/utils/Md5Util.java
create mode 100644 src/main/resources/application.yml
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..09bdfea
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,46 @@
+######################################################################
+# Build Tools
+
+.gradle
+/build/
+!gradle/wrapper/gradle-wrapper.jar
+
+target/
+!.mvn/wrapper/maven-wrapper.jar
+
+######################################################################
+# IDE
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### JRebel ###
+rebel.xml
+### NetBeans ###
+nbproject/private/
+build/*
+nbbuild/
+dist/
+nbdist/
+.nb-gradle/
+
+######################################################################
+# Others
+*.log
+*.xml.versionsBackup
+*.swp
+
+!*/build/*.java
+!*/build/*.html
+!*/build/*.xml
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..1f923fc
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,18 @@
+#起始镜像
+FROM anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/openjdk:17-8.6
+#暴露端口号
+EXPOSE 8066
+#挂载目录的位置
+VOLUME /home/logs/vehicleTest
+#构建复制外部文件到docker
+COPY /target/VehicleTest-0.0.1-SNAPSHOT.jar /home/app.jar
+#工作目录 exec -it 进入容器内部后的默认的起始目录
+WORKDIR /home
+ENV TIME_ZONE Asia/Shanghai
+#指定东八区
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
+#启动java 程序
+ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-jar","/home/app.jar"]
+
+
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..6be099e
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,55 @@
+
+
+ 4.0.0
+
+ com.vehicle
+ VehicleTest
+ 3.6.3
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 2.7.15
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.7.15
+
+
+ mysql
+ mysql-connector-java
+ 8.0.29
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.5.3.1
+
+
+ org.projectlombok
+ lombok
+ 1.18.28
+
+
+ org.jetbrains
+ annotations
+ 13.0
+ compile
+
+
+ jakarta.validation
+ jakarta.validation-api
+ 2.0.2
+
+
+
diff --git a/src/main/java/com/vehicle/controller/VehicleOnlineController.java b/src/main/java/com/vehicle/controller/VehicleOnlineController.java
new file mode 100644
index 0000000..6eaab3d
--- /dev/null
+++ b/src/main/java/com/vehicle/controller/VehicleOnlineController.java
@@ -0,0 +1,39 @@
+package com.vehicle.controller;
+
+
+import com.vehicle.domain.common.req.VehicleOnlineReq;
+import com.vehicle.service.VehicleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author 冯凯
+ * @version 1.0
+ * @description: 车辆上线控制层
+ * @date 2023/11/27 14:01
+ */
+@RestController
+@RequestMapping("/vehicle")
+public class VehicleOnlineController {
+
+ @Autowired
+ private VehicleService vehicleService;
+
+ /**
+ * 将车辆在线请求转换为车辆在线对象
+ *
+ * @param vehicleOnlineReq 车辆在线请求对象
+ */
+ @PostMapping("/online")
+ public String vehicleOnline(@RequestBody @Validated VehicleOnlineReq vehicleOnlineReq) {
+ vehicleService.vehicleOnline(vehicleOnlineReq);
+ //返回该车辆的主题
+ return "topic_"+vehicleOnlineReq.getVin();
+
+ }
+
+}
diff --git a/src/main/java/com/vehicle/domain/common/req/VehicleOnlineReq.java b/src/main/java/com/vehicle/domain/common/req/VehicleOnlineReq.java
new file mode 100644
index 0000000..2080a13
--- /dev/null
+++ b/src/main/java/com/vehicle/domain/common/req/VehicleOnlineReq.java
@@ -0,0 +1,54 @@
+package com.vehicle.domain.common.req;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import javax.validation.constraints.NotNull;
+
+
+import java.util.Date;
+
+/**
+ * @author 冯凯
+ * @version 1.0
+ * @description: 车辆上线请求实体类
+ * @date 2023/11/27 14:14
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("user")
+public class VehicleOnlineReq {
+
+ @TableId(type = IdType.AUTO)
+ private Integer id;
+ /**
+ * 车辆VIN
+ */
+ @NotNull( message= "VIN不能为空")
+ private String vin;
+
+ /**
+ * 车辆登陆用户名
+ */
+ @NotNull(message = "用户名不能为空")
+ private String username;
+
+ /**
+ * 上线时间
+ */
+ @TableField(exist = false)
+ private Date onlineTime;
+
+ /**
+ * 车辆登陆密码
+ */
+ @NotNull(message = "密码不能为空")
+ private String password;
+}
diff --git a/src/main/java/com/vehicle/mapper/VehicleOnlineMapper.java b/src/main/java/com/vehicle/mapper/VehicleOnlineMapper.java
new file mode 100644
index 0000000..ff75068
--- /dev/null
+++ b/src/main/java/com/vehicle/mapper/VehicleOnlineMapper.java
@@ -0,0 +1,17 @@
+package com.vehicle.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import com.vehicle.domain.common.req.VehicleOnlineReq;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author 冯凯
+ * @version 1.0
+ * @description: 车辆上线接口
+ * @date 2023/11/27 14:30
+ */
+
+@Mapper
+public interface VehicleOnlineMapper extends BaseMapper {
+}
diff --git a/src/main/java/com/vehicle/service/VehicleService.java b/src/main/java/com/vehicle/service/VehicleService.java
new file mode 100644
index 0000000..adbd86a
--- /dev/null
+++ b/src/main/java/com/vehicle/service/VehicleService.java
@@ -0,0 +1,16 @@
+package com.vehicle.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.vehicle.domain.common.req.VehicleOnlineReq;
+
+
+/**
+ * @author 冯凯
+ * @version 1.0
+ * @description: 车辆业务
+ * @date 2023/11/27 14:26
+ */
+public interface VehicleService extends IService {
+ void vehicleOnline(VehicleOnlineReq vehicleOnlineReq);
+
+}
diff --git a/src/main/java/com/vehicle/service/impl/VehicleServiceImpl.java b/src/main/java/com/vehicle/service/impl/VehicleServiceImpl.java
new file mode 100644
index 0000000..8581bbc
--- /dev/null
+++ b/src/main/java/com/vehicle/service/impl/VehicleServiceImpl.java
@@ -0,0 +1,40 @@
+package com.vehicle.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import com.vehicle.domain.common.req.VehicleOnlineReq;
+import com.vehicle.mapper.VehicleOnlineMapper;
+import com.vehicle.service.VehicleService;
+import org.springframework.stereotype.Service;
+
+import static com.vehicle.utils.Md5Util.md5Encrypt;
+
+
+/**
+ * @author 冯凯
+ * @version 1.0
+ * @description: 车辆业务实现类
+ * @date 2023/11/27 14:27
+ */
+@Service
+public class VehicleServiceImpl extends ServiceImpl implements VehicleService {
+ /**
+ * 车辆上线请求的回调函数
+ *
+ * @param vehicleOnlineReq 车辆上线请求参数
+ */
+ @Override
+ public void vehicleOnline(VehicleOnlineReq vehicleOnlineReq) {
+ String vin = vehicleOnlineReq.getVin();
+ String username = vehicleOnlineReq.getUsername();
+ String time = System.currentTimeMillis() + "";
+// String time = vehicleOnlineReq.getOnlineTime().getTime() + "";
+ String message=vin+time+username; // 拼接所要加密消息
+ String password = md5Encrypt(message); // 加密
+ vehicleOnlineReq.setPassword(password);
+ this.save(vehicleOnlineReq);
+ }
+
+
+
+}
diff --git a/src/main/java/com/vehicle/utils/Md5Util.java b/src/main/java/com/vehicle/utils/Md5Util.java
new file mode 100644
index 0000000..7dd11c9
--- /dev/null
+++ b/src/main/java/com/vehicle/utils/Md5Util.java
@@ -0,0 +1,43 @@
+package com.vehicle.utils;
+
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+/**
+ * @author 冯凯
+ * @version 1.0
+ * @description:
+ * @date 2023/11/27 14:46
+ */
+public class Md5Util {
+
+ public static String md5Encrypt(String message) {
+ try {
+ // 创建MD5消息摘要对象
+ MessageDigest md = MessageDigest.getInstance("MD5");
+
+ // 更新消息摘要
+ md.update(message.getBytes());
+
+ // 获取摘要结果
+ byte[] digest = md.digest();
+
+ // 将字节数组转换为BigInteger类型
+ BigInteger bigInt = new BigInteger(1, digest);
+
+ // 将BigInteger类型转换为16进制字符串
+ String encryptedMessage = bigInt.toString(16);
+
+ // 补齐前导0直到长度为32
+ while (encryptedMessage.length() < 32) {
+ encryptedMessage = "0" + encryptedMessage;
+ }
+
+ return encryptedMessage;
+ } catch (NoSuchAlgorithmException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
new file mode 100644
index 0000000..560b763
--- /dev/null
+++ b/src/main/resources/application.yml
@@ -0,0 +1,10 @@
+spring:
+ application:
+ name: mqttDemo
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://124.221.216.186:3306/mqtt?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
+ username: root
+ password: 27a9601cb3545824
+server:
+ port: 8066