Merge remote-tracking branch 'origin/master'

master
汤全昆 2025-09-05 11:34:07 +08:00
commit 32bf291489
4 changed files with 22 additions and 7 deletions

View File

@ -5,16 +5,20 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.unisinsight.project.entity.dao.DeviceImageMapping; import com.unisinsight.project.entity.dao.DeviceImageMapping;
import com.unisinsight.project.entity.enums.GrpcTypeEnum;
import com.unisinsight.project.entity.req.DeviceImageMappingReq; import com.unisinsight.project.entity.req.DeviceImageMappingReq;
import com.unisinsight.project.entity.res.DeviceImageMappingRes; import com.unisinsight.project.entity.res.DeviceImageMappingRes;
import com.unisinsight.project.entity.res.ListReq; import com.unisinsight.project.entity.res.ListReq;
import com.unisinsight.project.exception.BaseErrorCode; import com.unisinsight.project.exception.BaseErrorCode;
import com.unisinsight.project.exception.Result; import com.unisinsight.project.exception.Result;
import com.unisinsight.project.grpc.generate.NotificationMessage;
import com.unisinsight.project.grpc.service.SendNotificationService;
import com.unisinsight.project.service.DeviceImageMappingService; import com.unisinsight.project.service.DeviceImageMappingService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -39,7 +43,8 @@ public class DeviceImageMappingController {
@Resource @Resource
private DeviceImageMappingService deviceImageMappingService; private DeviceImageMappingService deviceImageMappingService;
@Autowired
private SendNotificationService notificationService;
@ApiOperation(value = "终端镜像映射新增") @ApiOperation(value = "终端镜像映射新增")
@PostMapping("/add") @PostMapping("/add")
public Result<?> insert(@RequestBody ListReq<DeviceImageMappingReq> deviceImageMappingReq) { public Result<?> insert(@RequestBody ListReq<DeviceImageMappingReq> deviceImageMappingReq) {
@ -95,7 +100,10 @@ public class DeviceImageMappingController {
return Result.errorResult(BaseErrorCode.HTTP_ERROR_CODE_500); return Result.errorResult(BaseErrorCode.HTTP_ERROR_CODE_500);
} }
} }
//发送消息
notificationService.sendNotification(deviceImageMappingReq.getDeviceId(), NotificationMessage.newBuilder()
.setType(GrpcTypeEnum.IMAGE_UPDATE.getType())
.setContent(GrpcTypeEnum.IMAGE_UPDATE.getDesc()).build());
return Result.successResult(); return Result.successResult();
} }

View File

@ -31,6 +31,7 @@ public class LoginReq {
private String token; private String token;
@ApiModelProperty("mac地址") @ApiModelProperty("mac地址")
@JsonProperty("mac_addr")
private String macAddr; private String macAddr;

View File

@ -63,10 +63,10 @@ public class ClientServiceImpl implements ClientService {
HashMap<String, Object> map = new HashMap<>(); HashMap<String, Object> map = new HashMap<>();
map.put("id",e.getId()); map.put("id",e.getId());
if (StringUtils.isNotBlank(e.getDesktopName())) { if (StringUtils.isNotBlank(e.getDesktopName())) {
map.put("name", e.getDesktopName()); map.put("name", e.getDesktopName()+"."+e.getDesktopType());
} }
if (StringUtils.isNotBlank(e.getFileSize())) { if (StringUtils.isNotBlank(e.getFileSize())) {
map.put("file_size", e.getFileSize()); map.put("file_size", StringUtils.isNotEmpty(e.getFileSize()) ? Long.parseLong(e.getFileSize()) : 0L);
} }
if (StringUtils.isNotBlank(e.getStoragePath())) { if (StringUtils.isNotBlank(e.getStoragePath())) {
map.put("storage_path", e.getStoragePath()); map.put("storage_path", e.getStoragePath());

View File

@ -165,7 +165,7 @@ public class ImageVirtualMachinesServiceImpl extends ServiceImpl<ImageVirtualMac
.name(imageVirtualMachinesReq.getImageName()) .name(imageVirtualMachinesReq.getImageName())
.osType(imageVirtualMachinesReq.getOsVersion()) .osType(imageVirtualMachinesReq.getOsVersion())
.osVariant(StringUtils.isNotEmpty(imageVirtualMachinesReq.getOsVariant()) ? imageVirtualMachinesReq.getOsVariant() : "generic") .osVariant(StringUtils.isNotEmpty(imageVirtualMachinesReq.getOsVariant()) ? imageVirtualMachinesReq.getOsVariant() : "generic")
.vcpus(imageVirtualMachinesReq.getCpuTotal()) .vcpus(imageVirtualMachinesReq.getCpuCoreTotal())
.memory(imageVirtualMachinesReq.getMemoryTotal()) .memory(imageVirtualMachinesReq.getMemoryTotal())
.diskSize(imageVirtualMachinesReq.getSystemTotal()) .diskSize(imageVirtualMachinesReq.getSystemTotal())
@ -207,7 +207,7 @@ public class ImageVirtualMachinesServiceImpl extends ServiceImpl<ImageVirtualMac
// 调用镜像修改服务 // 调用镜像修改服务
ImageUpdateReq updateReq = ImageUpdateReq.builder() ImageUpdateReq updateReq = ImageUpdateReq.builder()
.vmName(imageVirtualMachinesReq.getImageName()) .vmName(imageVirtualMachinesReq.getImageName())
.vcpus(imageVirtualMachinesReq.getCpuTotal()) .vcpus(imageVirtualMachinesReq.getCpuCoreTotal())
.memory(imageVirtualMachinesReq.getMemoryTotal()) .memory(imageVirtualMachinesReq.getMemoryTotal())
.diskSize(imageVirtualMachinesReq.getSystemTotal()) .diskSize(imageVirtualMachinesReq.getSystemTotal())
.storagePoolName(imageVirtualMachinesReq.getStoragePoolName()) .storagePoolName(imageVirtualMachinesReq.getStoragePoolName())
@ -254,6 +254,12 @@ public class ImageVirtualMachinesServiceImpl extends ServiceImpl<ImageVirtualMac
log.info("查询镜像虚拟机返回为空"); log.info("查询镜像虚拟机返回为空");
return Result.errorResult(BaseErrorCode.HTTP_ERROR_CODE_500, "虚拟机不存在"); return Result.errorResult(BaseErrorCode.HTTP_ERROR_CODE_500, "虚拟机不存在");
} }
LambdaQueryWrapper<ImageDesktop> desktopLambdaQueryWrapper=new LambdaQueryWrapper<>();
desktopLambdaQueryWrapper.eq(ImageDesktop::getImageVirtualId, imageVirtualMachines.getId());
int count = imageDesktopService.count(desktopLambdaQueryWrapper);
if (count>0){
return Result.errorResult(BaseErrorCode.HTTP_ERROR_CODE_500, "该镜像有对应的克隆桌面,不允许删除");
}
// 调用镜像删除服务 // 调用镜像删除服务
ImageDeleteReq deleteReq = ImageDeleteReq.builder() ImageDeleteReq deleteReq = ImageDeleteReq.builder()
@ -298,7 +304,7 @@ public class ImageVirtualMachinesServiceImpl extends ServiceImpl<ImageVirtualMac
String diskPath = vmInfo.getDiskPath(); String diskPath = vmInfo.getDiskPath();
String type = "linux".equalsIgnoreCase(imageVirtualMachines.getOsVersion()) ? "vhd" : "qcow2"; String type = "linux".equalsIgnoreCase(imageVirtualMachines.getOsVersion()) ? "qcow2" : "vhd";
// 根据虚拟机信息调用远程虚拟机信息 // 根据虚拟机信息调用远程虚拟机信息
String fileName = imageVirtualMachines.getOsVersion() + "_desktop_" + System.currentTimeMillis(); String fileName = imageVirtualMachines.getOsVersion() + "_desktop_" + System.currentTimeMillis();