机器代理管理规范化

This commit is contained in:
唐潇凯 2025-06-06 16:41:13 +08:00
parent 2d4653b29a
commit 97ffb19c03
3 changed files with 20 additions and 22 deletions

View File

@ -2,17 +2,10 @@ package cd.casic.module.machine.dal.mysql;
import cd.casic.framework.commons.pojo.PageResult;
import cd.casic.framework.mybatis.core.mapper.BaseMapperX;
import cd.casic.framework.mybatis.core.query.LambdaQueryWrapperX;
import cd.casic.module.machine.controller.vo.MachineEnvVO;
import cd.casic.module.machine.controller.vo.MachineProxyVO;
import cd.casic.module.machine.dal.dataobject.MachineEnvDO;
import cd.casic.module.machine.dal.dataobject.MachineProxyDO;
import cd.casic.module.machine.enums.MachineProxyStatus;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import static com.baomidou.mybatisplus.extension.toolkit.Db.listObjs;
/**
* 机器代理Mapper接口
*/
@ -29,16 +22,5 @@ public interface MachineProxyMapper extends BaseMapperX<MachineProxyDO> {
.likeIfPresent(MachineProxyDO::getDescription, machineProxyVO.getDescription())
);
}
default List<Long> getOnlineProxyListInIds(List<Long> ids) {
LambdaQueryWrapperX<MachineProxyDO> queryWrapper = new LambdaQueryWrapperX<>();
// 1. 状态为在线eqIfPresent 确保状态非空时拼接条件
queryWrapper.eqIfPresent(MachineProxyDO::getStatus, MachineProxyStatus.ONLINE.getCode());
// 2. 传入的 ID 列表非空时添加 IN 条件使用 inIfPresent 自动过滤空值
queryWrapper.inIfPresent(MachineProxyDO::getId, ids);
// 4. 仅查询 ID 字段提升性能
return listObjs(queryWrapper.select(MachineProxyDO::getId));
}
}

View File

@ -1,12 +1,15 @@
package cd.casic.module.machine.enums;
import cd.casic.framework.commons.core.IntArrayValuable;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
@Getter
@AllArgsConstructor
public enum MachineProxyStatus implements CodeEnum {
public enum MachineProxyStatus implements IntArrayValuable {
/**
* 代理状态 (online, offline, installing, updating, error)
*/
@ -16,7 +19,14 @@ public enum MachineProxyStatus implements CodeEnum {
UPDATING(4, "updating"),
ERROR(5, "error");
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(MachineProxyStatus::getCode).toArray();
private final int code;
private final String message;
@Override
public int[] array() {
return ARRAYS;
}
}

View File

@ -107,9 +107,15 @@ public class MachineProxyServiceImpl implements MachineProxyService {
@VisibleForTesting
void validateMachineProxyOnline(List<Long> ids) {
List<Long> idList = machineProxyMapper.getOnlineProxyListInIds(ids);
if(!idList.isEmpty()){
throw exception(MACHINE_PROXY_IS_ONLINE,idList);
List<MachineProxyDO> machineProxyDOS = machineProxyMapper.selectBatchIds(ids);
List<Long>onlineId=new ArrayList<>();
machineProxyDOS.forEach(machineProxyDO->{
if (machineProxyDO.getStatus() == MachineProxyStatus.ONLINE.getCode()) {
onlineId.add(machineProxyDO.getId());
}
});
if(!onlineId.isEmpty()){
throw exception(MACHINE_PROXY_IS_ONLINE,onlineId);
}
}