From 887bf175affa1c88ebad5870f87a3ade899bd259 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Tue, 19 Aug 2025 23:49:17 +0800 Subject: [PATCH] =?UTF-8?q?review=EF=BC=9A=E3=80=90iot=20=E7=89=A9?= =?UTF-8?q?=E8=81=94=E7=BD=91=E3=80=91=E5=9C=BA=E6=99=AF=E8=81=94=E5=8A=A8?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/enums/rule/IotSceneRuleTriggerTypeEnum.java | 12 ------------ .../scene/matcher/IotSceneRuleMatcherManager.java | 10 +++++----- .../condition/CurrentTimeConditionMatcher.java | 1 + .../condition/DevicePropertyConditionMatcher.java | 1 + .../DeviceServiceInvokeTriggerMatcherTest.java | 1 + 5 files changed, 8 insertions(+), 17 deletions(-) diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/enums/rule/IotSceneRuleTriggerTypeEnum.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/enums/rule/IotSceneRuleTriggerTypeEnum.java index a0f268902d..bfc84c9f60 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/enums/rule/IotSceneRuleTriggerTypeEnum.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/enums/rule/IotSceneRuleTriggerTypeEnum.java @@ -64,17 +64,5 @@ public enum IotSceneRuleTriggerTypeEnum implements ArrayValuable { public static IotSceneRuleTriggerTypeEnum typeOf(Integer type) { return ArrayUtil.firstMatch(item -> item.getType().equals(type), values()); } - /** - * 根据类型值查找触发器类型枚举 - * - * @param typeValue 类型值 - * @return 触发器类型枚举 - */ - public static IotSceneRuleTriggerTypeEnum findTriggerTypeEnum(Integer typeValue) { - return Arrays.stream(IotSceneRuleTriggerTypeEnum.values()) - .filter(type -> type.getType().equals(typeValue)) - .findFirst() - .orElse(null); - } } diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/IotSceneRuleMatcherManager.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/IotSceneRuleMatcherManager.java index 2f6ace2616..103c09a1eb 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/IotSceneRuleMatcherManager.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/IotSceneRuleMatcherManager.java @@ -29,21 +29,18 @@ public class IotSceneRuleMatcherManager { /** * 触发器匹配器映射表 - * Key: 触发器类型枚举 - * Value: 对应的匹配器实例 */ private final Map triggerMatchers; /** * 条件匹配器映射表 - * Key: 条件类型枚举 - * Value: 对应的匹配器实例 */ private final Map conditionMatchers; /** * 所有匹配器列表(按优先级排序) */ + // TODO @puhui999:貌似 local variable 也可以 private final List allMatchers; public IotSceneRuleMatcherManager(List matchers) { @@ -152,13 +149,13 @@ public class IotSceneRuleMatcherManager { log.warn("[isConditionMatched][conditionType({}) 未知的条件类型]", condition.getType()); return false; } - IotSceneRuleConditionMatcher matcher = conditionMatchers.get(conditionType); if (matcher == null) { log.warn("[isConditionMatched][conditionType({}) 没有对应的匹配器]", conditionType); return false; } + // 执行匹配逻辑 try { return matcher.isMatched(message, condition); } catch (Exception e) { @@ -174,12 +171,15 @@ public class IotSceneRuleMatcherManager { * @return 条件类型枚举 */ private IotSceneRuleConditionTypeEnum findConditionTypeEnum(Integer typeValue) { + // TODO @puhui999:是不是搞到枚举类里? return Arrays.stream(IotSceneRuleConditionTypeEnum.values()) .filter(type -> type.getType().equals(typeValue)) .findFirst() .orElse(null); } + // TODO @puhui999:下面两个方法,是不是也可以删除哈? + /** * 获取所有支持的触发器类型 * diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/CurrentTimeConditionMatcher.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/CurrentTimeConditionMatcher.java index 0756c86ac3..0daf4eefd5 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/CurrentTimeConditionMatcher.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/CurrentTimeConditionMatcher.java @@ -123,6 +123,7 @@ public class CurrentTimeConditionMatcher implements IotSceneRuleConditionMatcher isDateTimeOperator(operatorEnum); } + // TODO @puhui999:switch 兼容下 jdk8 /** * 匹配日期时间(时间戳) * 直接实现时间戳比较逻辑 diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DevicePropertyConditionMatcher.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DevicePropertyConditionMatcher.java index 0e16df7019..e6fe043d0a 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DevicePropertyConditionMatcher.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/condition/DevicePropertyConditionMatcher.java @@ -22,6 +22,7 @@ public class DevicePropertyConditionMatcher implements IotSceneRuleConditionMatc return IotSceneRuleConditionTypeEnum.DEVICE_PROPERTY; } + // TODO @puhui999:matches 会不会更好?参考的 org.hamcrest.Matcher jdk 接口 @Override public boolean isMatched(IotDeviceMessage message, IotSceneRuleDO.TriggerCondition condition) { // 1.1 基础参数校验 diff --git a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceServiceInvokeTriggerMatcherTest.java b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceServiceInvokeTriggerMatcherTest.java index addb1c5277..6aef51cf71 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceServiceInvokeTriggerMatcherTest.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/test/java/cn/iocoder/yudao/module/iot/service/rule/scene/matcher/trigger/DeviceServiceInvokeTriggerMatcherTest.java @@ -31,6 +31,7 @@ public class DeviceServiceInvokeTriggerMatcherTest extends BaseMockitoUnitTest { @Test public void testGetSupportedTriggerType() { // when & then + // TODO @puhui999:单测按照现有项目的注释风格哈;类似 // 调用;// 断言 assertEquals(IotSceneRuleTriggerTypeEnum.DEVICE_SERVICE_INVOKE, matcher.getSupportedTriggerType()); }