【功能修复】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; package cn.iocoder.yudao.module.iot.dal.dataobject.plugin;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 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.IotPluginDeployTypeEnum;
import cn.iocoder.yudao.module.iot.enums.plugin.IotPluginStatusEnum;
import cn.iocoder.yudao.module.iot.enums.plugin.IotPluginTypeEnum; import cn.iocoder.yudao.module.iot.enums.plugin.IotPluginTypeEnum;
import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
@ -23,7 +22,7 @@ import lombok.*;
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class IotPluginConfigDO extends BaseDO { public class IotPluginConfigDO extends TenantBaseDO {
/** /**
* 主键 ID * 主键 ID

View File

@ -1,6 +1,6 @@
package cn.iocoder.yudao.module.iot.dal.dataobject.plugin; 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.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
@ -21,7 +21,7 @@ import java.time.LocalDateTime;
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @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.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; 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 cn.iocoder.yudao.module.iot.service.plugin.IotPluginInstanceService;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -28,6 +29,7 @@ public class IotPluginInstancesJob implements JobHandler {
private IotPluginInstanceService pluginInstanceService; private IotPluginInstanceService pluginInstanceService;
@Override @Override
@TenantJob
public String execute(String param) { public String execute(String param) {
int count = pluginInstanceService.offlineTimeoutPluginInstance( int count = pluginInstanceService.offlineTimeoutPluginInstance(
LocalDateTime.now().minus(OFFLINE_TIMEOUT)); 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.collection.CollUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil; 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.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.IotPluginConfigDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.plugin.IotPluginInstanceDO; import cn.iocoder.yudao.module.iot.dal.dataobject.plugin.IotPluginInstanceDO;
@ -62,7 +63,8 @@ public class IotPluginInstanceServiceImpl implements IotPluginInstanceService {
@Override @Override
public void heartbeatPluginInstance(IotPluginInstanceHeartbeatReqDTO heartbeatReqDTO) { public void heartbeatPluginInstance(IotPluginInstanceHeartbeatReqDTO heartbeatReqDTO) {
// 情况一已存在则进行更新 // 情况一已存在则进行更新
IotPluginInstanceDO instance = pluginInstanceMapper.selectByProcessId(heartbeatReqDTO.getProcessId()); IotPluginInstanceDO instance = TenantUtils.executeIgnore(
() -> pluginInstanceMapper.selectByProcessId(heartbeatReqDTO.getProcessId()));
if (instance != null) { if (instance != null) {
IotPluginInstanceDO.IotPluginInstanceDOBuilder updateObj = IotPluginInstanceDO.builder().id(instance.getId()) IotPluginInstanceDO.IotPluginInstanceDOBuilder updateObj = IotPluginInstanceDO.builder().id(instance.getId())
.hostIp(heartbeatReqDTO.getHostIp()).downstreamPort(heartbeatReqDTO.getDownstreamPort()) .hostIp(heartbeatReqDTO.getHostIp()).downstreamPort(heartbeatReqDTO.getDownstreamPort())
@ -74,12 +76,14 @@ public class IotPluginInstanceServiceImpl implements IotPluginInstanceService {
} else { } else {
updateObj.offlineTime(LocalDateTime.now()); updateObj.offlineTime(LocalDateTime.now());
} }
pluginInstanceMapper.updateById(updateObj.build()); TenantUtils.execute(instance.getTenantId(),
() -> pluginInstanceMapper.updateById(updateObj.build()));
return; return;
} }
// 情况二不存在则创建 // 情况二不存在则创建
IotPluginConfigDO info = pluginConfigService.getPluginConfigByPluginKey(heartbeatReqDTO.getPluginKey()); IotPluginConfigDO info = TenantUtils.executeIgnore(
() -> pluginConfigService.getPluginConfigByPluginKey(heartbeatReqDTO.getPluginKey()));
if (info == null) { if (info == null) {
log.error("[heartbeatPluginInstance][心跳({}) 对应的插件不存在]", heartbeatReqDTO); log.error("[heartbeatPluginInstance][心跳({}) 对应的插件不存在]", heartbeatReqDTO);
return; return;
@ -93,7 +97,8 @@ public class IotPluginInstanceServiceImpl implements IotPluginInstanceService {
} else { } else {
insertObj.offlineTime(LocalDateTime.now()); insertObj.offlineTime(LocalDateTime.now());
} }
pluginInstanceMapper.insert(insertObj.build()); TenantUtils.execute(info.getTenantId(),
() -> pluginInstanceMapper.insert(insertObj.build()));
} }
@Override @Override