liuxiulin 4 saat önce
ebeveyn
işleme
e3746b0ade

+ 5 - 1
services/scene-service/internal/service/manager/device_status.go

@@ -167,15 +167,19 @@ func (d *DeviceSceneService) checkDeviceCondition(config DeviceSceneConfig) (Che
 	switch config.DecisionExpr {
 	case "and":
 		for _, v := range results {
+			checkResult.Result = true
 			if !v {
 				checkResult.Result = false
+				break
 			}
 		}
-		checkResult.Result = true
+
 	case "or":
+		checkResult.Result = false
 		for _, v := range results {
 			if v {
 				checkResult.Result = true
+				break
 			}
 		}
 	default:

+ 4 - 2
services/scene-service/internal/service/manager/weather.go

@@ -169,19 +169,21 @@ func (w *WeatherSceneService) checkWeatherCondition(config WeatherSceneConfig) (
 	switch config.DecisionExpr {
 	case "and":
 		for _, v := range results {
+			checkResult.Result = true
 			if !v {
 				checkResult.Result = false
+				break
 			}
 		}
-		checkResult.Result = true
 
 	case "or":
+		checkResult.Result = false
 		for _, v := range results {
 			if v {
 				checkResult.Result = true
+				break
 			}
 		}
-		checkResult.Result = false
 	default:
 		err = errors.New("无效的判断逻辑")
 	}