Commit d9b62aea2503af568a9972b4702421a065d45fce

Authored by 芯火源
1 parent 5bd06662

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

... ... @@ -593,8 +593,6 @@ public class DefaultTransportService implements TransportService {
593 593 DeviceId deviceId = new DeviceId(new UUID(sessionInfo.getDeviceIdMSB(), sessionInfo.getDeviceIdLSB()));
594 594 metaData.putValue("deviceName", sessionInfo.getDeviceName());
595 595 metaData.putValue("deviceType", sessionInfo.getDeviceType());
596   - UUID deviceProfileId = new UUID(sessionInfo.getDeviceProfileIdMSB(),sessionInfo.getDeviceProfileIdLSB());
597   - metaData.putValue("device_profile_id", deviceProfileId.toString());
598 596 metaData.putValue("deviceId",eventInfo[0]);
599 597 metaData.putValue("event_identifier", eventInfo[1]);
600 598 sendToRuleEngine(tenantId, deviceId, customerId, sessionInfo, json, metaData, SessionMsgType.POST_EVENT_REQUEST,
... ...
... ... @@ -20,6 +20,7 @@ import org.thingsboard.rule.engine.api.*;
20 20 import org.thingsboard.rule.engine.api.util.TbNodeUtils;
21 21 import org.thingsboard.rule.engine.telemetry.TelemetryNodeCallback;
22 22 import org.thingsboard.server.common.data.DeviceProfile;
  23 +import org.thingsboard.server.common.data.id.DeviceId;
23 24 import org.thingsboard.server.common.data.id.DeviceProfileId;
24 25 import org.thingsboard.server.common.data.id.TenantId;
25 26 import org.thingsboard.server.common.data.plugin.ComponentType;
... ... @@ -66,11 +67,15 @@ public class TkMsgEventNode implements TbNode {
66 67 ctx.tellFailure(msg, new IllegalArgumentException("Unsupported msg type: " + msg.getType()));
67 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 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 79 List<TkThingsModel> eventList =profile.getProfileData().getThingsModel().stream()
75 80 .filter(f -> f.getIdentifier().equals(eventIdentifier) && FunctionTypeEnum.events.equals(f.getFunctionType()))
76 81 .collect(Collectors.toList());
... ... @@ -90,7 +95,7 @@ public class TkMsgEventNode implements TbNode {
90 95 long ts = System.currentTimeMillis();
91 96 String src = msg.getData();
92 97 ctx.getTelemetryService().saveAndNotify(
93   - tenantId,profileId,
  98 + tenantId,profile.getId(),
94 99 msg.getOriginator(),
95 100 entryList,
96 101 src,ts,
... ...