Commit 4629084c1ba1411109403dcec1f11b6096b46f32

Authored by 陈玄礼
1 parent 0302ebee

refactor(iot): 重构升级记录状态更新逻辑

- 修改 IotOtaUpgradeRecordMapper 中的 cancelUpgradeRecordByTaskId 方法- 新增 updateUpgradeRecordStatusByTaskIdAndStatus 方法,用于更通用的状态更新
- 在 IotOtaUpgradeRecordServiceImpl 中调用新方法来取消升级记录
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/ota/IotOtaUpgradeRecordMapper.java
@@ -5,7 +5,6 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; @@ -5,7 +5,6 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6 import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.record.IotOtaUpgradeRecordPageReqVO; 6 import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.record.IotOtaUpgradeRecordPageReqVO;
7 import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaUpgradeRecordDO; 7 import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaUpgradeRecordDO;
8 -import cn.iocoder.yudao.module.iot.enums.ota.IotOtaUpgradeRecordStatusEnum;  
9 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 8 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
10 import org.apache.ibatis.annotations.Mapper; 9 import org.apache.ibatis.annotations.Mapper;
11 import org.apache.ibatis.annotations.Param; 10 import org.apache.ibatis.annotations.Param;
@@ -82,18 +81,20 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX<IotOtaUpgradeReco @@ -82,18 +81,20 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX<IotOtaUpgradeReco
82 } 81 }
83 82
84 /** 83 /**
85 - * 根据任务ID取消升级记录。  
86 - * 该方法通过任务ID查找状态为“待处理”的升级记录,并将其状态更新为“已取消”。 84 + * 根据任务ID和状态更新升级记录的状态
  85 + * <p>
  86 + * 该函数用于将符合指定任务ID和状态的升级记录的状态更新为新的状态。
87 * 87 *
88 - * @param taskId 任务ID,用于查找对应的升级记录。 88 + * @param setStatus 要设置的新状态值,类型为Integer
  89 + * @param taskId 要更新的升级记录对应的任务ID,类型为Long
  90 + * @param whereStatus 用于筛选升级记录的当前状态值,类型为Integer
89 */ 91 */
90 - default void cancelUpgradeRecordByTaskId(Long taskId) {  
91 - // 使用LambdaUpdateWrapper构建更新条件,将状态为“待处理”的记录更新为“已取消”  
92 - // TODO @li:哪些可以更新,通过 service 传递。mapper 尽量不要有逻辑 92 + default void updateUpgradeRecordStatusByTaskIdAndStatus(Integer setStatus, Long taskId, Integer whereStatus) {
  93 + // 使用LambdaUpdateWrapper构建更新条件,将指定状态的记录更新为指定状态
93 update(new LambdaUpdateWrapper<IotOtaUpgradeRecordDO>() 94 update(new LambdaUpdateWrapper<IotOtaUpgradeRecordDO>()
94 - .set(IotOtaUpgradeRecordDO::getStatus, IotOtaUpgradeRecordStatusEnum.CANCELED.getStatus()) 95 + .set(IotOtaUpgradeRecordDO::getStatus, setStatus)
95 .eq(IotOtaUpgradeRecordDO::getTaskId, taskId) 96 .eq(IotOtaUpgradeRecordDO::getTaskId, taskId)
96 - .eq(IotOtaUpgradeRecordDO::getStatus, IotOtaUpgradeRecordStatusEnum.PENDING.getStatus()) 97 + .eq(IotOtaUpgradeRecordDO::getStatus, whereStatus)
97 ); 98 );
98 } 99 }
99 100
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaUpgradeRecordServiceImpl.java
@@ -134,7 +134,9 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic @@ -134,7 +134,9 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
134 @Override 134 @Override
135 public void cancelUpgradeRecordByTaskId(Long taskId) { 135 public void cancelUpgradeRecordByTaskId(Long taskId) {
136 // 暂定只有待推送的升级记录可以取消 136 // 暂定只有待推送的升级记录可以取消
137 - upgradeRecordMapper.cancelUpgradeRecordByTaskId(taskId); 137 + upgradeRecordMapper.updateUpgradeRecordStatusByTaskIdAndStatus(
  138 + IotOtaUpgradeRecordStatusEnum.CANCELED.getStatus(), taskId,
  139 + IotOtaUpgradeRecordStatusEnum.PENDING.getStatus());
138 } 140 }
139 141
140 @Override 142 @Override