feat(device): 完善设备及网络接口管理功能
- 新增网络接口及地址配置相关实体类与映射 - 扩展 CreateDeviceRequest 支持嵌套接口与地址配置 - 调整设备类型实体类字段并增强逻辑删除支持 - 优化数据表结构,分离接口属性与地址配置 - 新增 DNS 服务器及相关映射实体支持 - 实现设备创建事务中同步保存接口与地址信息 - 调整 MyBatis Plus 逻辑删除配置与时间字段类型 - 重构 data.sql 初始化脚本,完善表间外键约束
This commit is contained in:
@@ -3,26 +3,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.Device;
|
||||
import cn.nopj.chaos_api.domain.entity.InterfaceAddressConfig;
|
||||
import cn.nopj.chaos_api.domain.entity.NetworkInterface;
|
||||
import cn.nopj.chaos_api.dto.request.CreateDeviceRequest;
|
||||
import cn.nopj.chaos_api.dto.request.DeviceQueryRequest;
|
||||
import cn.nopj.chaos_api.dto.request.UpdateDeviceRequest;
|
||||
import cn.nopj.chaos_api.dto.response.DeviceResponse;
|
||||
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 com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> implements DeviceService {
|
||||
@Autowired
|
||||
NetworkInterfaceMapper networkInterfaceMapper;
|
||||
@Autowired
|
||||
InterfaceAddressConfigMapper interfaceAddressConfigMapper;
|
||||
@Override
|
||||
@Transactional
|
||||
public DeviceResponse createDevice(CreateDeviceRequest createDeviceRequest) {
|
||||
@@ -34,10 +44,37 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
|
||||
device.setSnmpCommunity(createDeviceRequest.getSnmpCommunity());
|
||||
device.setManufacturer(createDeviceRequest.getManufacturer());
|
||||
device.setPurchaseDate(createDeviceRequest.getPurchaseDate());
|
||||
device.setStatus(createDeviceRequest.getStatus());
|
||||
device.setRemark(createDeviceRequest.getRemark());
|
||||
int rows = this.baseMapper.insert(device);
|
||||
|
||||
|
||||
List<CreateDeviceRequest.NetworkInterfaceRequest> interfaces = createDeviceRequest.getInterfaces();
|
||||
interfaces.forEach(i -> {
|
||||
NetworkInterface networkInterface = new NetworkInterface();
|
||||
networkInterface.setDeviceId(device.getId());
|
||||
networkInterface.setName(i.getName());
|
||||
networkInterface.setType(i.getType());
|
||||
networkInterface.setMacAddress(i.getMacAddress());
|
||||
networkInterface.setPortSpeed(i.getPortSpeed());
|
||||
networkInterface.setDuplex(i.getDuplex());
|
||||
networkInterface.setRemark(i.getRemark());
|
||||
networkInterfaceMapper.insert(networkInterface);
|
||||
|
||||
i.getAddressConfigs().forEach(a -> {
|
||||
InterfaceAddressConfig iac = new InterfaceAddressConfig();
|
||||
iac.setVlanId(a.getVlanId());
|
||||
iac.setIpAddress(a.getIpAddress());
|
||||
iac.setGatewayIp(a.getGatewayIp());
|
||||
iac.setSubnetMask(a.getSubnetMask());
|
||||
iac.setBroadcastAddress(a.getBroadcastAddress());
|
||||
iac.setIsPrimary(a.getIsPrimary());
|
||||
iac.setIsDhcp(a.getIsDhcp());
|
||||
iac.setMtu(a.getMtu());
|
||||
interfaceAddressConfigMapper.insert(iac);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
if (rows > 0){
|
||||
return new DeviceResponse(device);
|
||||
}else {
|
||||
|
||||
@@ -2,7 +2,6 @@ package cn.nopj.chaos_api.service.impl;
|
||||
|
||||
import cn.nopj.chaos_api.domain.entity.Role;
|
||||
import cn.nopj.chaos_api.dto.response.OptionResponse;
|
||||
import cn.nopj.chaos_api.dto.response.RoleResponse;
|
||||
import cn.nopj.chaos_api.mapper.RoleMapper;
|
||||
import cn.nopj.chaos_api.service.RoleService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
Reference in New Issue
Block a user