master
冯凯 2023-12-01 14:37:54 +08:00
parent 94c473ecab
commit f251581efb
6 changed files with 68 additions and 10 deletions

26
pom.xml
View File

@ -53,6 +53,32 @@
<artifactId>jakarta.validation-api</artifactId> <artifactId>jakarta.validation-api</artifactId>
<version>2.0.2</version> <version>2.0.2</version>
</dependency> </dependency>
<!-- rabbitMQ -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.7.15</version>
</dependency>
<dependency>
<groupId>com.dragon</groupId>
<artifactId>dragon-common-core</artifactId>
<version>3.6.4</version>
</dependency>
<dependency>
<groupId>com.dragon</groupId>
<artifactId>dragon-common-redis</artifactId>
<version>3.6.3</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.32</version>
</dependency>
</dependencies> </dependencies>
<distributionManagement> <distributionManagement>

View File

@ -3,6 +3,7 @@ package com.vehicle.controller;
import com.vehicle.domain.common.req.VehicleOnlineReq; import com.vehicle.domain.common.req.VehicleOnlineReq;
import com.vehicle.service.VehicleService; import com.vehicle.service.VehicleService;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -23,6 +24,7 @@ public class VehicleOnlineController {
@Autowired @Autowired
private VehicleService vehicleService; private VehicleService vehicleService;
/** /**
* 线线 * 线线
* *
@ -30,9 +32,9 @@ public class VehicleOnlineController {
*/ */
@PostMapping("/online") @PostMapping("/online")
public String vehicleOnline(@RequestBody @Validated VehicleOnlineReq vehicleOnlineReq) { public String vehicleOnline(@RequestBody @Validated VehicleOnlineReq vehicleOnlineReq) {
vehicleService.vehicleOnline(vehicleOnlineReq); String topic = vehicleService.vehicleOnline(vehicleOnlineReq);
//返回该车辆的主题 //返回该车辆的主题
return "topic_"+vehicleOnlineReq.getVin(); return topic;
} }

View File

@ -49,6 +49,5 @@ public class VehicleOnlineReq {
/** /**
* *
*/ */
@NotNull(message = "密码不能为空")
private String password; private String password;
} }

View File

@ -11,6 +11,6 @@ import com.vehicle.domain.common.req.VehicleOnlineReq;
* @date 2023/11/27 14:26 * @date 2023/11/27 14:26
*/ */
public interface VehicleService extends IService<VehicleOnlineReq> { public interface VehicleService extends IService<VehicleOnlineReq> {
void vehicleOnline(VehicleOnlineReq vehicleOnlineReq); String vehicleOnline(VehicleOnlineReq vehicleOnlineReq);
} }

View File

@ -1,12 +1,16 @@
package com.vehicle.service.impl; package com.vehicle.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dragon.common.redis.service.RedisService;
import com.vehicle.domain.common.req.VehicleOnlineReq; import com.vehicle.domain.common.req.VehicleOnlineReq;
import com.vehicle.mapper.VehicleOnlineMapper; import com.vehicle.mapper.VehicleOnlineMapper;
import com.vehicle.service.VehicleService; import com.vehicle.service.VehicleService;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.UUID;
import static com.vehicle.utils.Md5Util.md5Encrypt; import static com.vehicle.utils.Md5Util.md5Encrypt;
@ -18,23 +22,33 @@ import static com.vehicle.utils.Md5Util.md5Encrypt;
*/ */
@Service @Service
public class VehicleServiceImpl extends ServiceImpl<VehicleOnlineMapper, VehicleOnlineReq> implements VehicleService { public class VehicleServiceImpl extends ServiceImpl<VehicleOnlineMapper, VehicleOnlineReq> implements VehicleService {
@Autowired
private RabbitTemplate rabbitTemplate;
@Autowired
private RedisService redisService;
/** /**
* 线 * 线
* *
* @param vehicleOnlineReq 线 * @param vehicleOnlineReq 线
*/ */
@Override @Override
public void vehicleOnline(VehicleOnlineReq vehicleOnlineReq) { public String vehicleOnline(VehicleOnlineReq vehicleOnlineReq) {
String vin = vehicleOnlineReq.getVin(); String vin = vehicleOnlineReq.getVin();
String username = vehicleOnlineReq.getUsername(); String username = vehicleOnlineReq.getUsername();
String time = System.currentTimeMillis() + ""; String time = System.currentTimeMillis() + "";
// String time = vehicleOnlineReq.getOnlineTime().getTime() + ""; String message = vin + time + username; // 拼接所要加密消息
String message=vin+time+username; // 拼接所要加密消息
String password = md5Encrypt(message); // 加密 String password = md5Encrypt(message); // 加密
vehicleOnlineReq.setPassword(password); vehicleOnlineReq.setPassword(password);
this.save(vehicleOnlineReq); this.save(vehicleOnlineReq);
rabbitTemplate.convertAndSend("sub_top", "topic_" + vehicleOnlineReq.getVin(), msg -> {
msg.getMessageProperties().setMessageId(UUID.randomUUID().toString().replaceAll("-", ""));
return msg;
});
return "topic_" + vehicleOnlineReq.getVin();
} }
} }

View File

@ -1,4 +1,8 @@
spring: spring:
redis:
host: 10.100.1.2
port: 6379
password:
application: application:
name: mqttDemo name: mqttDemo
datasource: datasource:
@ -6,5 +10,18 @@ spring:
url: jdbc:mysql://124.221.216.186:3306/mqtt?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 url: jdbc:mysql://124.221.216.186:3306/mqtt?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
username: root username: root
password: 27a9601cb3545824 password: 27a9601cb3545824
rabbitmq:
host: 182.254.222.21
port: 5672
template:
mandatory: true
listener:
simple:
prefetch: 1 # 每次取一条消息消费 消费完成取下一条
acknowledge-mode: manual # 设置消费端手动ack确认
retry:
enabled: true # 支持重试
publisher-confirms: true #确认消息已发送到交换机(Exchange)
publisher-returns: true #确认消息已发送到队列(Queue)
server: server:
port: 8066 port: 8067