【功能新增】IoT:增加 ota 的表结构设计(90%)
This commit is contained in:
parent
b46e630912
commit
00edd5a724
|
@ -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") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 签名方式
|
||||||
|
*
|
||||||
|
* 例如说:MD5、SHA256
|
||||||
|
*/
|
||||||
|
private String signMethod;
|
||||||
|
/**
|
||||||
|
* 固件文件签名
|
||||||
|
*/
|
||||||
|
private String fileSign;
|
||||||
|
/**
|
||||||
|
* 固件文件大小
|
||||||
|
*/
|
||||||
|
private Long fileSize;
|
||||||
|
/**
|
||||||
|
* 固件文件 URL
|
||||||
|
*/
|
||||||
|
private String fileUrl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义信息,建议使用 JSON 格式
|
||||||
|
*/
|
||||||
|
private String information;
|
||||||
|
|
||||||
|
}
|
|
@ -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") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 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;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -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") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 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;
|
||||||
|
|
||||||
|
}
|
|
@ -63,6 +63,7 @@ public class IotAlertRecordDO extends BaseDO {
|
||||||
@TableField(typeHandler = JacksonTypeHandler.class)
|
@TableField(typeHandler = JacksonTypeHandler.class)
|
||||||
private IotDeviceMessage deviceMessage;
|
private IotDeviceMessage deviceMessage;
|
||||||
|
|
||||||
|
// TODO @芋艿:换成枚举,枚举对应 ApiErrorLogProcessStatusEnum
|
||||||
/**
|
/**
|
||||||
* 处理状态
|
* 处理状态
|
||||||
*
|
*
|
||||||
|
|
|
@ -57,6 +57,7 @@ public class IotDeviceDownstreamServiceImpl implements IotDeviceDownstreamServic
|
||||||
public IotDeviceMessage downstreamDevice(IotDeviceDownstreamReqVO downstreamReqVO) {
|
public IotDeviceMessage downstreamDevice(IotDeviceDownstreamReqVO downstreamReqVO) {
|
||||||
// 校验设备是否存在
|
// 校验设备是否存在
|
||||||
IotDeviceDO device = deviceService.validateDeviceExists(downstreamReqVO.getId());
|
IotDeviceDO device = deviceService.validateDeviceExists(downstreamReqVO.getId());
|
||||||
|
// TODO @芋艿:离线设备,不允许推送
|
||||||
// TODO 芋艿:父设备的处理
|
// TODO 芋艿:父设备的处理
|
||||||
IotDeviceDO parentDevice = null;
|
IotDeviceDO parentDevice = null;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue