Commit d9b62aea2503af568a9972b4702421a065d45fce

Authored by 芯火源
1 parent 5bd06662

refactor(DEFECT-1062): 设备事件验证设备有效性

@@ -593,8 +593,6 @@ public class DefaultTransportService implements TransportService { @@ -593,8 +593,6 @@ public class DefaultTransportService implements TransportService {
593 DeviceId deviceId = new DeviceId(new UUID(sessionInfo.getDeviceIdMSB(), sessionInfo.getDeviceIdLSB())); 593 DeviceId deviceId = new DeviceId(new UUID(sessionInfo.getDeviceIdMSB(), sessionInfo.getDeviceIdLSB()));
594 metaData.putValue("deviceName", sessionInfo.getDeviceName()); 594 metaData.putValue("deviceName", sessionInfo.getDeviceName());
595 metaData.putValue("deviceType", sessionInfo.getDeviceType()); 595 metaData.putValue("deviceType", sessionInfo.getDeviceType());
596 - UUID deviceProfileId = new UUID(sessionInfo.getDeviceProfileIdMSB(),sessionInfo.getDeviceProfileIdLSB());  
597 - metaData.putValue("device_profile_id", deviceProfileId.toString());  
598 metaData.putValue("deviceId",eventInfo[0]); 596 metaData.putValue("deviceId",eventInfo[0]);
599 metaData.putValue("event_identifier", eventInfo[1]); 597 metaData.putValue("event_identifier", eventInfo[1]);
600 sendToRuleEngine(tenantId, deviceId, customerId, sessionInfo, json, metaData, SessionMsgType.POST_EVENT_REQUEST, 598 sendToRuleEngine(tenantId, deviceId, customerId, sessionInfo, json, metaData, SessionMsgType.POST_EVENT_REQUEST,
@@ -20,6 +20,7 @@ import org.thingsboard.rule.engine.api.*; @@ -20,6 +20,7 @@ import org.thingsboard.rule.engine.api.*;
20 import org.thingsboard.rule.engine.api.util.TbNodeUtils; 20 import org.thingsboard.rule.engine.api.util.TbNodeUtils;
21 import org.thingsboard.rule.engine.telemetry.TelemetryNodeCallback; 21 import org.thingsboard.rule.engine.telemetry.TelemetryNodeCallback;
22 import org.thingsboard.server.common.data.DeviceProfile; 22 import org.thingsboard.server.common.data.DeviceProfile;
  23 +import org.thingsboard.server.common.data.id.DeviceId;
23 import org.thingsboard.server.common.data.id.DeviceProfileId; 24 import org.thingsboard.server.common.data.id.DeviceProfileId;
24 import org.thingsboard.server.common.data.id.TenantId; 25 import org.thingsboard.server.common.data.id.TenantId;
25 import org.thingsboard.server.common.data.plugin.ComponentType; 26 import org.thingsboard.server.common.data.plugin.ComponentType;
@@ -66,11 +67,15 @@ public class TkMsgEventNode implements TbNode { @@ -66,11 +67,15 @@ public class TkMsgEventNode implements TbNode {
66 ctx.tellFailure(msg, new IllegalArgumentException("Unsupported msg type: " + msg.getType())); 67 ctx.tellFailure(msg, new IllegalArgumentException("Unsupported msg type: " + msg.getType()));
67 return; 68 return;
68 } 69 }
69 - String deviceProfileId = msg.getMetaData().getValue(DEVICE_DEVICE_PROFILE_ID_PROPERTY);  
70 - TenantId tenantId = ctx.getTenantId();  
71 - DeviceProfileId profileId = new DeviceProfileId(UUID.fromString(deviceProfileId));  
72 - DeviceProfile profile = cache.get(tenantId,profileId); 70 + String deviceIdStr = msg.getMetaData().getValue("deviceId");
  71 + DeviceId deviceId = DeviceId.fromString(deviceIdStr);
73 String eventIdentifier = msg.getMetaData().getValue(EVENT_IDENTIFIER_COLUMN); 72 String eventIdentifier = msg.getMetaData().getValue(EVENT_IDENTIFIER_COLUMN);
  73 + TenantId tenantId = ctx.getTenantId();
  74 + DeviceProfile profile = cache.get(tenantId,deviceId);
  75 + if(profile == null){
  76 + ctx.tellFailure(msg,new TbNodeException(String.format("设备【%s】不存在。", deviceIdStr)));
  77 + return;
  78 + }
74 List<TkThingsModel> eventList =profile.getProfileData().getThingsModel().stream() 79 List<TkThingsModel> eventList =profile.getProfileData().getThingsModel().stream()
75 .filter(f -> f.getIdentifier().equals(eventIdentifier) && FunctionTypeEnum.events.equals(f.getFunctionType())) 80 .filter(f -> f.getIdentifier().equals(eventIdentifier) && FunctionTypeEnum.events.equals(f.getFunctionType()))
76 .collect(Collectors.toList()); 81 .collect(Collectors.toList());
@@ -90,7 +95,7 @@ public class TkMsgEventNode implements TbNode { @@ -90,7 +95,7 @@ public class TkMsgEventNode implements TbNode {
90 long ts = System.currentTimeMillis(); 95 long ts = System.currentTimeMillis();
91 String src = msg.getData(); 96 String src = msg.getData();
92 ctx.getTelemetryService().saveAndNotify( 97 ctx.getTelemetryService().saveAndNotify(
93 - tenantId,profileId, 98 + tenantId,profile.getId(),
94 msg.getOriginator(), 99 msg.getOriginator(),
95 entryList, 100 entryList,
96 src,ts, 101 src,ts,