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

This commit is contained in:
YunaiV 2025-02-07 21:06:03 +08:00
parent 8fac009d4b
commit 795e06bc8f
4 changed files with 15 additions and 9 deletions

View File

@ -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

View File

@ -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 {
/**
* 主键

View File

@ -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));

View File

@ -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