diff --git a/chaos_api_common/src/main/java/cn/nopj/chaos_api/common/constants/ErrorCode.java b/chaos_api_common/src/main/java/cn/nopj/chaos_api/common/constants/ErrorCode.java index 4c1efc9..128a772 100644 --- a/chaos_api_common/src/main/java/cn/nopj/chaos_api/common/constants/ErrorCode.java +++ b/chaos_api_common/src/main/java/cn/nopj/chaos_api/common/constants/ErrorCode.java @@ -61,7 +61,19 @@ public enum ErrorCode { DEVICE_DELETE_FAILED(500, "DEVICE-303", "设备删除失败"), DEVICE_TYPE_DELETE_FAILED(500, "DEVICE-304", "设备类型删除失败"), DEVICE_TYPE_NOT_EMPTY(400, "DEVICE-305", "设备类型不为空"), - DEVICE_DISABLED(403, "DEVICE-306", "设备已禁用"); + DEVICE_DISABLED(403, "DEVICE-306", "设备已禁用"), + + // DNS + DNS_NOT_DEFINED( 400, "DNS-401" , "未定义的DNS服务器" ), + DNS_NOT_FOUND(404, "DNS-402", "DNS服务器不存在"), + DNS_DELETE_FAILED(500, "DNS-403", "DNS服务器删除失败"), + DNS_NOT_EMPTY(400, "DNS-404", "DNS服务器不为空"), + DNS_DISABLED(403, "DNS-405", "DNS服务器已禁用"), + DNS_NOT_EXISTS(400, "DNS-406", "DNS服务器不存在"), + DNS_NOT_EXISTS_OR_PASSWORD_WRONG(401, "DNS-407", "DNS服务器不存在或密码错误"), + DNS_UPDATE_FAILED(400, "DNS-408", "DNS服务器更新失败"), + + ; private final int httpStatus; private final String code; // 业务错误码(领域-编号) diff --git a/chaos_api_interface/src/main/java/cn/nopj/chaos_api/service/DnsServerService.java b/chaos_api_interface/src/main/java/cn/nopj/chaos_api/service/DnsServerService.java new file mode 100644 index 0000000..d1c1044 --- /dev/null +++ b/chaos_api_interface/src/main/java/cn/nopj/chaos_api/service/DnsServerService.java @@ -0,0 +1,21 @@ +package cn.nopj.chaos_api.service; + +import java.util.List; + +public interface DnsServerService { + + /** + * 根据域名获取DNS服务器ID + * @param dnsAddress 域名 + * @return DNS服务器ID + */ + Long getDnsServerIdByName(String dnsAddress); + + /** + * 根据域名列表获取DNS服务器ID列表 + * @param nameList 域名列表 + * @return DNS服务器ID列表 + */ + List getDnsServerIdListByNameList(List nameList); + +} diff --git a/chaos_api_service/src/main/java/cn/nopj/chaos_api/service/impl/DeviceServiceImpl.java b/chaos_api_service/src/main/java/cn/nopj/chaos_api/service/impl/DeviceServiceImpl.java index 2b5b9cb..438087d 100644 --- a/chaos_api_service/src/main/java/cn/nopj/chaos_api/service/impl/DeviceServiceImpl.java +++ b/chaos_api_service/src/main/java/cn/nopj/chaos_api/service/impl/DeviceServiceImpl.java @@ -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 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 impleme iac.setIsDhcp(a.getIsDhcp()); iac.setMtu(a.getMtu()); interfaceAddressConfigMapper.insert(iac); + + List dnsServers = a.getDnsServers(); + List dnsServerIdListByNameList = dnsServerService.getDnsServerIdListByNameList(dnsServers); + }); }); diff --git a/chaos_api_service/src/main/java/cn/nopj/chaos_api/service/impl/DnsServerServiceImpl.java b/chaos_api_service/src/main/java/cn/nopj/chaos_api/service/impl/DnsServerServiceImpl.java new file mode 100644 index 0000000..98f264a --- /dev/null +++ b/chaos_api_service/src/main/java/cn/nopj/chaos_api/service/impl/DnsServerServiceImpl.java @@ -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 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().eq(DnsServer::getName, dnsAddress)); + + if (dnsServer == null ){ + throw new BizException(ErrorCode.DNS_NOT_DEFINED); + } + + return dnsServer.getId(); + } + + @Override + public List getDnsServerIdListByNameList(List nameList) { + return nameList.stream().map(this::getDnsServerIdByName).toList(); + } +}