【代码评审】IoT:数据桥梁的接入

This commit is contained in:
YunaiV 2025-03-16 20:51:00 +08:00
parent 3191d1bd1a
commit 3b85adc754
4 changed files with 27 additions and 27 deletions

View File

@ -112,6 +112,21 @@
<version>24.1.2</version> <version>24.1.2</version>
</dependency> </dependency>
<!-- TODO @芋艿:合理注释 -->
<!-- IoT 数据桥梁的执行器所需消息队列。如果您只需要使用 rocketmq 那么则注释掉其它消息队列即可 -->
<!-- <dependency>-->
<!-- <groupId>org.apache.rocketmq</groupId>-->
<!-- <artifactId>rocketmq-spring-boot-starter</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.kafka</groupId>-->
<!-- <artifactId>spring-kafka</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-amqp</artifactId>-->
<!-- </dependency>-->
</dependencies> </dependencies>
</project> </project>

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config; package cn.iocoder.yudao.module.iot.controller.admin.rule.vo.databridge.config;
import cn.iocoder.yudao.module.iot.enums.rule.IotDataBridgeTypeEnum;
import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.JsonTypeInfo;
import lombok.Data; import lombok.Data;
@ -7,7 +8,7 @@ import lombok.Data;
/** /**
* 抽象类 IotDataBridgeConfig * 抽象类 IotDataBridgeConfig
* *
* 用于表示数据桥梁配置数据的通用类型根据具体的 "type" 字段动态映射到对应的子类 * 用于表示数据桥梁配置数据的通用类型根据具体的 "type" 字段动态映射到对应的子类
* 提供多态支持适用于不同类型的数据结构序列化和反序列化场景 * 提供多态支持适用于不同类型的数据结构序列化和反序列化场景
* *
* @author HUIHUI * @author HUIHUI
@ -26,6 +27,8 @@ public abstract class IotDataBridgeAbstractConfig {
/** /**
* 配置类型 * 配置类型
*
* 枚举 {@link IotDataBridgeTypeEnum#getType()}
*/ */
private String type; private String type;

View File

@ -10,7 +10,6 @@ import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks; import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Mockito;
import org.springframework.http.HttpMethod; import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@ -20,6 +19,7 @@ import java.time.LocalDateTime;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.when;
/** /**
* {@link IotDataBridgeExecute} 实现类的测试 * {@link IotDataBridgeExecute} 实现类的测试
@ -41,20 +41,14 @@ public class IotDataBridgeExecuteTest extends BaseMockitoUnitTest {
@BeforeEach @BeforeEach
public void setUp() { public void setUp() {
// 创建共享的测试消息 // 创建共享的测试消息
message = IotDeviceMessage.builder() message = IotDeviceMessage.builder().requestId("TEST-001").reportTime(LocalDateTime.now()).tenantId(1L)
.requestId("TEST-001") .productKey("testProduct").deviceName("testDevice").deviceKey("testDeviceKey")
.productKey("testProduct") .type("property").identifier("temperature").data("{\"value\": 60}")
.deviceName("testDevice")
.deviceKey("testDeviceKey")
.type("property")
.identifier("temperature")
.data("{\"value\": 60}")
.reportTime(LocalDateTime.now())
.tenantId(1L)
.build(); .build();
// 配置 RestTemplate mock 返回成功响应 // 配置 RestTemplate mock 返回成功响应
Mockito.when(restTemplate.exchange(anyString(), any(HttpMethod.class), any(), any(Class.class))) // TODO @puhui999这个应该放到 testHttpDataBridge
when(restTemplate.exchange(anyString(), any(HttpMethod.class), any(), any(Class.class)))
.thenReturn(new ResponseEntity<>("Success", HttpStatus.OK)); .thenReturn(new ResponseEntity<>("Success", HttpStatus.OK));
} }
@ -64,6 +58,7 @@ public class IotDataBridgeExecuteTest extends BaseMockitoUnitTest {
IotKafkaMQDataBridgeExecute action = new IotKafkaMQDataBridgeExecute(); IotKafkaMQDataBridgeExecute action = new IotKafkaMQDataBridgeExecute();
// 2. 创建配置 // 2. 创建配置
// TODO @puhui999可以改成链式哈
IotDataBridgeKafkaMQConfig config = new IotDataBridgeKafkaMQConfig(); IotDataBridgeKafkaMQConfig config = new IotDataBridgeKafkaMQConfig();
config.setBootstrapServers("127.0.0.1:9092"); config.setBootstrapServers("127.0.0.1:9092");
config.setTopic("test-topic"); config.setTopic("test-topic");

View File

@ -114,19 +114,6 @@
<artifactId>yudao-module-iot-biz</artifactId> <artifactId>yudao-module-iot-biz</artifactId>
<version>${revision}</version> <version>${revision}</version>
</dependency> </dependency>
<!-- IoT 数据桥梁的执行器所需消息队列。如果您只需要使用 rocketmq 那么则注释掉其它消息队列即可 -->
<!-- <dependency>-->
<!-- <groupId>org.apache.rocketmq</groupId>-->
<!-- <artifactId>rocketmq-spring-boot-starter</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.kafka</groupId>-->
<!-- <artifactId>spring-kafka</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-amqp</artifactId>-->
<!-- </dependency>-->
<!-- spring boot 配置所需依赖 --> <!-- spring boot 配置所需依赖 -->
<dependency> <dependency>