【功能新增】IoT:增加 ota 的表结构设计(90%)

This commit is contained in:
YunaiV 2025-02-05 23:15:43 +08:00
parent b46e630912
commit 00edd5a724
5 changed files with 229 additions and 0 deletions

View File

@ -0,0 +1,81 @@
package cn.iocoder.yudao.module.iot.dal.dataobject.ota;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
/**
* IoT OTA 固件 DO
*
* @see <a href="阿里云 IoT - OTA 升级">https://help.aliyun.com/zh/iot/user-guide/ota-upgrade-overview</a>
*
* @author 芋道源码
*/
@TableName(value = "iot_ota_firmware", autoResultMap = true)
@KeySequence("iot_ota_firmware_seq") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 MySQL 等数据库可不写
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class IotOtaFirmwareDO extends BaseDO {
/**
* 固件编号
*/
@TableField
private Long id;
/**
* 固件名称
*/
private String name;
/**
* 固件版本
*/
private String description;
/**
* 版本号
*/
private String version;
/**
* 产品编号
*
* 关联 {@link cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO#getId()}
*/
private String productId;
/**
* 产品标识
*
* 冗余 {@link cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO#getProductKey()}
*/
private String productKey;
/**
* 签名方式
*
* 例如说MD5SHA256
*/
private String signMethod;
/**
* 固件文件签名
*/
private String fileSign;
/**
* 固件文件大小
*/
private Long fileSize;
/**
* 固件文件 URL
*/
private String fileUrl;
/**
* 自定义信息建议使用 JSON 格式
*/
private String information;
}

View File

@ -0,0 +1,83 @@
package cn.iocoder.yudao.module.iot.dal.dataobject.ota;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.time.LocalDateTime;
/**
* IoT OTA 升级记录 DO
*
* @author 芋道源码
*/
@TableName(value = "iot_ota_upgrade_record", autoResultMap = true)
@KeySequence("iot_ota_upgrade_record_seq") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 MySQL 等数据库可不写
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class IotOtaUpgradeRecordDO extends BaseDO {
@TableId
private Long id;
/**
* 固件编号
*
* 关联 {@link IotOtaFirmwareDO#getId()}
*/
private Long firmwareId;
/**
* 任务编号
*
* 关联 {@link IotOtaUpgradeTaskDO#getId()}
*/
private Long taskId;
/**
* 升级状态
*
* TODO
*/
private Integer status;
/**
* 升级进度百分比
*/
private Integer progress;
/**
* 产品标识
*
* 关联 {@link cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO#getId()}
*/
private String productKey;
/**
* 设备名称
*
* 关联 {@link cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO#getId()}
*/
private String deviceName;
/**
* 设备编号
*
* 关联 {@link cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO#getId()}
*/
private String deviceId;
/**
* 升级开始时间
*/
private LocalDateTime startTime;
/**
* 升级结束时间
*/
private LocalDateTime endTime;
}

View File

@ -0,0 +1,63 @@
package cn.iocoder.yudao.module.iot.dal.dataobject.ota;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.*;
import java.util.List;
/**
* IoT OTA 升级任务 DO
*
* @author 芋道源码
*/
@TableName(value = "iot_ota_upgrade_task", autoResultMap = true)
@KeySequence("iot_ota_upgrade_task_seq") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 MySQL 等数据库可不写
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class IotOtaUpgradeTaskDO extends BaseDO {
/**
* 任务编号
*/
@TableField
private Long id;
/**
* 任务名称
*/
private String name;
/**
* 任务描述
*/
private String description;
/**
* 固件编号
*
* 关联 {@link IotOtaFirmwareDO#getId()}
*/
private Long firmwareId;
/**
* 任务类型
*
* TODO @芋艿1-全部2-指定设备
*/
private Integer type;
/**
* 选中的设备名字数组
*
* 关联 {@link IotDeviceDO#getDeviceName()}
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private List<String> deviceNames;
}

View File

@ -63,6 +63,7 @@ public class IotAlertRecordDO extends BaseDO {
@TableField(typeHandler = JacksonTypeHandler.class)
private IotDeviceMessage deviceMessage;
// TODO @芋艿换成枚举枚举对应 ApiErrorLogProcessStatusEnum
/**
* 处理状态
*

View File

@ -57,6 +57,7 @@ public class IotDeviceDownstreamServiceImpl implements IotDeviceDownstreamServic
public IotDeviceMessage downstreamDevice(IotDeviceDownstreamReqVO downstreamReqVO) {
// 校验设备是否存在
IotDeviceDO device = deviceService.validateDeviceExists(downstreamReqVO.getId());
// TODO @芋艿离线设备不允许推送
// TODO 芋艿父设备的处理
IotDeviceDO parentDevice = null;