Bladeren bron

server info 代码提交

jingyuanchao 1 jaar geleden
bovenliggende
commit
25daf3f778

+ 1 - 0
project_data/sql/0.1.1/soc/soc.sql

@@ -387,6 +387,7 @@ CREATE TABLE `iot_server_info` (
        `iot_ip` varchar(125) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'ip地址',
        `register_code` varchar(125) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '临时注册码',
        `register_code_status` int DEFAULT NULL COMMENT '临时注册码状态,0:未使用,1:已使用',
+       `enable` int DEFAULT 0 COMMENT '是否启用,0:正常,1:停用',
        `create_by` varchar(125) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
        `create_time` datetime DEFAULT NULL COMMENT '创建时间',
        `update_by` varchar(125) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人',

+ 5 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotServerInfo.java

@@ -77,6 +77,11 @@ public class IotServerInfo implements Serializable {
     @TableField("register_code_status")
     private Integer registerCodeStatus;
 
+    @TableField("enable")
+    @ApiModelProperty(value = "是否启用")
+    private Integer enable;
+
+
     @ApiModelProperty(value = "创建人")
     @TableField("create_by")
     private String createBy;

+ 4 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/serverInfo/IotServerInfoEditDto.java

@@ -18,4 +18,8 @@ public class IotServerInfoEditDto {
     @ApiModelProperty(value = "名称")
     private String iotName;
 
+    @NotNull(message = "请选择是否启用")
+    @ApiModelProperty(value = "是否启用")
+    private Integer enable;
+
 }

+ 2 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotServerInfoServiceImpl.java

@@ -73,6 +73,7 @@ public class IotServerInfoServiceImpl extends ServiceImpl<IotServerInfoMapper, I
         serverInfo.setId(IdWorker.getId());
         serverInfo.setRegisterCode(getVerificationCode(collect));
         serverInfo.setRegisterCodeStatus(0);
+        serverInfo.setEnable(req.getEnable());
         serverInfo.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getId().toString());
         serverInfo.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getId().toString());
         serverInfo.setCreateTime(LocalDateTime.now());
@@ -111,6 +112,7 @@ public class IotServerInfoServiceImpl extends ServiceImpl<IotServerInfoMapper, I
             throw new RuntimeException("未找到具体iot服务!");
         }
         info.setIotName(req.getIotName());
+        info.setEnable(req.getEnable());
         updateById(info);
     }
 

+ 34 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/serverInfo/IotServerEnableConverter.java

@@ -0,0 +1,34 @@
+package com.xunmei.iot.vo.serverInfo;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+import com.xunmei.common.core.constant.DictConstants;
+import com.xunmei.common.security.utils.DictUtils;
+
+public class IotServerEnableConverter implements Converter<Integer> {
+
+
+    @Override
+    public Class supportJavaTypeKey() {
+        return null;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return null;
+    }
+
+    @Override
+    public Integer convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        return null;
+    }
+
+    @Override
+    public CellData convertToExcelData(Integer status, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        return new CellData(DictUtils.getDictLabel(DictConstants.SYS_NORMAL_DISABLE, status));
+
+    }
+}

+ 4 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/serverInfo/IotServerInfoPageVo.java

@@ -58,6 +58,10 @@ public class IotServerInfoPageVo implements Serializable {
     @ApiModelProperty(value = "最近一次链接时间")
     private Date lastConnectTime;
 
+    @ExcelProperty(value = "是否启用",converter = IotServerEnableConverter.class)
+    @ApiModelProperty(value = "是否启用")
+    private Integer enable;
+
     @ExcelIgnore
     @ApiModelProperty(value = "组织机构id")
     private Long orgId;

+ 2 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/server/service/impl/IotServerInfoServiceImpl.java

@@ -30,6 +30,7 @@ public class IotServerInfoServiceImpl extends ServiceImpl<IotServerInfoMapper, I
         LambdaQueryWrapper<IotServerInfo> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(IotServerInfo::getRegisterCode, registerCode);
         queryWrapper.eq(IotServerInfo::getRegisterCodeStatus, 0);
+        queryWrapper.eq(IotServerInfo::getEnable, 0);
         queryWrapper.last(Constants.LIMIT1);
         IotServerInfo serverInfo = baseMapper.selectOne(queryWrapper);
         if (serverInfo == null) {
@@ -56,6 +57,7 @@ public class IotServerInfoServiceImpl extends ServiceImpl<IotServerInfoMapper, I
     public IotServerInfo selectByToken(String token) {
         QueryWrapper<IotServerInfo> qw = new QueryWrapper<>();
         qw.lambda().eq(IotServerInfo::getIotCode,token);
+        qw.lambda().eq(IotServerInfo::getEnable,0);
         return baseMapper.selectOne(qw);
     }
 

+ 17 - 8
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/handler/SocWebSocketHandler.java

@@ -85,16 +85,24 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
                     ip = ip.split(",")[0];
                 }
                 if (StringUtils.isNotEmpty(ip))
-                    LogUtils.WEBSOCKET_MSG.info("[建立连接],ip:{}", ip);
+                    LogUtils.WEBSOCKET_MSG.info("[准备建立连接],ip:{}", ip);
             }
             IotServerInfo serverInfo = iotServerInfoService.selectByToken(token);
+            Map<String, Object> map = new HashMap<>();
+            if (serverInfo == null) {
+                map.put("statusDescription", "链接凭证不可用!");
+                map.put("statusCode", WebsocketStatus.ERROR.getStatusCode());
+                WebsocketResult result = createWebsocketResult(null, "login", map);
+                WebSocketUtils.sendMessage(session, JacksonUtils.toJSONString(result));
+                session.close();
+                return;
+            }
             serverInfo.setIotIp(ip);
             serverInfo.setRegisterCodeStatus(1);
             serverInfo.setLastConnectTime(LocalDateTime.now());
             serverInfo.setIotStatus(IotServerConnectStatus.CONNECTED.getIdx());
             iotServerInfoService.updateByToken(serverInfo);
             WebSocketSessionHolder.addSession(token, session);
-            Map<String, Object> map = new HashMap<>();
             map.put("statusCode", WebsocketStatus.SUCCESS.getStatusCode());
             WebsocketResult result = createWebsocketResult(null, "login", map);
             WebSocketUtils.sendMessage(session, JacksonUtils.toJSONString(result));
@@ -126,9 +134,10 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
         // 从WebSocket会话中获取登录用户信息
         String token = WebSocketSessionHolder.updateToken(session);
         String payload = message.getPayload();
-        LogUtils.WEBSOCKET_MSG.info("token:{},接收到消息:{}", token, message.getPayload());
+        final String ip = WebSocketUtils.getIp(session);
+        LogUtils.WEBSOCKET_MSG.info("ip:{},接收到消息:{}", ip, message.getPayload());
         if (payload.isEmpty()) {
-            LogUtils.WEBSOCKET_MSG.error("消息内容为空,token:{}", token);
+            LogUtils.WEBSOCKET_MSG.error("消息内容为空,ip:{}", ip);
             return;
         }
         try {
@@ -137,12 +146,12 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
             WebsocketPayloadResolve payloadResolve = new WebsocketPayloadResolve(websocketResult);
             String topic = payloadResolve.getTopic();
             if (ObjectUtil.isEmpty(obj)) {
-                LogUtils.WEBSOCKET_MSG.error("消息内容为空,topic:{}", topic);
+                LogUtils.WEBSOCKET_MSG.error("消息内容为空,ip:{}", ip);
                 return;
             }
             TopicTypeEnums typeEnums = TopicTypeEnums.matcherTopicTypeEnums(topic);
             if (typeEnums == null) {
-                LogUtils.WEBSOCKET_MSG.error("消息topic错误,topic:{}", topic);
+                LogUtils.WEBSOCKET_MSG.error("消息topic错误,ip:{},topic:{}", ip, topic);
                 return;
             }
             //上报消息内容
@@ -171,9 +180,9 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
                     break;
             }
             WebSocketUtils.sendMessage(session, result);
-            LogUtils.WEBSOCKET_MSG.info("中心平台返回消息,token:{},内容:{}", token, JacksonUtils.toJSONString(result));
+            //LogUtils.WEBSOCKET_MSG.info("中心平台返回 {} 消息,,内容:{}", ip, JacksonUtils.toJSONString(result));
         } catch (Exception e) {
-            LogUtils.WEBSOCKET_MSG.error("消息处理失败:{}", e);
+            LogUtils.WEBSOCKET_MSG.error("消息处理失败,ip:{},异常内容:{}", ip, e);
         }
     }
 

+ 5 - 3
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/service/impl/WebsocketServiceImpl.java

@@ -56,6 +56,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 @Service
 public class WebsocketServiceImpl implements WebsocketService, RouterService {
@@ -959,9 +960,10 @@ public class WebsocketServiceImpl implements WebsocketService, RouterService {
     public Object execute(WebsocketExecuteReq req) {
         try {
             if (WebSocketConstants.GET_DEVICE_BASE_INFOS.equals(req.getEvent())) {
-                JSONArray object = (JSONArray) req.getData();
-                if (ObjectUtil.isNotEmpty(object)) {
-                    final List<DeviceBaseInfo> list = object.toJavaList(DeviceBaseInfo.class);
+                JSONObject object = (JSONObject) req.getData();
+                if (object != null) {
+                    List<JSONObject> deviceBaseInfos = (List<JSONObject>) object.get("deviceBaseInfos");
+                    final List<DeviceBaseInfo> list = deviceBaseInfos.stream().map(r -> JSON.toJavaObject(r, DeviceBaseInfo.class)).collect(Collectors.toList());
                     dealBaseDeviceInfo(list, req.getToken());
                 }
             } else if (WebSocketConstants.GET_ALARM_HOST_DEVICE_INFOS.equals(req.getEvent())) {