Commit 44d7d623b33514d7391ce1a3bc8a99cc3bf18425

Authored by YunaiV
1 parent 08ff69d5

【代码评审】IoT:OTA 的实现

Showing 15 changed files with 73 additions and 59 deletions
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/firmware/IotOtaFirmwareCreateReqVO.java
@@ -27,6 +27,7 @@ public class IotOtaFirmwareCreateReqVO { @@ -27,6 +27,7 @@ public class IotOtaFirmwareCreateReqVO {
27 private String productId; 27 private String productId;
28 28
29 @Schema(description = "签名方式", example = "MD5") 29 @Schema(description = "签名方式", example = "MD5")
  30 + // TODO @li:是不是必传哈
30 private String signMethod; 31 private String signMethod;
31 32
32 @Schema(description = "固件文件 URL", requiredMode = REQUIRED, example = "https://www.iocoder.cn/yudao-firmware.zip") 33 @Schema(description = "固件文件 URL", requiredMode = REQUIRED, example = "https://www.iocoder.cn/yudao-firmware.zip")
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/firmware/IotOtaFirmwareUpdateReqVO.java
@@ -7,7 +7,7 @@ import lombok.Data; @@ -7,7 +7,7 @@ import lombok.Data;
7 7
8 import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.REQUIRED; 8 import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.REQUIRED;
9 9
10 -@Schema(description = "管理后台 - OTA固件更新 Request VO") 10 +@Schema(description = "管理后台 - OTA 固件更新 Request VO")
11 @Data 11 @Data
12 public class IotOtaFirmwareUpdateReqVO { 12 public class IotOtaFirmwareUpdateReqVO {
13 13
@@ -15,6 +15,7 @@ public class IotOtaFirmwareUpdateReqVO { @@ -15,6 +15,7 @@ public class IotOtaFirmwareUpdateReqVO {
15 @NotNull(message = "固件编号不能为空") 15 @NotNull(message = "固件编号不能为空")
16 private Long id; 16 private Long id;
17 17
  18 + // TODO @li:name 是不是可以飞必传哈
18 @Schema(description = "固件名称", requiredMode = REQUIRED, example = "智能开关固件") 19 @Schema(description = "固件名称", requiredMode = REQUIRED, example = "智能开关固件")
19 @NotEmpty(message = "固件名称不能为空") 20 @NotEmpty(message = "固件名称不能为空")
20 private String name; 21 private String name;
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/upgrade/record/IotOtaUpgradeRecordPageReqVO.java
@@ -8,16 +8,17 @@ import lombok.Data; @@ -8,16 +8,17 @@ import lombok.Data;
8 import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.REQUIRED; 8 import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.REQUIRED;
9 9
10 @Data 10 @Data
11 -@Schema(description = "管理后台 - OTA升级记录分页 Request VO") 11 +@Schema(description = "管理后台 - OTA 升级记录分页 Request VO")
12 public class IotOtaUpgradeRecordPageReqVO extends PageParam { 12 public class IotOtaUpgradeRecordPageReqVO extends PageParam {
13 13
  14 + // TODO @li:已经有注解,不用重复注释
14 /** 15 /**
15 * 升级任务编号字段。 16 * 升级任务编号字段。
16 * <p> 17 * <p>
17 * 该字段用于标识升级任务的唯一编号,不能为空。 18 * 该字段用于标识升级任务的唯一编号,不能为空。
18 */ 19 */
19 - @NotNull(message = "升级任务编号不能为空")  
20 @Schema(description = "升级任务编号", requiredMode = REQUIRED, example = "1024") 20 @Schema(description = "升级任务编号", requiredMode = REQUIRED, example = "1024")
  21 + @NotNull(message = "升级任务编号不能为空")
21 private Long taskId; 22 private Long taskId;
22 23
23 /** 24 /**
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/upgrade/task/IotOtaUpgradeTaskSaveReqVO.java
@@ -14,9 +14,12 @@ import java.util.List; @@ -14,9 +14,12 @@ import java.util.List;
14 import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.REQUIRED; 14 import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.REQUIRED;
15 15
16 @Data 16 @Data
17 -@Schema(description = "管理后台 - OTA升级任务创建/修改 Request VO") 17 +@Schema(description = "管理后台 - OTA 升级任务创建/修改 Request VO")
18 public class IotOtaUpgradeTaskSaveReqVO { 18 public class IotOtaUpgradeTaskSaveReqVO {
19 19
  20 + // TODO @li:已经有注解,不用重复注释
  21 + // TODO @li: @Schema 写在参数校验前面。先有定义;其他的,也检查下;
  22 +
20 /** 23 /**
21 * 任务名称 24 * 任务名称
22 */ 25 */
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/convert/ota/IotOtaUpgradeRecordConvert.java deleted
1 -package cn.iocoder.yudao.module.iot.convert.ota;  
2 -  
3 -import org.mapstruct.Mapper;  
4 -import org.mapstruct.factory.Mappers;  
5 -  
6 -@Mapper  
7 -public interface IotOtaUpgradeRecordConvert {  
8 -  
9 - IotOtaUpgradeRecordConvert INSTANCE = Mappers.getMapper(IotOtaUpgradeRecordConvert.class);  
10 -  
11 -}  
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/ota/IotOtaFirmwareDO.java
@@ -46,6 +46,7 @@ public class IotOtaFirmwareDO extends BaseDO { @@ -46,6 +46,7 @@ public class IotOtaFirmwareDO extends BaseDO {
46 * 46 *
47 * 关联 {@link cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO#getId()} 47 * 关联 {@link cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO#getId()}
48 */ 48 */
  49 + // TODO @li:帮我改成 Long 哈,写错了
49 private String productId; 50 private String productId;
50 /** 51 /**
51 * 产品标识 52 * 产品标识
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/ota/IotOtaFirmwareMapper.java
@@ -9,11 +9,7 @@ import org.apache.ibatis.annotations.Mapper; @@ -9,11 +9,7 @@ import org.apache.ibatis.annotations.Mapper;
9 9
10 import java.util.List; 10 import java.util.List;
11 11
12 -/**  
13 - * OTA固件 Mapper  
14 - *  
15 - * @author Shelly  
16 - */ 12 +// TODO @li:参考 IotOtaUpgradeRecordMapper 的写法
17 @Mapper 13 @Mapper
18 public interface IotOtaFirmwareMapper extends BaseMapperX<IotOtaFirmwareDO> { 14 public interface IotOtaFirmwareMapper extends BaseMapperX<IotOtaFirmwareDO> {
19 15
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/ota/IotOtaUpgradeRecordMapper.java
@@ -13,14 +13,10 @@ import org.apache.ibatis.annotations.Select; @@ -13,14 +13,10 @@ import org.apache.ibatis.annotations.Select;
13 import java.util.List; 13 import java.util.List;
14 import java.util.Map; 14 import java.util.Map;
15 15
16 -/**  
17 - * OTA 升级记录 Mapper  
18 - *  
19 - * @author Shelly  
20 - */  
21 @Mapper 16 @Mapper
22 public interface IotOtaUpgradeRecordMapper extends BaseMapperX<IotOtaUpgradeRecordDO> { 17 public interface IotOtaUpgradeRecordMapper extends BaseMapperX<IotOtaUpgradeRecordDO> {
23 18
  19 + // TODO @li:selectByFirmwareIdAndTaskIdAndDeviceId;让方法自解释
24 /** 20 /**
25 * 根据条件查询单个OTA升级记录 21 * 根据条件查询单个OTA升级记录
26 * 22 *
@@ -37,6 +33,7 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX&lt;IotOtaUpgradeReco @@ -37,6 +33,7 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX&lt;IotOtaUpgradeReco
37 .eqIfPresent(IotOtaUpgradeRecordDO::getDeviceId, deviceId)); 33 .eqIfPresent(IotOtaUpgradeRecordDO::getDeviceId, deviceId));
38 } 34 }
39 35
  36 + // TODO @li:这个是不是 groupby status 就 ok 拉?
40 /** 37 /**
41 * 根据任务ID和设备名称查询OTA升级记录的状态统计信息。 38 * 根据任务ID和设备名称查询OTA升级记录的状态统计信息。
42 * 该函数通过SQL查询统计不同状态(0到5)的记录数量,并返回一个包含统计结果的Map列表。 39 * 该函数通过SQL查询统计不同状态(0到5)的记录数量,并返回一个包含统计结果的Map列表。
@@ -75,19 +72,23 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX&lt;IotOtaUpgradeReco @@ -75,19 +72,23 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX&lt;IotOtaUpgradeReco
75 "where firmware_id = #{firmwareId}") 72 "where firmware_id = #{firmwareId}")
76 List<Map<String, Object>> selectOtaUpgradeRecordStatistics(Long firmwareId); 73 List<Map<String, Object>> selectOtaUpgradeRecordStatistics(Long firmwareId);
77 74
  75 + // TODO @li:这里的注释,可以去掉哈
78 /** 76 /**
79 * 根据分页查询条件获取IOT OTA升级记录的分页结果 77 * 根据分页查询条件获取IOT OTA升级记录的分页结果
80 * 78 *
81 * @param pageReqVO 分页查询请求参数,包含设备名称、任务ID等查询条件 79 * @param pageReqVO 分页查询请求参数,包含设备名称、任务ID等查询条件
82 * @return 返回分页查询结果,包含符合条件的IOT OTA升级记录列表 80 * @return 返回分页查询结果,包含符合条件的IOT OTA升级记录列表
83 */ 81 */
  82 + // TODO @li:selectPage 就 ok 拉。
84 default PageResult<IotOtaUpgradeRecordDO> selectUpgradeRecordPage(IotOtaUpgradeRecordPageReqVO pageReqVO) { 83 default PageResult<IotOtaUpgradeRecordDO> selectUpgradeRecordPage(IotOtaUpgradeRecordPageReqVO pageReqVO) {
  84 + // TODO @li:这里的注释,可以去掉哈;然后下面的“如果”。。。也没必要注释
85 // 使用LambdaQueryWrapperX构建查询条件,并根据请求参数动态添加查询条件 85 // 使用LambdaQueryWrapperX构建查询条件,并根据请求参数动态添加查询条件
86 return selectPage(pageReqVO, new LambdaQueryWrapperX<IotOtaUpgradeRecordDO>() 86 return selectPage(pageReqVO, new LambdaQueryWrapperX<IotOtaUpgradeRecordDO>()
87 .likeIfPresent(IotOtaUpgradeRecordDO::getDeviceName, pageReqVO.getDeviceName()) // 如果设备名称存在,则添加模糊查询条件 87 .likeIfPresent(IotOtaUpgradeRecordDO::getDeviceName, pageReqVO.getDeviceName()) // 如果设备名称存在,则添加模糊查询条件
88 .eqIfPresent(IotOtaUpgradeRecordDO::getTaskId, pageReqVO.getTaskId())); // 如果任务ID存在,则添加等值查询条件 88 .eqIfPresent(IotOtaUpgradeRecordDO::getTaskId, pageReqVO.getTaskId())); // 如果任务ID存在,则添加等值查询条件
89 } 89 }
90 90
  91 + // TODO @li:这里的注释,可以去掉哈
91 /** 92 /**
92 * 根据任务ID和状态更新升级记录的状态 93 * 根据任务ID和状态更新升级记录的状态
93 * <p> 94 * <p>
@@ -97,6 +98,7 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX&lt;IotOtaUpgradeReco @@ -97,6 +98,7 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX&lt;IotOtaUpgradeReco
97 * @param taskId 要更新的升级记录对应的任务ID,类型为Long 98 * @param taskId 要更新的升级记录对应的任务ID,类型为Long
98 * @param whereStatus 用于筛选升级记录的当前状态值,类型为Integer 99 * @param whereStatus 用于筛选升级记录的当前状态值,类型为Integer
99 */ 100 */
  101 + // TODO @li:改成 updateByTaskIdAndStatus(taskId, status, IotOtaUpgradeRecordDO) 更通用一些。
100 default void updateUpgradeRecordStatusByTaskIdAndStatus(Integer setStatus, Long taskId, Integer whereStatus) { 102 default void updateUpgradeRecordStatusByTaskIdAndStatus(Integer setStatus, Long taskId, Integer whereStatus) {
101 // 使用LambdaUpdateWrapper构建更新条件,将指定状态的记录更新为指定状态 103 // 使用LambdaUpdateWrapper构建更新条件,将指定状态的记录更新为指定状态
102 update(new LambdaUpdateWrapper<IotOtaUpgradeRecordDO>() 104 update(new LambdaUpdateWrapper<IotOtaUpgradeRecordDO>()
@@ -106,6 +108,7 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX&lt;IotOtaUpgradeReco @@ -106,6 +108,7 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX&lt;IotOtaUpgradeReco
106 ); 108 );
107 } 109 }
108 110
  111 + // TODO @li:参考上面的建议,调整下这个方法
109 /** 112 /**
110 * 根据状态查询符合条件的升级记录列表 113 * 根据状态查询符合条件的升级记录列表
111 * <p> 114 * <p>
@@ -120,6 +123,7 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX&lt;IotOtaUpgradeReco @@ -120,6 +123,7 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX&lt;IotOtaUpgradeReco
120 .eq(IotOtaUpgradeRecordDO::getStatus, state)); 123 .eq(IotOtaUpgradeRecordDO::getStatus, state));
121 } 124 }
122 125
  126 + // TODO @li:参考上面的建议,调整下这个方法
123 /** 127 /**
124 * 更新升级记录状态 128 * 更新升级记录状态
125 * <p> 129 * <p>
@@ -137,6 +141,7 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX&lt;IotOtaUpgradeReco @@ -137,6 +141,7 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX&lt;IotOtaUpgradeReco
137 ); 141 );
138 } 142 }
139 143
  144 + // TODO @li:参考上面的建议,调整下这个方法
140 /** 145 /**
141 * 根据任务ID查询升级记录列表 146 * 根据任务ID查询升级记录列表
142 * <p> 147 * <p>
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/plugin/IotPluginInstanceMapper.java
@@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Mapper; @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Mapper;
8 import java.time.LocalDateTime; 8 import java.time.LocalDateTime;
9 import java.util.List; 9 import java.util.List;
10 10
  11 +// TODO @li:参考 IotOtaUpgradeRecordMapper 的写法
11 @Mapper 12 @Mapper
12 public interface IotPluginInstanceMapper extends BaseMapperX<IotPluginInstanceDO> { 13 public interface IotPluginInstanceMapper extends BaseMapperX<IotPluginInstanceDO> {
13 14
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaFirmwareService.java
@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.firmware.IotOtaFirmwa @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.firmware.IotOtaFirmwa
7 import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaFirmwareDO; 7 import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaFirmwareDO;
8 import jakarta.validation.Valid; 8 import jakarta.validation.Valid;
9 9
  10 +// TODO @li:注释写的有点冗余,可以看看别的模块哈。= = AI 生成的注释,有的时候太啰嗦了,需要处理下的哈
10 /** 11 /**
11 * OTA 固件管理 Service 12 * OTA 固件管理 Service
12 * 13 *
@@ -15,7 +16,7 @@ import jakarta.validation.Valid; @@ -15,7 +16,7 @@ import jakarta.validation.Valid;
15 public interface IotOtaFirmwareService { 16 public interface IotOtaFirmwareService {
16 17
17 /** 18 /**
18 - * 创建OTA固件 19 + * 创建 OTA 固件
19 * 20 *
20 * @param saveReqVO OTA固件保存请求对象,包含固件的相关信息 21 * @param saveReqVO OTA固件保存请求对象,包含固件的相关信息
21 * @return 返回新创建的固件的ID 22 * @return 返回新创建的固件的ID
@@ -23,14 +24,14 @@ public interface IotOtaFirmwareService { @@ -23,14 +24,14 @@ public interface IotOtaFirmwareService {
23 Long createOtaFirmware(@Valid IotOtaFirmwareCreateReqVO saveReqVO); 24 Long createOtaFirmware(@Valid IotOtaFirmwareCreateReqVO saveReqVO);
24 25
25 /** 26 /**
26 - * 更新OTA固件信息 27 + * 更新 OTA 固件信息
27 * 28 *
28 * @param updateReqVO OTA固件保存请求对象,包含需要更新的固件信息 29 * @param updateReqVO OTA固件保存请求对象,包含需要更新的固件信息
29 */ 30 */
30 void updateOtaFirmware(@Valid IotOtaFirmwareUpdateReqVO updateReqVO); 31 void updateOtaFirmware(@Valid IotOtaFirmwareUpdateReqVO updateReqVO);
31 32
32 /** 33 /**
33 - * 根据ID获取OTA固件信息 34 + * 根据 ID 获取 OTA 固件信息
34 * 35 *
35 * @param id OTA固件的唯一标识符 36 * @param id OTA固件的唯一标识符
36 * @return 返回OTA固件的详细信息对象 37 * @return 返回OTA固件的详细信息对象
@@ -38,7 +39,7 @@ public interface IotOtaFirmwareService { @@ -38,7 +39,7 @@ public interface IotOtaFirmwareService {
38 IotOtaFirmwareDO getOtaFirmware(Long id); 39 IotOtaFirmwareDO getOtaFirmware(Long id);
39 40
40 /** 41 /**
41 - * 分页查询OTA固件信息 42 + * 分页查询 OTA 固件信息
42 * 43 *
43 * @param pageReqVO 包含分页查询条件的请求对象 44 * @param pageReqVO 包含分页查询条件的请求对象
44 * @return 返回分页查询结果,包含固件信息列表和分页信息 45 * @return 返回分页查询结果,包含固件信息列表和分页信息
@@ -46,7 +47,7 @@ public interface IotOtaFirmwareService { @@ -46,7 +47,7 @@ public interface IotOtaFirmwareService {
46 PageResult<IotOtaFirmwareDO> getOtaFirmwarePage(@Valid IotOtaFirmwarePageReqVO pageReqVO); 47 PageResult<IotOtaFirmwareDO> getOtaFirmwarePage(@Valid IotOtaFirmwarePageReqVO pageReqVO);
47 48
48 /** 49 /**
49 - * 验证物联网OTA固件是否存在 50 + * 验证物联网 OTA 固件是否存在
50 * 51 *
51 * @param id 固件的唯一标识符 52 * @param id 固件的唯一标识符
52 * 该方法用于检查系统中是否存在与给定ID关联的物联网OTA固件信息 53 * 该方法用于检查系统中是否存在与给定ID关联的物联网OTA固件信息
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaFirmwareServiceImpl.java
@@ -39,13 +39,14 @@ public class IotOtaFirmwareServiceImpl implements IotOtaFirmwareService { @@ -39,13 +39,14 @@ public class IotOtaFirmwareServiceImpl implements IotOtaFirmwareService {
39 public Long createOtaFirmware(IotOtaFirmwareCreateReqVO saveReqVO) { 39 public Long createOtaFirmware(IotOtaFirmwareCreateReqVO saveReqVO) {
40 // 1. 校验固件产品 + 版本号不能重复 40 // 1. 校验固件产品 + 版本号不能重复
41 validateProductAndVersionDuplicate(saveReqVO.getProductId(), saveReqVO.getVersion()); 41 validateProductAndVersionDuplicate(saveReqVO.getProductId(), saveReqVO.getVersion());
  42 +
42 // 2.1.转化数据格式,准备存储到数据库中 43 // 2.1.转化数据格式,准备存储到数据库中
43 IotOtaFirmwareDO firmware = BeanUtils.toBean(saveReqVO, IotOtaFirmwareDO.class); 44 IotOtaFirmwareDO firmware = BeanUtils.toBean(saveReqVO, IotOtaFirmwareDO.class);
44 // 2.2.查询ProductKey 45 // 2.2.查询ProductKey
  46 + // TODO @li:productService.getProduct(Convert.toLong(firmware.getProductId())) 放到 1. 后面,先做参考校验。逻辑两段:1)先参数校验;2)构建对象 + 存储
45 IotProductDO product = productService.getProduct(Convert.toLong(firmware.getProductId())); 47 IotProductDO product = productService.getProduct(Convert.toLong(firmware.getProductId()));
46 firmware.setProductKey(Objects.requireNonNull(product).getProductKey()); 48 firmware.setProductKey(Objects.requireNonNull(product).getProductKey());
47 // TODO @芋艿: 附件、附件签名等属性的计算 49 // TODO @芋艿: 附件、附件签名等属性的计算
48 -  
49 otaFirmwareMapper.insert(firmware); 50 otaFirmwareMapper.insert(firmware);
50 return firmware.getId(); 51 return firmware.getId();
51 } 52 }
@@ -79,6 +80,7 @@ public class IotOtaFirmwareServiceImpl implements IotOtaFirmwareService { @@ -79,6 +80,7 @@ public class IotOtaFirmwareServiceImpl implements IotOtaFirmwareService {
79 return firmware; 80 return firmware;
80 } 81 }
81 82
  83 + // TODO @li:注释有点冗余
82 /** 84 /**
83 * 验证产品和版本号是否重复 85 * 验证产品和版本号是否重复
84 * <p> 86 * <p>
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaUpgradeRecordService.java
@@ -8,6 +8,7 @@ import jakarta.validation.Valid; @@ -8,6 +8,7 @@ import jakarta.validation.Valid;
8 import java.util.List; 8 import java.util.List;
9 import java.util.Map; 9 import java.util.Map;
10 10
  11 +// TODO @li:注释写的有点冗余,可以看看别的模块哈。= = AI 生成的注释,有的时候太啰嗦了,需要处理下的哈
11 /** 12 /**
12 * IotOtaUpgradeRecordService 接口定义了与物联网设备OTA升级记录相关的操作。 13 * IotOtaUpgradeRecordService 接口定义了与物联网设备OTA升级记录相关的操作。
13 * 该接口提供了创建、更新、查询、统计和重试升级记录的功能。 14 * 该接口提供了创建、更新、查询、统计和重试升级记录的功能。
@@ -15,7 +16,7 @@ import java.util.Map; @@ -15,7 +16,7 @@ import java.util.Map;
15 public interface IotOtaUpgradeRecordService { 16 public interface IotOtaUpgradeRecordService {
16 17
17 /** 18 /**
18 - * 批量创建OTA升级记录。 19 + * 批量创建 OTA 升级记录
19 * 该函数用于为指定的设备列表、固件ID和升级任务ID创建OTA升级记录。 20 * 该函数用于为指定的设备列表、固件ID和升级任务ID创建OTA升级记录。
20 * 21 *
21 * @param deviceIds 设备ID列表,表示需要升级的设备集合。 22 * @param deviceIds 设备ID列表,表示需要升级的设备集合。
@@ -25,7 +26,7 @@ public interface IotOtaUpgradeRecordService { @@ -25,7 +26,7 @@ public interface IotOtaUpgradeRecordService {
25 void createOtaUpgradeRecordBatch(List<Long> deviceIds, Long firmwareId, Long upgradeTaskId); 26 void createOtaUpgradeRecordBatch(List<Long> deviceIds, Long firmwareId, Long upgradeTaskId);
26 27
27 /** 28 /**
28 - * 获取OTA升级记录的数量统计。 29 + * 获取 OTA 升级记录的数量统计
29 * 30 *
30 * @return 返回一个 Map,其中键为状态码,值为对应状态的升级记录数量 31 * @return 返回一个 Map,其中键为状态码,值为对应状态的升级记录数量
31 */ 32 */
@@ -39,14 +40,14 @@ public interface IotOtaUpgradeRecordService { @@ -39,14 +40,14 @@ public interface IotOtaUpgradeRecordService {
39 Map<Integer, Long> getOtaUpgradeRecordStatistics(Long firmwareId); 40 Map<Integer, Long> getOtaUpgradeRecordStatistics(Long firmwareId);
40 41
41 /** 42 /**
42 - * 重试指定的OTA升级记录。 43 + * 重试指定的 OTA 升级记录
43 * 44 *
44 * @param id 需要重试的升级记录的ID。 45 * @param id 需要重试的升级记录的ID。
45 */ 46 */
46 void retryUpgradeRecord(Long id); 47 void retryUpgradeRecord(Long id);
47 48
48 /** 49 /**
49 - * 获取指定ID的OTA升级记录的详细信息。 50 + * 获取指定 ID 的 OTA 升级记录的详细信息。
50 * 51 *
51 * @param id 需要查询的升级记录的ID。 52 * @param id 需要查询的升级记录的ID。
52 * @return 返回包含升级记录详细信息的响应对象。 53 * @return 返回包含升级记录详细信息的响应对象。
@@ -54,7 +55,7 @@ public interface IotOtaUpgradeRecordService { @@ -54,7 +55,7 @@ public interface IotOtaUpgradeRecordService {
54 IotOtaUpgradeRecordDO getUpgradeRecord(Long id); 55 IotOtaUpgradeRecordDO getUpgradeRecord(Long id);
55 56
56 /** 57 /**
57 - * 分页查询OTA升级记录。 58 + * 分页查询 OTA 升级记录。
58 * 59 *
59 * @param pageReqVO 包含分页查询条件的请求对象,必须经过验证。 60 * @param pageReqVO 包含分页查询条件的请求对象,必须经过验证。
60 * @return 返回包含分页查询结果的响应对象。 61 * @return 返回包含分页查询结果的响应对象。
@@ -62,7 +63,7 @@ public interface IotOtaUpgradeRecordService { @@ -62,7 +63,7 @@ public interface IotOtaUpgradeRecordService {
62 PageResult<IotOtaUpgradeRecordDO> getUpgradeRecordPage(@Valid IotOtaUpgradeRecordPageReqVO pageReqVO); 63 PageResult<IotOtaUpgradeRecordDO> getUpgradeRecordPage(@Valid IotOtaUpgradeRecordPageReqVO pageReqVO);
63 64
64 /** 65 /**
65 - * 根据任务ID取消升级记录。 66 + * 根据任务 ID 取消升级记录
66 * <p> 67 * <p>
67 * 该函数用于根据给定的任务ID,取消与该任务相关的升级记录。通常用于在任务执行失败或用户手动取消时, 68 * 该函数用于根据给定的任务ID,取消与该任务相关的升级记录。通常用于在任务执行失败或用户手动取消时,
68 * 清理或标记相关的升级记录为取消状态。 69 * 清理或标记相关的升级记录为取消状态。
@@ -71,6 +72,7 @@ public interface IotOtaUpgradeRecordService { @@ -71,6 +72,7 @@ public interface IotOtaUpgradeRecordService {
71 */ 72 */
72 void cancelUpgradeRecordByTaskId(Long taskId); 73 void cancelUpgradeRecordByTaskId(Long taskId);
73 74
  75 + // TODO @li:不要的方法,可以删除下哈。
74 /** 76 /**
75 * 根据升级状态获取升级记录列表 77 * 根据升级状态获取升级记录列表
76 * 78 *
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaUpgradeRecordServiceImpl.java
@@ -25,8 +25,8 @@ import java.util.stream.Collectors; @@ -25,8 +25,8 @@ import java.util.stream.Collectors;
25 25
26 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 26 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
27 import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*; 27 import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*;
28 -import static cn.iocoder.yudao.module.iot.enums.ota.IotOtaUpgradeRecordStatusEnum.CANCELED;  
29 28
  29 +// TODO @li:@Service、@Validated、@Slf4j,先用关键注解;2)类注释,简单写
30 @Slf4j 30 @Slf4j
31 @Service 31 @Service
32 @Validated 32 @Validated
@@ -34,6 +34,7 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic @@ -34,6 +34,7 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
34 34
35 @Resource 35 @Resource
36 private IotOtaUpgradeRecordMapper upgradeRecordMapper; 36 private IotOtaUpgradeRecordMapper upgradeRecordMapper;
  37 + // TODO @li:1)@Resource 写在 @Lazy 之前,先用关键注解;2)有必要的情况下,在写 @Lazy 注解。
37 @Lazy 38 @Lazy
38 @Resource 39 @Resource
39 private IotDeviceService deviceService; 40 private IotDeviceService deviceService;
@@ -46,8 +47,10 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic @@ -46,8 +47,10 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
46 47
47 @Override 48 @Override
48 public void createOtaUpgradeRecordBatch(List<Long> deviceIds, Long firmwareId, Long upgradeTaskId) { 49 public void createOtaUpgradeRecordBatch(List<Long> deviceIds, Long firmwareId, Long upgradeTaskId) {
49 - // 1.校验升级记录信息是否存在,并且已经取消的任务可以重新开始 50 + // 1. 校验升级记录信息是否存在,并且已经取消的任务可以重新开始
  51 + // TODO @li:批量查询。。
50 deviceIds.forEach(deviceId -> validateUpgradeRecordDuplicate(firmwareId, upgradeTaskId, String.valueOf(deviceId))); 52 deviceIds.forEach(deviceId -> validateUpgradeRecordDuplicate(firmwareId, upgradeTaskId, String.valueOf(deviceId)));
  53 +
51 // 2.初始化OTA升级记录列表信息 54 // 2.初始化OTA升级记录列表信息
52 IotOtaUpgradeTaskDO upgradeTask = upgradeTaskService.getUpgradeTask(upgradeTaskId); 55 IotOtaUpgradeTaskDO upgradeTask = upgradeTaskService.getUpgradeTask(upgradeTaskId);
53 IotOtaFirmwareDO firmware = firmwareService.getOtaFirmware(firmwareId); 56 IotOtaFirmwareDO firmware = firmwareService.getOtaFirmware(firmwareId);
@@ -70,6 +73,7 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic @@ -70,6 +73,7 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
70 73
71 } 74 }
72 75
  76 + // TODO @li:1)方法注释,简单写;2)父类写了注释,子类就不用写了。。。
73 /** 77 /**
74 * 获取OTA升级记录的数量统计。 78 * 获取OTA升级记录的数量统计。
75 * 该方法根据传入的查询条件,统计不同状态的OTA升级记录数量,并返回一个包含各状态数量的映射。 79 * 该方法根据传入的查询条件,统计不同状态的OTA升级记录数量,并返回一个包含各状态数量的映射。
@@ -87,10 +91,10 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic @@ -87,10 +91,10 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
87 Objects.requireNonNull(upgradeRecordCountMap); 91 Objects.requireNonNull(upgradeRecordCountMap);
88 return upgradeRecordCountMap.entrySet().stream().collect(Collectors.toMap( 92 return upgradeRecordCountMap.entrySet().stream().collect(Collectors.toMap(
89 entry -> Convert.toInt(entry.getKey()), 93 entry -> Convert.toInt(entry.getKey()),
90 - entry -> Convert.toLong(entry.getValue())  
91 - )); 94 + entry -> Convert.toLong(entry.getValue())));
92 } 95 }
93 96
  97 + // TODO @li:1)方法注释,简单写;2)父类写了注释,子类就不用写了。。。
94 /** 98 /**
95 * 获取指定固件ID的OTA升级记录统计信息。 99 * 获取指定固件ID的OTA升级记录统计信息。
96 * 该方法通过查询数据库,统计不同状态的OTA升级记录数量,并返回一个包含各状态数量的映射。 100 * 该方法通过查询数据库,统计不同状态的OTA升级记录数量,并返回一个包含各状态数量的映射。
@@ -107,8 +111,7 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic @@ -107,8 +111,7 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
107 Objects.requireNonNull(upgradeRecordStatisticsMap); 111 Objects.requireNonNull(upgradeRecordStatisticsMap);
108 return upgradeRecordStatisticsMap.entrySet().stream().collect(Collectors.toMap( 112 return upgradeRecordStatisticsMap.entrySet().stream().collect(Collectors.toMap(
109 entry -> Convert.toInt(entry.getKey()), 113 entry -> Convert.toInt(entry.getKey()),
110 - entry -> Convert.toLong(entry.getValue())  
111 - )); 114 + entry -> Convert.toLong(entry.getValue())));
112 } 115 }
113 116
114 @Override 117 @Override
@@ -118,7 +121,8 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic @@ -118,7 +121,8 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
118 // 1.2.校验升级记录是否可以重新升级 121 // 1.2.校验升级记录是否可以重新升级
119 validateUpgradeRecordCanRetry(upgradeRecord); 122 validateUpgradeRecordCanRetry(upgradeRecord);
120 123
121 - // 2.将一些数据重置,这样定时任务轮询就可以重启任务 124 + // 2. 将一些数据重置,这样定时任务轮询就可以重启任务
  125 + // TODO @li:更新的时候,wherestatus;
122 upgradeRecordMapper.updateById(new IotOtaUpgradeRecordDO() 126 upgradeRecordMapper.updateById(new IotOtaUpgradeRecordDO()
123 .setId(upgradeRecord.getId()).setProgress(0) 127 .setId(upgradeRecord.getId()).setProgress(0)
124 .setStatus(IotOtaUpgradeRecordStatusEnum.PENDING.getStatus())); 128 .setStatus(IotOtaUpgradeRecordStatusEnum.PENDING.getStatus()));
@@ -136,9 +140,9 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic @@ -136,9 +140,9 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
136 140
137 @Override 141 @Override
138 public void cancelUpgradeRecordByTaskId(Long taskId) { 142 public void cancelUpgradeRecordByTaskId(Long taskId) {
139 - // 暂定只有待推送的升级记录可以取消 143 + // 暂定只有待推送的升级记录可以取消 TODO @芋艿:可以看看阿里云,哪些可以取消
140 upgradeRecordMapper.updateUpgradeRecordStatusByTaskIdAndStatus( 144 upgradeRecordMapper.updateUpgradeRecordStatusByTaskIdAndStatus(
141 - CANCELED.getStatus(), taskId, 145 + IotOtaUpgradeRecordStatusEnum.CANCELED.getStatus(), taskId,
142 IotOtaUpgradeRecordStatusEnum.PENDING.getStatus()); 146 IotOtaUpgradeRecordStatusEnum.PENDING.getStatus());
143 } 147 }
144 148
@@ -175,6 +179,7 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic @@ -175,6 +179,7 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
175 return upgradeRecord; 179 return upgradeRecord;
176 } 180 }
177 181
  182 + // TODO @li:注释有点冗余
178 /** 183 /**
179 * 校验固件升级记录是否重复。 184 * 校验固件升级记录是否重复。
180 * <p> 185 * <p>
@@ -189,13 +194,17 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic @@ -189,13 +194,17 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
189 // 根据条件查询升级记录 194 // 根据条件查询升级记录
190 IotOtaUpgradeRecordDO upgradeRecord = upgradeRecordMapper.selectByConditions(firmwareId, taskId, deviceId); 195 IotOtaUpgradeRecordDO upgradeRecord = upgradeRecordMapper.selectByConditions(firmwareId, taskId, deviceId);
191 // 如果查询到升级记录且状态不是已取消,则抛出异常 196 // 如果查询到升级记录且状态不是已取消,则抛出异常
  197 + // TODO @li:if return,减少括号层级;
  198 + // TODO @li:ObjUtil.notEquals,尽量不用 !取否逻辑;
192 if (upgradeRecord != null) { 199 if (upgradeRecord != null) {
193 - if (!CANCELED.getStatus().equals(upgradeRecord.getStatus())) { 200 + if (!IotOtaUpgradeRecordStatusEnum.CANCELED.getStatus().equals(upgradeRecord.getStatus())) {
  201 + // TODO @li:提示的时候,需要把 deviceName 给提示出来,不然用户不知道哪个重复啦。
194 throw exception(OTA_UPGRADE_RECORD_DUPLICATE); 202 throw exception(OTA_UPGRADE_RECORD_DUPLICATE);
195 } 203 }
196 } 204 }
197 } 205 }
198 206
  207 + // TODO @li:注释有点冗余
199 /** 208 /**
200 * 验证升级记录是否可以重试。 209 * 验证升级记录是否可以重试。
201 * <p> 210 * <p>
@@ -205,6 +214,7 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic @@ -205,6 +214,7 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
205 * @param upgradeRecord 需要验证的升级记录对象,类型为 IotOtaUpgradeRecordDO 214 * @param upgradeRecord 需要验证的升级记录对象,类型为 IotOtaUpgradeRecordDO
206 * @throws cn.iocoder.yudao.framework.common.exception.ServiceException,则抛出 OTA_UPGRADE_RECORD_CANNOT_RETRY 异常 215 * @throws cn.iocoder.yudao.framework.common.exception.ServiceException,则抛出 OTA_UPGRADE_RECORD_CANNOT_RETRY 异常
207 */ 216 */
  217 + // TODO @li:这种一次性的方法(不复用的),其实一步一定要抽成小方法;
208 private void validateUpgradeRecordCanRetry(IotOtaUpgradeRecordDO upgradeRecord) { 218 private void validateUpgradeRecordCanRetry(IotOtaUpgradeRecordDO upgradeRecord) {
209 // 检查升级记录的状态是否为 PENDING、PUSHED 或 UPGRADING 219 // 检查升级记录的状态是否为 PENDING、PUSHED 或 UPGRADING
210 if (ObjectUtils.equalsAny(upgradeRecord.getStatus(), 220 if (ObjectUtils.equalsAny(upgradeRecord.getStatus(),
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaUpgradeTaskServiceImpl.java
@@ -27,6 +27,7 @@ import java.util.stream.Collectors; @@ -27,6 +27,7 @@ import java.util.stream.Collectors;
27 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 27 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
28 import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*; 28 import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*;
29 29
  30 +// TODO @li:完善注释、注解顺序
30 @Slf4j 31 @Slf4j
31 @Service 32 @Service
32 @Validated 33 @Validated
@@ -54,9 +55,11 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService { @@ -54,9 +55,11 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService {
54 IotOtaFirmwareDO firmware = firmwareService.validateFirmwareExists(createReqVO.getFirmwareId()); 55 IotOtaFirmwareDO firmware = firmwareService.validateFirmwareExists(createReqVO.getFirmwareId());
55 // 1.3 补全设备范围信息,并且校验是否又设备可以升级,如果没有设备可以升级,则报错 56 // 1.3 补全设备范围信息,并且校验是否又设备可以升级,如果没有设备可以升级,则报错
56 validateScopeAndDevice(createReqVO.getScope(), createReqVO.getDeviceIds(), firmware.getProductId()); 57 validateScopeAndDevice(createReqVO.getScope(), createReqVO.getDeviceIds(), firmware.getProductId());
  58 +
57 // 2. 保存 OTA 升级任务信息到数据库 59 // 2. 保存 OTA 升级任务信息到数据库
58 IotOtaUpgradeTaskDO upgradeTask = initOtaUpgradeTask(createReqVO, firmware.getProductId()); 60 IotOtaUpgradeTaskDO upgradeTask = initOtaUpgradeTask(createReqVO, firmware.getProductId());
59 upgradeTaskMapper.insert(upgradeTask); 61 upgradeTaskMapper.insert(upgradeTask);
  62 +
60 // 3. 生成设备升级记录信息并存储,等待定时任务轮询 63 // 3. 生成设备升级记录信息并存储,等待定时任务轮询
61 upgradeRecordService.createOtaUpgradeRecordBatch(upgradeTask.getDeviceIds(), firmware.getId(), upgradeTask.getId()); 64 upgradeRecordService.createOtaUpgradeRecordBatch(upgradeTask.getDeviceIds(), firmware.getId(), upgradeTask.getId());
62 return upgradeTask.getId(); 65 return upgradeTask.getId();
@@ -68,15 +71,16 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService { @@ -68,15 +71,16 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService {
68 // 1.1 校验升级任务是否存在 71 // 1.1 校验升级任务是否存在
69 IotOtaUpgradeTaskDO upgradeTask = validateUpgradeTaskExists(id); 72 IotOtaUpgradeTaskDO upgradeTask = validateUpgradeTaskExists(id);
70 // 1.2 校验升级任务是否可以取消 73 // 1.2 校验升级任务是否可以取消
71 - // 检查升级任务的状态是否为进行中,只有此状态下的任务才允许取消 74 + // TODO @li:ObjUtil notequals
72 if (!Objects.equals(upgradeTask.getStatus(), IotOtaUpgradeTaskStatusEnum.IN_PROGRESS.getStatus())) { 75 if (!Objects.equals(upgradeTask.getStatus(), IotOtaUpgradeTaskStatusEnum.IN_PROGRESS.getStatus())) {
73 - // 只有进行中的任务才可以取消  
74 throw exception(OTA_UPGRADE_TASK_CANNOT_CANCEL); 76 throw exception(OTA_UPGRADE_TASK_CANNOT_CANCEL);
75 } 77 }
  78 +
76 // 2. 更新 OTA 升级任务状态为已取消 79 // 2. 更新 OTA 升级任务状态为已取消
77 upgradeTaskMapper.updateById(IotOtaUpgradeTaskDO.builder() 80 upgradeTaskMapper.updateById(IotOtaUpgradeTaskDO.builder()
78 .id(id).status(IotOtaUpgradeTaskStatusEnum.CANCELED.getStatus()) 81 .id(id).status(IotOtaUpgradeTaskStatusEnum.CANCELED.getStatus())
79 .build()); 82 .build());
  83 +
80 // 3. 更新 OTA 升级记录状态为已取消 84 // 3. 更新 OTA 升级记录状态为已取消
81 upgradeRecordService.cancelUpgradeRecordByTaskId(id); 85 upgradeRecordService.cancelUpgradeRecordByTaskId(id);
82 } 86 }
@@ -98,11 +102,10 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService { @@ -98,11 +102,10 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService {
98 102
99 @Override 103 @Override
100 public void updateUpgradeTaskStatus(Long id, Integer status) { 104 public void updateUpgradeTaskStatus(Long id, Integer status) {
101 - upgradeTaskMapper.updateById(IotOtaUpgradeTaskDO.builder()  
102 - .id(id).status(status)  
103 - .build()); 105 + upgradeTaskMapper.updateById(IotOtaUpgradeTaskDO.builder().id(id).status(status).build());
104 } 106 }
105 107
  108 + // TODO @li:注释有点冗余
106 /** 109 /**
107 * 校验固件升级任务是否重复 110 * 校验固件升级任务是否重复
108 * <p> 111 * <p>
@@ -123,6 +126,7 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService { @@ -123,6 +126,7 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService {
123 } 126 }
124 } 127 }
125 128
  129 + // TODO @li:注释有点冗余
126 /** 130 /**
127 * 验证升级任务的范围和设备列表的有效性。 131 * 验证升级任务的范围和设备列表的有效性。
128 * <p> 132 * <p>
@@ -135,6 +139,7 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService { @@ -135,6 +139,7 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService {
135 * @throws cn.iocoder.yudao.framework.common.exception.ServiceException,抛出相应的异常 139 * @throws cn.iocoder.yudao.framework.common.exception.ServiceException,抛出相应的异常
136 */ 140 */
137 private void validateScopeAndDevice(Integer scope, List<Long> deviceIds, String productId) { 141 private void validateScopeAndDevice(Integer scope, List<Long> deviceIds, String productId) {
  142 + // TODO @li:if return
138 // 验证范围为“选择设备”时,设备列表不能为空 143 // 验证范围为“选择设备”时,设备列表不能为空
139 if (Objects.equals(scope, IotOtaUpgradeTaskScopeEnum.SELECT.getScope())) { 144 if (Objects.equals(scope, IotOtaUpgradeTaskScopeEnum.SELECT.getScope())) {
140 if (CollUtil.isEmpty(deviceIds)) { 145 if (CollUtil.isEmpty(deviceIds)) {
@@ -149,6 +154,7 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService { @@ -149,6 +154,7 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService {
149 } 154 }
150 } 155 }
151 156
  157 + // TODO @li:注释有点冗余
152 /** 158 /**
153 * 验证升级任务是否存在 159 * 验证升级任务是否存在
154 * <p> 160 * <p>
@@ -167,6 +173,7 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService { @@ -167,6 +173,7 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService {
167 return upgradeTask; 173 return upgradeTask;
168 } 174 }
169 175
  176 + // TODO @li:注释有点冗余
170 /** 177 /**
171 * 初始化升级任务 178 * 初始化升级任务
172 * <p> 179 * <p>
@@ -177,6 +184,7 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService { @@ -177,6 +184,7 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService {
177 * @param createReqVO 升级任务保存请求对象,包含创建升级任务所需的信息 184 * @param createReqVO 升级任务保存请求对象,包含创建升级任务所需的信息
178 * @return 返回初始化后的升级任务对象 185 * @return 返回初始化后的升级任务对象
179 */ 186 */
  187 + // TODO @li:一次性的方法,不用特别抽小方法
180 private IotOtaUpgradeTaskDO initOtaUpgradeTask(IotOtaUpgradeTaskSaveReqVO createReqVO, String productId) { 188 private IotOtaUpgradeTaskDO initOtaUpgradeTask(IotOtaUpgradeTaskSaveReqVO createReqVO, String productId) {
181 // 将请求参数转换为升级任务对象 189 // 将请求参数转换为升级任务对象
182 IotOtaUpgradeTaskDO upgradeTask = BeanUtils.toBean(createReqVO, IotOtaUpgradeTaskDO.class); 190 IotOtaUpgradeTaskDO upgradeTask = BeanUtils.toBean(createReqVO, IotOtaUpgradeTaskDO.class);
yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/ota/IotOtaUpgradeRecordMapper.xml deleted
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<!DOCTYPE mapper  
3 - PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
4 - "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
5 -<mapper namespace="cn.iocoder.yudao.module.iot.dal.mysql.ota.IotOtaUpgradeRecordMapper">  
6 -  
7 -</mapper>  
8 \ No newline at end of file 0 \ No newline at end of file