浏览代码

add 设置网桥初始值

18339543638 4 年之前
父节点
当前提交
1aac33224d

+ 1 - 1
jetlinks-manager/bridge-manager/src/main/java/org/jetlinks/community/bridge/entity/AliIotBridgeEntity.java

@@ -56,7 +56,7 @@ public class AliIotBridgeEntity extends GenericEntity<String>  implements Record
         description = "状态"
         , defaultValue = "running"
     )
-    private BridgeStatus state=BridgeStatus.running;
+    private BridgeStatus state;
 
     @Comment("失败原因")
     @Column(name = "error_reason")

+ 2 - 1
jetlinks-manager/bridge-manager/src/main/java/org/jetlinks/community/bridge/enums/BridgeStatus.java

@@ -16,8 +16,9 @@ import org.hswebframework.web.dict.EnumDict;
 @AllArgsConstructor
 @Dict("bridge-status")
 public enum BridgeStatus implements EnumDict<String> {
+    starting("启动中"),
     running("运行中"),
-    fail("运行失败"),
+    fail("启动失败"),
     del("已删除"),
     stop("暂停");
 

+ 5 - 3
jetlinks-manager/bridge-manager/src/main/java/org/jetlinks/community/bridge/server/aliyun/AliBridgeServer.java

@@ -8,10 +8,8 @@ import com.aliyun.iot.as.bridge.core.config.BridgeConfigConsts;
 import com.aliyun.iot.as.bridge.core.handler.DownlinkChannelHandler;
 import com.aliyun.iot.as.bridge.core.model.PopClientConfiguration;
 import com.aliyun.iot.as.bridge.core.model.Session;
-import com.aliyun.openservices.iot.api.exception.IotClientException;
 import lombok.*;
 import lombok.extern.slf4j.Slf4j;
-import org.hswebframework.web.exception.BusinessException;
 import org.jetlinks.community.bridge.core.DefaultBridgeBootstrap;
 import org.jetlinks.community.bridge.core.DefaultBridgeConfigManager;
 import org.jetlinks.community.bridge.core.DefaultDeviceConfigManager;
@@ -103,7 +101,7 @@ public class AliBridgeServer extends AbstractClusterUniqueTask<AliBridgeServer>
             getClusterOperationTopic().publish(Mono.just(OperationMessage.builder().param(params).init(true).build())).subscribe();
         }
         //非主节点、非运行状态、已启动
-        if(isReplica()||!BridgeStatus.running.equals(params.getState())||start.get()){
+        if(isReplica()||(!BridgeStatus.running.equals(params.getState())&&!BridgeStatus.starting.equals(params.getState()))||start.get()){
             return Mono.just(this);
         }
         if (start.compareAndSet(false, true)) {
@@ -125,6 +123,8 @@ public class AliBridgeServer extends AbstractClusterUniqueTask<AliBridgeServer>
                     }
                 });
             })
+                .flatMap(ignore->bridgeService.createUpdate().set(AliIotBridgeEntity::getState,BridgeStatus.running)
+                    .where(AliIotBridgeEntity::getId,id).execute())
                 .onErrorResume(RuntimeException.class,
                     e->Mono.just(isReplica())
                         .filter(Boolean.FALSE::equals)
@@ -352,6 +352,8 @@ public class AliBridgeServer extends AbstractClusterUniqueTask<AliBridgeServer>
                 return bridgeGateway.delBridgeServer(id,broadcast);
             case stop:
                 return bridgeGateway.pauseBridge(id,broadcast);
+            case starting:
+                return bridgeGateway.initBridge(params,broadcast);
             case running:
                 return bridgeGateway.initBridge(params,broadcast);
             case fail:

+ 1 - 3
jetlinks-manager/bridge-manager/src/main/java/org/jetlinks/community/bridge/web/AliBridgeServerController.java

@@ -97,7 +97,6 @@ public class AliBridgeServerController implements
                             existBridge.register(id,config.getOriginalIdentity(),config.getProductKey(),
                                 config.getDeviceName(),config.getDeviceSecret(),config.getProductId(),true))
                     )
-                    .delayElement(Duration.ofSeconds(5))
                     .flatMap(ignore->bridgeDeviceService.findById(config.getId()))
                     .filter(deviceConfig->deviceConfig.getState().eq(BridgeDeviceStatus.fail))
                     .flatMap(deviceConfig->Mono.error(new BusinessException("网桥注册设备失败,"+deviceConfig.getErrorReason())))
@@ -152,11 +151,10 @@ public class AliBridgeServerController implements
             bridge.setId(String.valueOf(System.currentTimeMillis()));
         }
         //默认状态为running
-        bridge.setState(BridgeStatus.running);
+        bridge.setState(BridgeStatus.starting);
         return bridgeService.save(bridge)
             .flatMap(ignore->
                 bridgeGateway.replaceBridgeServer(bridge,true)
-                    .delayElement(Duration.ofSeconds(5))
                     .flatMap(__->bridgeService.findById(bridge.getId()))
                     .filter(result->BridgeStatus.fail.eq(result.getState()))
                     .flatMap(result->Mono.error(new BusinessException("网桥信息有误,"+result.getErrorReason()))))