feat(device): 添加设备创建时关联DNS服务器功能

- 在DeviceServiceImpl中注入DnsServerService依赖
- 设备创建流程中增加DNS服务器名称列表的处理逻辑
- 调用DnsServerService根据DNS名称列表获取对应ID列表
- 新增DnsServerService接口及实现类DnsServerServiceImpl
- 实现根据单个或多个DNS名称查询对应服务器ID的方法
- 在ErrorCode中新增DNS相关错误码定义
This commit is contained in:
chaos
2025-11-29 06:41:26 +08:00
parent cc70d867c1
commit 1e09ce9f54
4 changed files with 77 additions and 1 deletions

View File

@@ -13,6 +13,7 @@ import cn.nopj.chaos_api.mapper.DeviceMapper;
import cn.nopj.chaos_api.mapper.InterfaceAddressConfigMapper;
import cn.nopj.chaos_api.mapper.NetworkInterfaceMapper;
import cn.nopj.chaos_api.service.DeviceService;
import cn.nopj.chaos_api.service.DnsServerService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -33,6 +34,8 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
NetworkInterfaceMapper networkInterfaceMapper;
@Autowired
InterfaceAddressConfigMapper interfaceAddressConfigMapper;
@Autowired
DnsServerService dnsServerService;
@Override
@Transactional
public DeviceResponse createDevice(CreateDeviceRequest createDeviceRequest) {
@@ -71,6 +74,10 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
iac.setIsDhcp(a.getIsDhcp());
iac.setMtu(a.getMtu());
interfaceAddressConfigMapper.insert(iac);
List<String> dnsServers = a.getDnsServers();
List<Long> dnsServerIdListByNameList = dnsServerService.getDnsServerIdListByNameList(dnsServers);
});
});

View File

@@ -0,0 +1,36 @@
package cn.nopj.chaos_api.service.impl;
import cn.nopj.chaos_api.common.constants.ErrorCode;
import cn.nopj.chaos_api.common.exceotion.BizException;
import cn.nopj.chaos_api.domain.entity.DnsServer;
import cn.nopj.chaos_api.mapper.DnsServerMapper;
import cn.nopj.chaos_api.service.DnsServerService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class DnsServerServiceImpl extends ServiceImpl<DnsServerMapper, DnsServer> implements DnsServerService {
@Override
public Long getDnsServerIdByName(String dnsAddress) {
if (dnsAddress == null || dnsAddress.isEmpty()){
throw new BizException(ErrorCode.DNS_NOT_FOUND);
}
DnsServer dnsServer = this.baseMapper.selectOne(new LambdaQueryWrapper<DnsServer>().eq(DnsServer::getName, dnsAddress));
if (dnsServer == null ){
throw new BizException(ErrorCode.DNS_NOT_DEFINED);
}
return dnsServer.getId();
}
@Override
public List<Long> getDnsServerIdListByNameList(List<String> nameList) {
return nameList.stream().map(this::getDnsServerIdByName).toList();
}
}