From 0f6b7ed0d5c918bb82a5e9460185e00a7d83ce10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=A4=E5=85=A8=E6=98=86?= Date: Thu, 28 Aug 2025 11:26:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=AD=98=E5=82=A8=E6=B1=A0=E5=A2=9E?= =?UTF-8?q?=E5=88=A0=E6=94=B9=E6=9F=A5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/NetworkManageController.java | 8 +-- .../controller/StoragePoolController.java | 46 ++++++++------ .../project/entity/dao/StoragePool.java | 2 +- .../project/entity/req/StoragePoolReq.java | 26 +++++--- .../project/service/StoragePoolService.java | 8 ++- .../service/impl/StoragePoolServiceImpl.java | 61 ++++++++++++++----- 6 files changed, 99 insertions(+), 52 deletions(-) diff --git a/nex-be/src/main/java/com/unisinsight/project/controller/NetworkManageController.java b/nex-be/src/main/java/com/unisinsight/project/controller/NetworkManageController.java index 412e506..453ecb6 100644 --- a/nex-be/src/main/java/com/unisinsight/project/controller/NetworkManageController.java +++ b/nex-be/src/main/java/com/unisinsight/project/controller/NetworkManageController.java @@ -2,12 +2,9 @@ package com.unisinsight.project.controller; import com.unisinsight.project.entity.dao.NetworkManage; -import com.unisinsight.project.entity.req.DeleteIdReq; import com.unisinsight.project.entity.req.NetworkManagePageReq; import com.unisinsight.project.entity.req.NetworkManageReq; -import com.unisinsight.project.entity.req.StoragePoolReq; import com.unisinsight.project.entity.res.PageResult; -import com.unisinsight.project.entity.res.StoragePoolRes; import com.unisinsight.project.exception.Result; import com.unisinsight.project.service.NetworkManageService; import io.swagger.annotations.Api; @@ -30,17 +27,19 @@ public class NetworkManageController { @Resource private NetworkManageService networkManageService; - @ApiOperation(value = "分页查询镜像") + @ApiOperation(value = "分页查询") @PostMapping("/select/page") public Result> selectPage(@RequestBody NetworkManagePageReq networkManagePageReq) { return Result.successResult(networkManageService.pageNetworkManages(networkManagePageReq)); } + @ApiOperation(value = "新增") @PostMapping("/add") public Result addNetworkManage(@Valid @RequestBody NetworkManageReq networkManageReq) { networkManageService.addNetworkManage(networkManageReq); return Result.successResult(); } + @ApiOperation(value = "修改状态") @PostMapping("/update") public Result updateNetworkManage(@RequestBody NetworkManageReq networkManageReq) { @@ -60,7 +59,6 @@ public class NetworkManageController { @ApiOperation(value = "同步状态") @GetMapping("/synchStatus") public Result synchStatus() { - return null; } diff --git a/nex-be/src/main/java/com/unisinsight/project/controller/StoragePoolController.java b/nex-be/src/main/java/com/unisinsight/project/controller/StoragePoolController.java index 212018d..ac35de1 100644 --- a/nex-be/src/main/java/com/unisinsight/project/controller/StoragePoolController.java +++ b/nex-be/src/main/java/com/unisinsight/project/controller/StoragePoolController.java @@ -1,23 +1,19 @@ package com.unisinsight.project.controller; -import cn.hutool.json.JSONUtil; -import com.unisinsight.project.entity.req.DeleteIdReq; -import com.unisinsight.project.entity.req.ImageVirtualMachinesReq; +import com.unisinsight.project.entity.dao.StoragePool; import com.unisinsight.project.entity.req.StoragePoolReq; -import com.unisinsight.project.entity.res.ImageVirtualMachinesRes; import com.unisinsight.project.entity.res.PageResult; -import com.unisinsight.project.entity.res.StoragePoolRes; import com.unisinsight.project.exception.BaseErrorCode; import com.unisinsight.project.exception.Result; -import com.unisinsight.project.service.ImageVirtualMachinesService; +import com.unisinsight.project.service.StoragePoolService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.Objects; +import javax.validation.Valid; /** * 存储池管理 @@ -28,28 +24,42 @@ import java.util.Objects; @Api(tags = "存储池类") public class StoragePoolController { - @ApiOperation(value = "分页查询镜像") + @Resource + private StoragePoolService storagePoolService; + + @ApiOperation(value = "分页查询") @PostMapping("/select/page") - public Result> selectPage(@RequestBody StoragePoolReq storagePoolReq) { - return null; + public Result> selectPage(@RequestBody StoragePoolReq storagePoolReq) { + return Result.successResult(storagePoolService.pageStoragePools(storagePoolReq)); } + @ApiOperation(value = "新增") @PostMapping("/add") - public Result insertImageVirtualMachines(@RequestBody StoragePoolReq storagePoolReq) { - return null; + public Result insertStoragePool(@Valid @RequestBody StoragePoolReq storagePoolReq) { + storagePoolService.addStoragePool(storagePoolReq); + return Result.successResult(); } - @ApiOperation(value = "修改状态") + + @ApiOperation(value = "修改") @PostMapping("/update") - public Result updateUser(@RequestBody StoragePoolReq storagePoolReq) { - return null; + public Result updateStoragePool(@RequestBody StoragePoolReq storagePoolReq) { + if (storagePoolService.updateStoragePool(storagePoolReq)) { + return Result.successResult(); + } else { + return Result.errorResult(BaseErrorCode.DATABASE_OPERATION_FAILED); + } } @ApiOperation(value = "删除") - @PostMapping("/delete") - public Result delete(@RequestBody DeleteIdReq deleteIdReq) { + @DeleteMapping("/{id}") + public Result delete(@PathVariable Long id) { + if (storagePoolService.deleteStoragePool(id)) { + return Result.successResult(); + } else { + return Result.errorResult(BaseErrorCode.DATABASE_OPERATION_FAILED); + } - return null; } @ApiOperation(value = "同步状态") diff --git a/nex-be/src/main/java/com/unisinsight/project/entity/dao/StoragePool.java b/nex-be/src/main/java/com/unisinsight/project/entity/dao/StoragePool.java index 17e5c38..ff88a16 100644 --- a/nex-be/src/main/java/com/unisinsight/project/entity/dao/StoragePool.java +++ b/nex-be/src/main/java/com/unisinsight/project/entity/dao/StoragePool.java @@ -47,7 +47,7 @@ public class StoragePool { */ @TableField("status") @ApiModelProperty(value = "状态") - private Short status; + private Integer status; /** * 描述信息 diff --git a/nex-be/src/main/java/com/unisinsight/project/entity/req/StoragePoolReq.java b/nex-be/src/main/java/com/unisinsight/project/entity/req/StoragePoolReq.java index 8854a92..3f505c3 100644 --- a/nex-be/src/main/java/com/unisinsight/project/entity/req/StoragePoolReq.java +++ b/nex-be/src/main/java/com/unisinsight/project/entity/req/StoragePoolReq.java @@ -1,14 +1,14 @@ + package com.unisinsight.project.entity.req; - import com.fasterxml.jackson.annotation.JsonProperty; -import com.unisinsight.project.entity.dao.StoragePool; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.*; /** - * 存储池 + * 存储池请求参数 * * @author ch * @since 2025-08-25 11:42:52 @@ -17,34 +17,42 @@ import lombok.Data; @ApiModel("存储池") public class StoragePoolReq { + @ApiModelProperty(value = "id") + private Integer id; @ApiModelProperty("名称") + @NotBlank(message = "名称不能为空") + @Size(max = 64, message = "名称长度不能超过64个字符") private String name; @ApiModelProperty("类型") + @Size(max = 16, message = "类型长度不能超过16个字符") private String type; - @ApiModelProperty("路劲") + @ApiModelProperty("路径") + @Size(max = 128, message = "路径长度不能超过128个字符") private String path; /** * 状态: 1-活跃,2-关闭 **/ @ApiModelProperty("状态") - private String status; + private Integer status; /** * 查询页 */ @ApiModelProperty(value = "查询页", notes = "分页查询时再传") @JsonProperty("page_num") - private Integer pageNum; + @Min(value = 1, message = "页码必须大于0") + private Integer pageNum = 1; /** * 每页数量 */ @ApiModelProperty(value = "每页数量", notes = "分页查询时再传") @JsonProperty("page_size") - private Integer pageSize; -} - + @Min(value = 1, message = "每页数量必须大于0") + @Max(value = 100, message = "每页数量不能超过100") + private Integer pageSize = 10; +} \ No newline at end of file diff --git a/nex-be/src/main/java/com/unisinsight/project/service/StoragePoolService.java b/nex-be/src/main/java/com/unisinsight/project/service/StoragePoolService.java index 2090d6a..50eea1f 100644 --- a/nex-be/src/main/java/com/unisinsight/project/service/StoragePoolService.java +++ b/nex-be/src/main/java/com/unisinsight/project/service/StoragePoolService.java @@ -3,6 +3,8 @@ package com.unisinsight.project.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.unisinsight.project.entity.dao.StoragePool; import com.unisinsight.project.entity.req.StoragePoolReq; +import com.unisinsight.project.entity.res.PageResult; +import com.unisinsight.project.entity.res.StoragePoolRes; /** * 存储池服务接口 @@ -15,7 +17,7 @@ public interface StoragePoolService { * @param storagePool 存储池对象 * @return StoragePool 返回新增的存储池对象 */ - StoragePool addStoragePool(StoragePool storagePool); + StoragePool addStoragePool(StoragePoolReq storagePoolReq); /** * 根据ID更新存储池信息 @@ -23,7 +25,7 @@ public interface StoragePoolService { * @param storagePool 存储池对象 * @return boolean 是否更新成功 */ - boolean updateStoragePool(StoragePool storagePool); + boolean updateStoragePool(StoragePoolReq storagePoolReq); /** * 根据ID删除存储池 @@ -51,5 +53,5 @@ public interface StoragePoolService { * @param status 存储池状态(可选查询条件) * @return Page 分页结果 */ - Page pageStoragePools(StoragePoolReq storagePoolReq); + PageResult pageStoragePools(StoragePoolReq storagePoolReq); } diff --git a/nex-be/src/main/java/com/unisinsight/project/service/impl/StoragePoolServiceImpl.java b/nex-be/src/main/java/com/unisinsight/project/service/impl/StoragePoolServiceImpl.java index 4d1f765..7c7bbba 100644 --- a/nex-be/src/main/java/com/unisinsight/project/service/impl/StoragePoolServiceImpl.java +++ b/nex-be/src/main/java/com/unisinsight/project/service/impl/StoragePoolServiceImpl.java @@ -3,10 +3,14 @@ package com.unisinsight.project.service.impl; 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.NetworkManage; import com.unisinsight.project.entity.dao.StoragePool; import com.unisinsight.project.entity.req.StoragePoolReq; +import com.unisinsight.project.entity.res.PageResult; +import com.unisinsight.project.exception.BusinessException; import com.unisinsight.project.mapper.StoragePoolMapper; import com.unisinsight.project.service.StoragePoolService; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -21,14 +25,23 @@ public class StoragePoolServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("name", storagePoolReq.getName()); + if (this.count(queryWrapper) > 0) { + throw new BusinessException("存储池名称'" + storagePoolReq.getName() + "'已存在,请使用其他名称"); + } + + StoragePool storagePool = new StoragePool(); + BeanUtils.copyProperties(storagePoolReq, storagePool); storagePool.setCreateTime(new Date()); storagePool.setUpdateTime(new Date()); + storagePool.setStatus(1); this.save(storagePool); return storagePool; } @@ -36,18 +49,36 @@ public class StoragePoolServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("name", storagePoolReq.getName()); + if (this.count(queryWrapper) > 0) { + throw new BusinessException("存储池名称'" + storagePoolReq.getName() + "'已存在,请使用其他名称"); + } + existing.setName(storagePoolReq.getName()); + } + + // 修改状态 + if (storagePoolReq.getStatus() != null + && !storagePoolReq.getStatus().equals(existing.getStatus())) { + existing.setStatus(storagePoolReq.getStatus()); + } + + existing.setUpdateTime(new Date()); + return this.updateById(existing); } /** @@ -76,15 +107,11 @@ public class StoragePoolServiceImpl extends ServiceImpl 分页结果 */ @Override - public Page pageStoragePools(StoragePoolReq storagePoolReq) { + public PageResult pageStoragePools(StoragePoolReq storagePoolReq) { Page page = new Page<>(storagePoolReq.getPageNum(), storagePoolReq.getPageSize()); QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -100,6 +127,8 @@ public class StoragePoolServiceImpl extends ServiceImpl resultPage = this.page(page, queryWrapper); + return PageResult.convertPage(resultPage, StoragePool.class); } }