Quellcode durchsuchen

【功能修复】IoT:插件还是考虑支持多租户,因此需要忽略部分场景下的租户,避免报错

YunaiV vor 6 Monaten
Ursprung
Commit
795e06bc8f

+ 2 - 3
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/plugin/IotPluginConfigDO.java

@@ -1,9 +1,8 @@
 package cn.iocoder.yudao.module.iot.dal.dataobject.plugin;
 
 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
 import cn.iocoder.yudao.module.iot.enums.plugin.IotPluginDeployTypeEnum;
-import cn.iocoder.yudao.module.iot.enums.plugin.IotPluginStatusEnum;
 import cn.iocoder.yudao.module.iot.enums.plugin.IotPluginTypeEnum;
 import com.baomidou.mybatisplus.annotation.KeySequence;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -23,7 +22,7 @@ import lombok.*;
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class IotPluginConfigDO extends BaseDO {
+public class IotPluginConfigDO extends TenantBaseDO {
 
     /**
      * 主键 ID

+ 2 - 2
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/plugin/IotPluginInstanceDO.java

@@ -1,6 +1,6 @@
 package cn.iocoder.yudao.module.iot.dal.dataobject.plugin;
 
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
 import com.baomidou.mybatisplus.annotation.KeySequence;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -21,7 +21,7 @@ import java.time.LocalDateTime;
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class IotPluginInstanceDO extends BaseDO {
+public class IotPluginInstanceDO extends TenantBaseDO {
 
     /**
      * 主键

+ 2 - 0
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/job/plugin/IotPluginInstancesJob.java

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.iot.job.plugin;
 
 import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
+import cn.iocoder.yudao.framework.tenant.core.job.TenantJob;
 import cn.iocoder.yudao.module.iot.service.plugin.IotPluginInstanceService;
 import org.springframework.stereotype.Component;
 
@@ -28,6 +29,7 @@ public class IotPluginInstancesJob implements JobHandler {
     private IotPluginInstanceService pluginInstanceService;
 
     @Override
+    @TenantJob
     public String execute(String param) {
         int count = pluginInstanceService.offlineTimeoutPluginInstance(
                 LocalDateTime.now().minus(OFFLINE_TIMEOUT));

+ 9 - 4
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/plugin/IotPluginInstanceServiceImpl.java

@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.iot.service.plugin;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
 import cn.iocoder.yudao.module.iot.api.device.dto.control.upstream.IotPluginInstanceHeartbeatReqDTO;
 import cn.iocoder.yudao.module.iot.dal.dataobject.plugin.IotPluginConfigDO;
 import cn.iocoder.yudao.module.iot.dal.dataobject.plugin.IotPluginInstanceDO;
@@ -62,7 +63,8 @@ public class IotPluginInstanceServiceImpl implements IotPluginInstanceService {
     @Override
     public void heartbeatPluginInstance(IotPluginInstanceHeartbeatReqDTO heartbeatReqDTO) {
         // 情况一:已存在,则进行更新
-        IotPluginInstanceDO instance = pluginInstanceMapper.selectByProcessId(heartbeatReqDTO.getProcessId());
+        IotPluginInstanceDO instance = TenantUtils.executeIgnore(
+                () -> pluginInstanceMapper.selectByProcessId(heartbeatReqDTO.getProcessId()));
         if (instance != null) {
             IotPluginInstanceDO.IotPluginInstanceDOBuilder updateObj = IotPluginInstanceDO.builder().id(instance.getId())
                     .hostIp(heartbeatReqDTO.getHostIp()).downstreamPort(heartbeatReqDTO.getDownstreamPort())
@@ -74,12 +76,14 @@ public class IotPluginInstanceServiceImpl implements IotPluginInstanceService {
             } else {
                 updateObj.offlineTime(LocalDateTime.now());
             }
-            pluginInstanceMapper.updateById(updateObj.build());
+            TenantUtils.execute(instance.getTenantId(),
+                    () -> pluginInstanceMapper.updateById(updateObj.build()));
             return;
         }
 
         // 情况二:不存在,则创建
-        IotPluginConfigDO info = pluginConfigService.getPluginConfigByPluginKey(heartbeatReqDTO.getPluginKey());
+        IotPluginConfigDO info = TenantUtils.executeIgnore(
+                () -> pluginConfigService.getPluginConfigByPluginKey(heartbeatReqDTO.getPluginKey()));
         if (info == null) {
             log.error("[heartbeatPluginInstance][心跳({}) 对应的插件不存在]", heartbeatReqDTO);
             return;
@@ -93,7 +97,8 @@ public class IotPluginInstanceServiceImpl implements IotPluginInstanceService {
         } else {
             insertObj.offlineTime(LocalDateTime.now());
         }
-        pluginInstanceMapper.insert(insertObj.build());
+        TenantUtils.execute(info.getTenantId(),
+                () -> pluginInstanceMapper.insert(insertObj.build()));
     }
 
     @Override