diff --git a/nex-be/src/main/java/com/unisinsight/project/controller/ImageDesktopController.java b/nex-be/src/main/java/com/unisinsight/project/controller/ImageDesktopController.java new file mode 100644 index 0000000..a0eaf7c --- /dev/null +++ b/nex-be/src/main/java/com/unisinsight/project/controller/ImageDesktopController.java @@ -0,0 +1,101 @@ +package com.unisinsight.project.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.unisinsight.project.entity.dao.ImageDesktop; +import com.unisinsight.project.entity.req.ImageDesktopReq; +import com.unisinsight.project.entity.res.ImageDesktopRes; +import com.unisinsight.project.service.ImageDesktopService; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +import javax.annotation.Resource; +import java.io.Serializable; +import java.util.List; + +import com.unisinsight.project.exception.Result; +import lombok.extern.slf4j.Slf4j; +import com.unisinsight.project.exception.BaseErrorCode; + +import java.util.Objects; + +import com.unisinsight.project.entity.req.DeleteIdReq; +import cn.hutool.json.JSONUtil; + +/** + * 桌面镜像(ImageDesktop)表控制层 + * + * @author ch + * @since 2025-08-29 09:23:01 + */ +@RestController +@Api(tags = "桌面镜像") +@Slf4j +@RequestMapping("/api/nex/v1/image_desktop") +public class ImageDesktopController { + /** + * 服务对象 + */ + @Resource + private ImageDesktopService service; + + /** + * 分页查询所有数据 + * + * @param page 分页对象 + * @param imageDesktop 查询实体 + * @return 所有数据 + */ + @PostMapping("/select/page") + @ApiOperation(value = "分页查询桌面镜像") + public Result selectPage(@RequestBody ImageDesktopReq imageDesktopReq) { + if (Objects.isNull(imageDesktopReq)) { + return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR); + } + log.info("分页查询桌面镜像请求参数为:{}", JSONUtil.toJsonStr(imageDesktopReq)); + return service.selectPage(imageDesktopReq); + } + + @ApiOperation(value = "桌面镜像新增") + @PostMapping("/add") + public Result insertImageVirtualMachines(@RequestBody ImageDesktopReq imageDesktopReq) { + if (Objects.isNull(imageDesktopReq)) { + return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR); + } + log.info("桌面镜像新增请求参数为:{}", JSONUtil.toJsonStr(imageDesktopReq)); + return service.insert(imageDesktopReq); + } + + @ApiOperation(value = "桌面镜像修改") + @PostMapping("/update") + public Result updateUser(@RequestBody ImageDesktopReq imageDesktopReq) { + if (Objects.isNull(imageDesktopReq)) { + return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR); + } + log.info("桌面镜像修改请求参数为:{}", JSONUtil.toJsonStr(imageDesktopReq)); + return service.update(imageDesktopReq); + } + + @ApiOperation(value = "桌面镜像查询") + @PostMapping("/query") + public Result queryUser(@RequestBody ImageDesktopReq imageDesktopReq) { + if (Objects.isNull(imageDesktopReq)) { + return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR); + } + log.info("桌面镜像查询请求参数为:{}", JSONUtil.toJsonStr(imageDesktopReq)); + return service.query(imageDesktopReq); + } + + @ApiOperation(value = "桌面镜像删除") + @PostMapping("/delete") + public Result delete(@RequestBody DeleteIdReq deleteIdReq) { + if (Objects.isNull(deleteIdReq)) { + return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR); + } + log.info("桌面镜像删除请求参数为:{}", JSONUtil.toJsonStr(deleteIdReq)); + return service.delete(deleteIdReq); + } +} + diff --git a/nex-be/src/main/java/com/unisinsight/project/controller/ImageVirtualMachinesController.java b/nex-be/src/main/java/com/unisinsight/project/controller/ImageVirtualMachinesController.java index 2ae7150..5bba7fc 100644 --- a/nex-be/src/main/java/com/unisinsight/project/controller/ImageVirtualMachinesController.java +++ b/nex-be/src/main/java/com/unisinsight/project/controller/ImageVirtualMachinesController.java @@ -90,7 +90,7 @@ public class ImageVirtualMachinesController { log.info("镜像虚拟机删除请求参数为:{}", JSONUtil.toJsonStr(deleteIdReq)); return service.delete(deleteIdReq); } - @ApiOperation(value = "终端删除") + @ApiOperation(value = "终端克隆") @PostMapping("/clone/template") public Result cloneTemplate(@RequestBody ImageVirtualMachinesReq req) { if (Objects.isNull(req)) { @@ -99,6 +99,33 @@ public class ImageVirtualMachinesController { log.info("镜像虚拟机克隆为模板请求参数为:{}", JSONUtil.toJsonStr(req)); return service.cloneTemplate(req); } + @ApiOperation(value = "终端启动") + @PostMapping("/start") + public Result start(@RequestBody ImageVirtualMachinesReq req) { + if (Objects.isNull(req)) { + return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR); + } + log.info("终端启动请求参数为:{}", JSONUtil.toJsonStr(req)); + return service.cloneTemplate(req); + } + @ApiOperation(value = "终端重启") + @PostMapping("/reboot") + public Result reboot(@RequestBody ImageVirtualMachinesReq req) { + if (Objects.isNull(req)) { + return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR); + } + log.info("终端重启请求参数为:{}", JSONUtil.toJsonStr(req)); + return service.cloneTemplate(req); + } + @ApiOperation(value = "终端快照") + @PostMapping("/snapshot") + public Result snapshot(@RequestBody ImageVirtualMachinesReq req) { + if (Objects.isNull(req)) { + return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR); + } + log.info("终端快照请求参数为:{}", JSONUtil.toJsonStr(req)); + return service.cloneTemplate(req); + } } diff --git a/nex-be/src/main/java/com/unisinsight/project/entity/dao/ImageDesktop.java b/nex-be/src/main/java/com/unisinsight/project/entity/dao/ImageDesktop.java new file mode 100644 index 0000000..27e40e2 --- /dev/null +++ b/nex-be/src/main/java/com/unisinsight/project/entity/dao/ImageDesktop.java @@ -0,0 +1,141 @@ +package com.unisinsight.project.entity.dao; + + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 桌面镜像(ImageDesktop)表实体类 + * + * @author ch + * @since 2025-08-29 09:25:39 + */ +@TableName(value = "image_desktop") +@Data +@ApiModel("桌面镜像") +public class ImageDesktop extends Model { + /** + * ID + **/ + @TableId(value = "id", type = IdType.AUTO) + @ApiModelProperty("ID") + private Long id; + /** + * 名称 + **/ + + + @TableField(value = "desktop_name") + @ApiModelProperty("名称") + private String desktopName; + /** + * 桌面类型:1:VHD 2:VHDX 3:QCOW2 + **/ + + + @TableField(value = "desktop_type") + @ApiModelProperty("桌面类型:1:VHD 2:VHDX 3:QCOW2") + private Integer desktopType; + /** + * 父镜像id + **/ + + + @TableField(value = "image_virtual_id") + @ApiModelProperty("父镜像id") + private Integer imageVirtualId; + /** + * 发布状态 + **/ + + + @TableField(value = "publish_status") + @ApiModelProperty("发布状态") + private String publishStatus; + /** + * 操作系统 + **/ + + + @TableField(value = "os_version") + @ApiModelProperty("操作系统") + private String osVersion; + /** + * BT路径 + **/ + + + @TableField(value = "bt_path") + @ApiModelProperty("BT路径") + private String btPath; + /** + * 镜像存储路径 + **/ + + + @TableField(value = "storage_path") + @ApiModelProperty("镜像存储路径") + private String storagePath; + /** + * 创建时间 + **/ + + + @TableField(value = "create_time", fill = FieldFill.INSERT) + @ApiModelProperty("创建时间") + private String createTime; + /** + * 创建人 + **/ + + + @TableField(value = "create_user") + @ApiModelProperty("创建人") + private String createUser; + /** + * 更新时间 + **/ + + + @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) + @ApiModelProperty("更新时间") + private String updateTime; + /** + * 更新人 + **/ + + + @TableField(value = "update_user") + @ApiModelProperty("更新人") + private String updateUser; + /** + * 是否删除:0-否,1-删除 + **/ + + + @TableField(value = "deleted") + @ApiModelProperty("是否删除:0-否,1-删除") + private Integer deleted; + /** + * 描述 + **/ + + + @TableField(value = "description") + @ApiModelProperty("描述") + private String description; + /** + * 发布时间 + **/ + + + @TableField(value = "publish_time") + @ApiModelProperty("发布时间") + private String publishTime; + +} + diff --git a/nex-be/src/main/java/com/unisinsight/project/entity/req/ImageDesktopReq.java b/nex-be/src/main/java/com/unisinsight/project/entity/req/ImageDesktopReq.java new file mode 100644 index 0000000..33e283e --- /dev/null +++ b/nex-be/src/main/java/com/unisinsight/project/entity/req/ImageDesktopReq.java @@ -0,0 +1,123 @@ +package com.unisinsight.project.entity.req; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 桌面镜像(ImageDesktop)表实体类 + * + * @author ch + * @since 2025-08-29 09:23:01 + */ +@Data +@ApiModel("桌面镜像") +public class ImageDesktopReq { + /** + * ID + **/ + @JsonProperty("id") + @ApiModelProperty("ID") + private Long id; + /** + * 名称 + **/ + @JsonProperty("desktop_name") + @ApiModelProperty("名称") + private String desktopName; + /** + * 桌面类型:1:VHD 2:VHDX 3:QCOW2 + **/ + @JsonProperty("desktop_type") + @ApiModelProperty("桌面类型:1:VHD 2:VHDX 3:QCOW2") + private Integer desktopType; + /** + * 父镜像id + **/ + @JsonProperty("image_virtual_id") + @ApiModelProperty("父镜像id") + private Integer imageVirtualId; + /** + * 发布状态 + **/ + @JsonProperty("publish_status") + @ApiModelProperty("发布状态") + private String publishStatus; + /** + * 操作系统 + **/ + @JsonProperty("os_version") + @ApiModelProperty("操作系统") + private String osVersion; + /** + * BT路径 + **/ + @JsonProperty("bt_path") + @ApiModelProperty("BT路径") + private String btPath; + /** + * 镜像存储路径 + **/ + @JsonProperty("storage_path") + @ApiModelProperty("镜像存储路径") + private String storagePath; + /** + * 创建时间 + **/ + @JsonProperty("create_time") + @ApiModelProperty("创建时间") + private String createTime; + /** + * 创建人 + **/ + @JsonProperty("create_user") + @ApiModelProperty("创建人") + private String createUser; + /** + * 更新时间 + **/ + @JsonProperty("update_time") + @ApiModelProperty("更新时间") + private String updateTime; + /** + * 更新人 + **/ + @JsonProperty("update_user") + @ApiModelProperty("更新人") + private String updateUser; + /** + * 是否删除:0-否,1-删除 + **/ + @JsonProperty("deleted") + @ApiModelProperty("是否删除:0-否,1-删除") + private Integer deleted; + /** + * 描述 + **/ + @JsonProperty("description") + @ApiModelProperty("描述") + private String description; + /** + * 发布时间 + **/ + @JsonProperty("publish_time") + @ApiModelProperty("发布时间") + private String publishTime; + /** + * 查询页 + */ + @ApiModelProperty(value = "查询页", notes = "分页查询时再传") + @JsonProperty("page_num") + private Integer pageNum; + + + /** + * 每页数量 + */ + @ApiModelProperty(value = "每页数量", notes = "分页查询时再传") + @JsonProperty("page_size") + private Integer pageSize; +} + diff --git a/nex-be/src/main/java/com/unisinsight/project/entity/res/ImageDesktopRes.java b/nex-be/src/main/java/com/unisinsight/project/entity/res/ImageDesktopRes.java new file mode 100644 index 0000000..49ed8e1 --- /dev/null +++ b/nex-be/src/main/java/com/unisinsight/project/entity/res/ImageDesktopRes.java @@ -0,0 +1,112 @@ +package com.unisinsight.project.entity.res; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 桌面镜像(ImageDesktop)表实体类 + * + * @author ch + * @since 2025-08-29 09:23:02 + */ +@Data +@ApiModel("桌面镜像") +public class ImageDesktopRes implements Serializable { + /** + * ID + **/ + @JsonProperty("id") + @ApiModelProperty("ID") + private Long id; + /** + * 名称 + **/ + @JsonProperty("desktop_name") + @ApiModelProperty("名称") + private String desktopName; + /** + * 桌面类型:1:VHD 2:VHDX 3:QCOW2 + **/ + @JsonProperty("desktop_type") + @ApiModelProperty("桌面类型:1:VHD 2:VHDX 3:QCOW2") + private Integer desktopType; + /** + * 父镜像id + **/ + @JsonProperty("image_virtual_id") + @ApiModelProperty("父镜像id") + private Integer imageVirtualId; + /** + * 发布状态 + **/ + @JsonProperty("publish_status") + @ApiModelProperty("发布状态") + private String publishStatus; + /** + * 操作系统 + **/ + @JsonProperty("os_version") + @ApiModelProperty("操作系统") + private String osVersion; + /** + * BT路径 + **/ + @JsonProperty("bt_path") + @ApiModelProperty("BT路径") + private String btPath; + /** + * 镜像存储路径 + **/ + @JsonProperty("storage_path") + @ApiModelProperty("镜像存储路径") + private String storagePath; + /** + * 创建时间 + **/ + @JsonProperty("create_time") + @ApiModelProperty("创建时间") + private String createTime; + /** + * 创建人 + **/ + @JsonProperty("create_user") + @ApiModelProperty("创建人") + private String createUser; + /** + * 更新时间 + **/ + @JsonProperty("update_time") + @ApiModelProperty("更新时间") + private String updateTime; + /** + * 更新人 + **/ + @JsonProperty("update_user") + @ApiModelProperty("更新人") + private String updateUser; + /** + * 是否删除:0-否,1-删除 + **/ + @JsonProperty("deleted") + @ApiModelProperty("是否删除:0-否,1-删除") + private Integer deleted; + /** + * 描述 + **/ + @JsonProperty("description") + @ApiModelProperty("描述") + private String description; + /** + * 发布时间 + **/ + @JsonProperty("publish_time") + @ApiModelProperty("发布时间") + private String publishTime; + +} + diff --git a/nex-be/src/main/java/com/unisinsight/project/grpc/generate/NotificationProto.java b/nex-be/src/main/java/com/unisinsight/project/grpc/generate/NotificationProto.java index 5e3f656..0440cfd 100644 --- a/nex-be/src/main/java/com/unisinsight/project/grpc/generate/NotificationProto.java +++ b/nex-be/src/main/java/com/unisinsight/project/grpc/generate/NotificationProto.java @@ -38,17 +38,17 @@ public final class NotificationProto { descriptor; static { java.lang.String[] descriptorData = { - "\n\rmessage.proto\"8\n\017RegisterRequest\022\021\n\tcl" + - "ient_sn\030\001 \001(\t\022\022\n\nclient_mac\030\002 \001(\t\"b\n\023Not" + - "ificationMessage\022\014\n\004type\030\001 \001(\t\022\017\n\007conten" + - "t\030\002 \001(\t\022\021\n\ttimestamp\030\003 \001(\003\022\014\n\004code\030\004 \001(\005" + - "\022\013\n\003msg\030\005 \001(\t\"/\n\013MsgResponse\022\017\n\007success\030" + - "\001 \001(\010\022\017\n\007message\030\002 \001(\t2\213\001\n\023NotificationS" + - "ervice\022:\n\016RegisterStream\022\020.RegisterReque" + - "st\032\024.NotificationMessage0\001\0228\n\016shutdownCl" + - "ient\022\020.RegisterRequest\032\024.NotificationMes" + - "sageB<\n%com.unisinsight.project.grpc.gen" + - "erateB\021NotificationProtoP\001b\006proto3" + "\n\rmessage.proto\"9\n\017RegisterRequest\022\021\n\tcl" + + "ient_sn\030\001 \001(\t\022\023\n\013client_user\030\002 \001(\t\"b\n\023No" + + "tificationMessage\022\014\n\004type\030\001 \001(\t\022\017\n\007conte" + + "nt\030\002 \001(\t\022\021\n\ttimestamp\030\003 \001(\003\022\014\n\004code\030\004 \001(" + + "\005\022\013\n\003msg\030\005 \001(\t\"/\n\013MsgResponse\022\017\n\007success" + + "\030\001 \001(\010\022\017\n\007message\030\002 \001(\t2\213\001\n\023Notification" + + "Service\022:\n\016RegisterStream\022\020.RegisterRequ" + + "est\032\024.NotificationMessage0\001\0228\n\016shutdownC" + + "lient\022\020.RegisterRequest\032\024.NotificationMe" + + "ssageB<\n%com.unisinsight.project.grpc.ge" + + "nerateB\021NotificationProtoP\001b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -59,7 +59,7 @@ public final class NotificationProto { internal_static_RegisterRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_RegisterRequest_descriptor, - new java.lang.String[] { "ClientSn", "ClientMac", }); + new java.lang.String[] { "ClientSn", "ClientUser", }); internal_static_NotificationMessage_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_NotificationMessage_fieldAccessorTable = new diff --git a/nex-be/src/main/java/com/unisinsight/project/grpc/generate/RegisterRequest.java b/nex-be/src/main/java/com/unisinsight/project/grpc/generate/RegisterRequest.java index ede0027..2b735d3 100644 --- a/nex-be/src/main/java/com/unisinsight/project/grpc/generate/RegisterRequest.java +++ b/nex-be/src/main/java/com/unisinsight/project/grpc/generate/RegisterRequest.java @@ -17,7 +17,7 @@ private static final long serialVersionUID = 0L; } private RegisterRequest() { clientSn_ = ""; - clientMac_ = ""; + clientUser_ = ""; } @java.lang.Override @@ -59,7 +59,7 @@ private static final long serialVersionUID = 0L; case 18: { java.lang.String s = input.readStringRequireUtf8(); - clientMac_ = s; + clientUser_ = s; break; } default: { @@ -132,38 +132,38 @@ private static final long serialVersionUID = 0L; } } - public static final int CLIENT_MAC_FIELD_NUMBER = 2; - private volatile java.lang.Object clientMac_; + public static final int CLIENT_USER_FIELD_NUMBER = 2; + private volatile java.lang.Object clientUser_; /** - * string client_mac = 2; - * @return The clientMac. + * string client_user = 2; + * @return The clientUser. */ @java.lang.Override - public java.lang.String getClientMac() { - java.lang.Object ref = clientMac_; + public java.lang.String getClientUser() { + java.lang.Object ref = clientUser_; if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); - clientMac_ = s; + clientUser_ = s; return s; } } /** - * string client_mac = 2; - * @return The bytes for clientMac. + * string client_user = 2; + * @return The bytes for clientUser. */ @java.lang.Override public com.google.protobuf.ByteString - getClientMacBytes() { - java.lang.Object ref = clientMac_; + getClientUserBytes() { + java.lang.Object ref = clientUser_; if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); - clientMac_ = b; + clientUser_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; @@ -187,8 +187,8 @@ private static final long serialVersionUID = 0L; if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientSn_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, clientSn_); } - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientMac_)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 2, clientMac_); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientUser_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, clientUser_); } unknownFields.writeTo(output); } @@ -202,8 +202,8 @@ private static final long serialVersionUID = 0L; if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientSn_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, clientSn_); } - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientMac_)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, clientMac_); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(clientUser_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, clientUser_); } size += unknownFields.getSerializedSize(); memoizedSize = size; @@ -222,8 +222,8 @@ private static final long serialVersionUID = 0L; if (!getClientSn() .equals(other.getClientSn())) return false; - if (!getClientMac() - .equals(other.getClientMac())) return false; + if (!getClientUser() + .equals(other.getClientUser())) return false; if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -237,8 +237,8 @@ private static final long serialVersionUID = 0L; hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + CLIENT_SN_FIELD_NUMBER; hash = (53 * hash) + getClientSn().hashCode(); - hash = (37 * hash) + CLIENT_MAC_FIELD_NUMBER; - hash = (53 * hash) + getClientMac().hashCode(); + hash = (37 * hash) + CLIENT_USER_FIELD_NUMBER; + hash = (53 * hash) + getClientUser().hashCode(); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -374,7 +374,7 @@ private static final long serialVersionUID = 0L; super.clear(); clientSn_ = ""; - clientMac_ = ""; + clientUser_ = ""; return this; } @@ -403,7 +403,7 @@ private static final long serialVersionUID = 0L; public com.unisinsight.project.grpc.generate.RegisterRequest buildPartial() { com.unisinsight.project.grpc.generate.RegisterRequest result = new com.unisinsight.project.grpc.generate.RegisterRequest(this); result.clientSn_ = clientSn_; - result.clientMac_ = clientMac_; + result.clientUser_ = clientUser_; onBuilt(); return result; } @@ -456,8 +456,8 @@ private static final long serialVersionUID = 0L; clientSn_ = other.clientSn_; onChanged(); } - if (!other.getClientMac().isEmpty()) { - clientMac_ = other.clientMac_; + if (!other.getClientUser().isEmpty()) { + clientUser_ = other.clientUser_; onChanged(); } this.mergeUnknownFields(other.unknownFields); @@ -565,78 +565,78 @@ private static final long serialVersionUID = 0L; return this; } - private java.lang.Object clientMac_ = ""; + private java.lang.Object clientUser_ = ""; /** - * string client_mac = 2; - * @return The clientMac. + * string client_user = 2; + * @return The clientUser. */ - public java.lang.String getClientMac() { - java.lang.Object ref = clientMac_; + public java.lang.String getClientUser() { + java.lang.Object ref = clientUser_; if (!(ref instanceof java.lang.String)) { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); - clientMac_ = s; + clientUser_ = s; return s; } else { return (java.lang.String) ref; } } /** - * string client_mac = 2; - * @return The bytes for clientMac. + * string client_user = 2; + * @return The bytes for clientUser. */ public com.google.protobuf.ByteString - getClientMacBytes() { - java.lang.Object ref = clientMac_; + getClientUserBytes() { + java.lang.Object ref = clientUser_; if (ref instanceof String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); - clientMac_ = b; + clientUser_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } /** - * string client_mac = 2; - * @param value The clientMac to set. + * string client_user = 2; + * @param value The clientUser to set. * @return This builder for chaining. */ - public Builder setClientMac( + public Builder setClientUser( java.lang.String value) { if (value == null) { throw new NullPointerException(); } - clientMac_ = value; + clientUser_ = value; onChanged(); return this; } /** - * string client_mac = 2; + * string client_user = 2; * @return This builder for chaining. */ - public Builder clearClientMac() { + public Builder clearClientUser() { - clientMac_ = getDefaultInstance().getClientMac(); + clientUser_ = getDefaultInstance().getClientUser(); onChanged(); return this; } /** - * string client_mac = 2; - * @param value The bytes for clientMac to set. + * string client_user = 2; + * @param value The bytes for clientUser to set. * @return This builder for chaining. */ - public Builder setClientMacBytes( + public Builder setClientUserBytes( com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } checkByteStringIsUtf8(value); - clientMac_ = value; + clientUser_ = value; onChanged(); return this; } diff --git a/nex-be/src/main/java/com/unisinsight/project/grpc/generate/RegisterRequestOrBuilder.java b/nex-be/src/main/java/com/unisinsight/project/grpc/generate/RegisterRequestOrBuilder.java index 185ca8d..e8276c9 100644 --- a/nex-be/src/main/java/com/unisinsight/project/grpc/generate/RegisterRequestOrBuilder.java +++ b/nex-be/src/main/java/com/unisinsight/project/grpc/generate/RegisterRequestOrBuilder.java @@ -20,14 +20,14 @@ public interface RegisterRequestOrBuilder extends getClientSnBytes(); /** - * string client_mac = 2; - * @return The clientMac. + * string client_user = 2; + * @return The clientUser. */ - java.lang.String getClientMac(); + java.lang.String getClientUser(); /** - * string client_mac = 2; - * @return The bytes for clientMac. + * string client_user = 2; + * @return The bytes for clientUser. */ com.google.protobuf.ByteString - getClientMacBytes(); + getClientUserBytes(); } diff --git a/nex-be/src/main/java/com/unisinsight/project/grpc/proto/message.proto b/nex-be/src/main/java/com/unisinsight/project/grpc/proto/message.proto index 016e612..42c6c0e 100644 --- a/nex-be/src/main/java/com/unisinsight/project/grpc/proto/message.proto +++ b/nex-be/src/main/java/com/unisinsight/project/grpc/proto/message.proto @@ -13,7 +13,7 @@ service NotificationService { message RegisterRequest { string client_sn = 1; - string client_mac = 2; + string client_user = 2; } message NotificationMessage { diff --git a/nex-be/src/main/java/com/unisinsight/project/grpc/service/ClientNotificationServiceImpl.java b/nex-be/src/main/java/com/unisinsight/project/grpc/service/ClientNotificationServiceImpl.java index b12d811..3a2124f 100644 --- a/nex-be/src/main/java/com/unisinsight/project/grpc/service/ClientNotificationServiceImpl.java +++ b/nex-be/src/main/java/com/unisinsight/project/grpc/service/ClientNotificationServiceImpl.java @@ -52,7 +52,7 @@ public class ClientNotificationServiceImpl extends NotificationServiceGrpc.Notif @Override public void registerStream(RegisterRequest request, StreamObserver responseObserver) { String clientSn = request.getClientSn(); - String clientMac = request.getClientMac(); + String clientUser = request.getClientUser(); if (StringUtil.isEmpty(clientSn)) { NotificationMessage errMsg = NotificationMessage.newBuilder() @@ -64,19 +64,19 @@ public class ClientNotificationServiceImpl extends NotificationServiceGrpc.Notif return; // 避免继续执行后续逻辑 } - if (StringUtil.isEmpty(clientMac)) { + if (StringUtil.isEmpty(clientUser)) { NotificationMessage errMsg = NotificationMessage.newBuilder() .setCode(HttpStatus.BAD_REQUEST.value()) - .setMsg("client_mac不能为空") + .setMsg("client_user不能为空") .build(); responseObserver.onNext(errMsg); responseObserver.onCompleted(); return; // 避免继续执行后续逻辑 } - log.info("客户端连接:client_sn:[{}],client_mac: [{}]", clientSn, clientMac); + log.info("客户端连接:client_sn:[{}],client_user: [{}]", clientSn, clientUser); - addClientConnection(responseObserver, clientSn, clientMac); + addClientConnection(responseObserver, clientSn, clientUser); responseObserver.onNext(NotificationMessage.newBuilder() @@ -107,7 +107,7 @@ public class ClientNotificationServiceImpl extends NotificationServiceGrpc.Notif return remove; } - private void addClientConnection(StreamObserver responseObserver, String clientId, String clientMac) { + private void addClientConnection(StreamObserver responseObserver, String clientId, String clientUser) { if (clientStreamMap.size() >= MAX_CLIENT_COUNT) { NotificationMessage errMsg = NotificationMessage.newBuilder() .setCode(HttpStatus.TOO_MANY_REQUESTS.value()) @@ -140,7 +140,6 @@ public class ClientNotificationServiceImpl extends NotificationServiceGrpc.Notif LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); //在线 updateWrapper.set(Device::getDeviceStatus, 1); - updateWrapper.set(Device::getMacAddr, clientMac); updateWrapper.eq(Device::getDeviceId, clientId); deviceService.update(updateWrapper); } @@ -148,7 +147,7 @@ public class ClientNotificationServiceImpl extends NotificationServiceGrpc.Notif @Override public void shutdownClient(RegisterRequest request, StreamObserver responseObserver) { String clientSn = request.getClientSn(); - String clientMac = request.getClientMac(); + String clientUser = request.getClientUser(); if (StringUtil.isEmpty(clientSn)) { NotificationMessage errMsg = NotificationMessage.newBuilder() @@ -160,16 +159,16 @@ public class ClientNotificationServiceImpl extends NotificationServiceGrpc.Notif return; // 避免继续执行后续逻辑 } - if (StringUtil.isEmpty(clientMac)) { + if (StringUtil.isEmpty(clientUser)) { NotificationMessage errMsg = NotificationMessage.newBuilder() .setCode(HttpStatus.BAD_REQUEST.value()) - .setMsg("client_mac不能为空") + .setMsg("client_user不能为空") .build(); responseObserver.onNext(errMsg); responseObserver.onCompleted(); return; // 避免继续执行后续逻辑 } - log.info("客户端注销:client_sn:[{}],client_mac: [{}]", clientSn, clientMac); + log.info("客户端注销:client_sn:[{}],client_user: [{}]", clientSn, clientUser); // 安全地移除并关闭连接 StreamObserver notificationStream = removeClientConnection(clientSn); diff --git a/nex-be/src/main/java/com/unisinsight/project/mapper/ImageDesktopMapper.java b/nex-be/src/main/java/com/unisinsight/project/mapper/ImageDesktopMapper.java new file mode 100644 index 0000000..00470e2 --- /dev/null +++ b/nex-be/src/main/java/com/unisinsight/project/mapper/ImageDesktopMapper.java @@ -0,0 +1,18 @@ +package com.unisinsight.project.mapper; + +import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import com.unisinsight.project.entity.dao.ImageDesktop; + +/** + * 桌面镜像(ImageDesktop)表数据库访问层 + * + * @author ch + * @since 2025-08-29 09:23:02 + */ +public interface ImageDesktopMapper extends BaseMapper { + +} + diff --git a/nex-be/src/main/java/com/unisinsight/project/service/ImageDesktopService.java b/nex-be/src/main/java/com/unisinsight/project/service/ImageDesktopService.java new file mode 100644 index 0000000..5f8b15c --- /dev/null +++ b/nex-be/src/main/java/com/unisinsight/project/service/ImageDesktopService.java @@ -0,0 +1,31 @@ +package com.unisinsight.project.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.unisinsight.project.entity.dao.ImageDesktop; +import com.unisinsight.project.entity.req.DeleteIdReq; +import com.unisinsight.project.entity.req.ImageDesktopReq; +import com.unisinsight.project.entity.res.ImageDesktopRes; +import com.unisinsight.project.entity.res.PageResult; +import com.unisinsight.project.exception.Result; + +/** + * 桌面镜像(ImageDesktop)表服务接口 + * + * @author ch + * @since 2025-08-29 09:23:02 + */ +public interface ImageDesktopService extends IService { + Result> selectPage(ImageDesktopReq imageDesktopReq); + + Result insert(ImageDesktopReq imageDesktopReq); + + Result update(ImageDesktopReq imageDesktopReq); + + Result query(ImageDesktopReq imageDesktopReq); + + Result delete(DeleteIdReq deleteIdReq); + + +} + diff --git a/nex-be/src/main/java/com/unisinsight/project/service/impl/ImageDesktopServiceImpl.java b/nex-be/src/main/java/com/unisinsight/project/service/impl/ImageDesktopServiceImpl.java new file mode 100644 index 0000000..ed014d1 --- /dev/null +++ b/nex-be/src/main/java/com/unisinsight/project/service/impl/ImageDesktopServiceImpl.java @@ -0,0 +1,117 @@ +package com.unisinsight.project.service.impl; + +import org.springframework.stereotype.Service; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.unisinsight.project.entity.dao.ImageDesktop; +import com.unisinsight.project.entity.req.DeleteIdReq; +import com.unisinsight.project.entity.req.ImageDesktopReq; +import com.unisinsight.project.entity.res.ImageDesktopRes; +import com.unisinsight.project.entity.res.PageResult; +import com.unisinsight.project.exception.BaseErrorCode; +import com.unisinsight.project.exception.Result; +import com.unisinsight.project.mapper.ImageDesktopMapper; +import com.unisinsight.project.service.ImageDesktopService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Slf4j +/** + * 桌面镜像(ImageDesktop)表服务实现类 + * + * @author ch + * @since 2025-08-29 09:23:02 + */ +@Service("imageDesktopService") +public class ImageDesktopServiceImpl extends ServiceImpl implements ImageDesktopService { + @Resource + private ImageDesktopMapper mapper; + + @Override + public Result> selectPage(ImageDesktopReq imageDesktopReq) { + Page page = new Page<>(imageDesktopReq.getPageNum(), imageDesktopReq.getPageSize()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.orderByAsc(ImageDesktop::getId); + Page imageDesktopPage = mapper.selectPage(page, queryWrapper); + log.info("分页查询桌面镜像返回:{}", JSONUtil.toJsonStr(imageDesktopPage)); + if (CollectionUtil.isEmpty(imageDesktopPage.getRecords())) { + log.info("分页查询桌面镜像返回为空"); + return Result.successResult(); + } else { + PageResult convert = PageResult.convertIPage(imageDesktopPage, ImageDesktopRes.class); + List data = convert.getData(); + convert.setData(data); + return Result.successResult(convert); + } + } + + @Override + public Result insert(ImageDesktopReq imageDesktopReq) { + ImageDesktop imageDesktop = BeanUtil.copyProperties(imageDesktopReq, ImageDesktop.class); + // QueryWrapper queryWrapper = new QueryWrapper<>(); + // queryWrapper.lambda().eq(ImageVirtualMachines::getImageName, imageVirtualMachines.getImageName()); +// ImageVirtualMachines selectOne = machinesMapper.selectOne(queryWrapper); +// if (ObjectUtils.isNotEmpty(selectOne)) { + // return new Result<>("200", "名称重复"); +// } + imageDesktop.setCreateUser("admin"); + imageDesktop.setUpdateUser("admin"); + int insert = mapper.insert(imageDesktop); + log.info("桌面镜像新增insert:{}", insert); + + if (insert == 1) { + return Result.successResult(); + } else { + return Result.errorResult(BaseErrorCode.HTTP_ERROR_CODE_500); + } + } + + @Override + public Result update(ImageDesktopReq imageDesktopReq) { + ImageDesktop imageDesktop = BeanUtil.copyProperties(imageDesktopReq, ImageDesktop.class); + imageDesktop.setUpdateUser("admin"); + int updated = mapper.updateById(imageDesktop); + log.info("桌面镜像修改updated:{}", updated); + if (updated == 1) { + return Result.successResult(); + } else { + return Result.errorResult(BaseErrorCode.HTTP_ERROR_CODE_500); + } + } + + @Override + public Result query(ImageDesktopReq imageDesktopReq) { + ImageDesktop imageDesktop = mapper.selectById(imageDesktopReq.getId()); + + if (ObjectUtils.isEmpty(imageDesktop)) { + log.info("查询桌面镜像返回为空"); + return Result.successResult(); + } + ImageDesktopRes res = BeanUtil.copyProperties(imageDesktop, ImageDesktopRes.class); + log.info("查询桌面镜像返回:{}", JSONUtil.toJsonStr(res)); + return Result.successResult(res); + } + + @Override + public Result delete(DeleteIdReq deleteIdReq) { + int deleted = mapper.deleteById(deleteIdReq.getId()); + log.info("桌面镜像删除insert:{}", deleted); + if (deleted == 1) { + return Result.successResult(); + } else { + return Result.errorResult(BaseErrorCode.HTTP_ERROR_CODE_500); + } + } + +} + diff --git a/nex-be/src/main/java/com/unisinsight/project/service/impl/ImageVirtualMachinesServiceImpl.java b/nex-be/src/main/java/com/unisinsight/project/service/impl/ImageVirtualMachinesServiceImpl.java index a844a52..5cb67aa 100644 --- a/nex-be/src/main/java/com/unisinsight/project/service/impl/ImageVirtualMachinesServiceImpl.java +++ b/nex-be/src/main/java/com/unisinsight/project/service/impl/ImageVirtualMachinesServiceImpl.java @@ -220,7 +220,7 @@ public class ImageVirtualMachinesServiceImpl extends ServiceImpl delete(DeleteIdReq deleteIdReq) { int deleted = machinesMapper.deleteById(deleteIdReq.getId()); - log.info("终端删除insert:{}", deleted); + log.info("终端删除delete:{}", deleted); if (deleted == 1) { return Result.successResult(); } else { @@ -230,7 +230,7 @@ public class ImageVirtualMachinesServiceImpl extends ServiceImpl cloneTemplate(ImageVirtualMachinesReq req) { - //todo 调用镜像生成服务 在生成完毕后生成桌面镜像数据 + //todo 调用镜像生成服务 在生成完毕后生成桌面镜像数据 桌面镜像加BT return null; } } diff --git a/nex-be/src/main/resources/application.yml b/nex-be/src/main/resources/application.yml index 71531c5..fa78d45 100644 --- a/nex-be/src/main/resources/application.yml +++ b/nex-be/src/main/resources/application.yml @@ -55,7 +55,7 @@ mybatis-plus: grpc: server: # 指定Grpc暴露的端口,后续客户端通过这个端口访问 - port: 51051 + port: 50051 # Feign 配置 feign: diff --git a/nex-be/src/main/resources/mapper/ImageDesktopMaper.xml b/nex-be/src/main/resources/mapper/ImageDesktopMaper.xml new file mode 100644 index 0000000..f9c46fc --- /dev/null +++ b/nex-be/src/main/resources/mapper/ImageDesktopMaper.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id, desktop_name, desktop_type, image_virtual_id, publish_status, os_version, bt_path, storage_path, create_time, create_user, update_time, update_user, deleted, description, publish_time + + + + +