Bläddra i källkod

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

YunaiV 6 månader sedan
förälder
incheckning
00edd5a724

+ 81 - 0
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/ota/IotOtaFirmwareDO.java

@@ -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;
+
+}

+ 83 - 0
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/ota/IotOtaUpgradeRecordDO.java

@@ -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;
+
+
+
+}

+ 63 - 0
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/ota/IotOtaUpgradeTaskDO.java

@@ -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;
+
+}

+ 1 - 0
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/rule/IotAlertRecordDO.java

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

+ 1 - 0
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/control/IotDeviceDownstreamServiceImpl.java

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