diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/controller/PmsProductLibraryRepositoriesController.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/controller/PmsProductLibraryRepositoriesController.java index 568a95509..724b1c7f6 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/controller/PmsProductLibraryRepositoriesController.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/controller/PmsProductLibraryRepositoriesController.java @@ -119,7 +119,7 @@ public class PmsProductLibraryRepositoriesController extends BaseController { @PutMapping("/group/{format}/{name}") @ApiOperation(value = "更新虚拟仓库") public AjaxResult editGroup(@PathVariable String enterpriseIdentifier, - @ApiParam(value = "制品库名称", required = true) @PathVariable String name, + @ApiParam(value = "虚拟仓库名称", required = true) @PathVariable String name, @Valid @RequestBody GroupRepositoriesOperateVo groupRepositoriesOperateVo) { groupRepositoriesOperateVo.setEnterpriseIdentifier(enterpriseIdentifier); groupRepositoriesOperateVo.setName(name); diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/GroupRepositoriesOperateVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/GroupRepositoriesOperateVo.java index bd3e2e65c..86986ea54 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/GroupRepositoriesOperateVo.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/GroupRepositoriesOperateVo.java @@ -20,6 +20,8 @@ import javax.validation.constraints.NotNull; @Data @ApiModel("虚拟仓库操作对象") public class GroupRepositoriesOperateVo { + @ApiModelProperty(value = "制品库Id", hidden = true) + private Long id; @ApiModelProperty(value = "虚拟仓库名称", hidden = true) private String name; @ApiModelProperty(value = "企业标识", hidden = true) @@ -34,6 +36,9 @@ public class GroupRepositoriesOperateVo { @ApiModelProperty(value = "成员对象") @NotNull(message = "虚拟仓库成员对象不能为空") private NexusRepoGroupVo group; + @Valid + @ApiModelProperty(value = "Docker制品库输入对象") + private NexusRepoDockerVo docker; public NexusGroupRepoInputVo toNexusGroupRepoInputVo() { NexusGroupRepoInputVo target = new NexusGroupRepoInputVo(); @@ -41,6 +46,7 @@ public class GroupRepositoriesOperateVo { target.setName(PmsProductLibraryRepositories.getNexusRepositoriesName(this.enterpriseIdentifier, this.name)); target.setGroup(group.toNexusRepoGroupVo(this.enterpriseIdentifier)); target.setStorage(new NexusRepoStorageVo()); + target.setDocker(this.getDocker()); return target; } @@ -50,6 +56,9 @@ public class GroupRepositoriesOperateVo { JSONObject attributeJson = new JSONObject(); attributeJson.put("online", online); attributeJson.put("group", group); + if (docker != null) { + attributeJson.put("docker", docker); + } pmsProductLibraryRepositories.setAttributes(attributeJson.toJSONString()); return pmsProductLibraryRepositories; } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/HostedRepositoriesOperateVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/HostedRepositoriesOperateVo.java index e256db773..8c662a558 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/HostedRepositoriesOperateVo.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/HostedRepositoriesOperateVo.java @@ -19,7 +19,7 @@ import javax.validation.Valid; @Data @ApiModel("托管制品库操作对象") public class HostedRepositoriesOperateVo { - @ApiModelProperty(value = "制品库标识", hidden = true) + @ApiModelProperty(value = "制品库Id", hidden = true) private Long id; @ApiModelProperty(value = "制品库名称", hidden = true) private String name; diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/NexusGroupRepoInputVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/NexusGroupRepoInputVo.java index 3ef38931d..03d0069a3 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/NexusGroupRepoInputVo.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/NexusGroupRepoInputVo.java @@ -16,5 +16,6 @@ public class NexusGroupRepoInputVo { private boolean online; private NexusRepoStorageVo storage; private NexusRepoGroupVo group; + private NexusRepoDockerVo docker; } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryRepositoriesServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryRepositoriesServiceImpl.java index 8f521f981..4aae43ad8 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryRepositoriesServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryRepositoriesServiceImpl.java @@ -119,13 +119,38 @@ public class PmsProductLibraryRepositoriesServiceImpl implements IPmsProductLibr for (String memberRepoName : groupRepositoriesOperateVo.getGroup().getMemberNames()) { PmsProductLibraryRepositories pmsProductLibraryRepositories = selectPmsProductLibraryRepositoriesByName(groupRepositoriesOperateVo.getEnterpriseIdentifier(), memberRepoName); -// if (!pmsProductLibraryRepositories.getType().equals(ProductLibraryRepositoriesTypeEnum.HOSTED.getKey())) { -// throw new ServiceException("请选择托管类型的制品库作为虚拟仓库成员"); -// } if (!pmsProductLibraryRepositories.getFormat().equals(groupRepositoriesOperateVo.getFormat())) { throw new ServiceException("请选择相同格式的制品库作为虚拟仓库成员(制品库格式[%s])", groupRepositoriesOperateVo.getFormat()); } } + checkDockerRepoParameter(groupRepositoriesOperateVo.getDocker(), groupRepositoriesOperateVo.getId()); + } + + private void checkDockerRepoParameter(NexusRepoDockerVo nexusRepoDockerVo, Long oldRepoId) { + if (nexusRepoDockerVo == null) { + throw new ServiceException("新增【%s】格式制品库时,docker参数不能为空", ProductLibraryRepositoriesFormatEnum.DOCKER.getName()); + } + // 检查映射端口是否已被占用 + PmsProductLibraryRepositories searchRepo = new PmsProductLibraryRepositories(); + searchRepo.setFormat(ProductLibraryRepositoriesFormatEnum.DOCKER.getKey()); + List dockerRepoList = + pmsProductLibraryRepositoriesMapper.selectPmsProductLibraryRepositoriesList(searchRepo); + + // 获取端口相同的仓库 + PmsProductLibraryRepositories sameDockerRepo = dockerRepoList.stream().filter(repo -> { + String attributeStr = repo.getAttributes(); + JSONObject attributeJson = JSONObject.parseObject(attributeStr); + if (attributeJson.containsKey("docker")) { + NexusRepoDockerVo repoDockerVo = attributeJson.getObject("docker", NexusRepoDockerVo.class); + return repoDockerVo.getHttpPort() != null && + repoDockerVo.getHttpPort().equals(nexusRepoDockerVo.getHttpPort()); + } + return false; + }).findFirst().orElse(null); + // 判断端口相同的仓库是否为当前仓库(代表更新),若不是则返回错误信息 + if (sameDockerRepo != null && !sameDockerRepo.getId().equals(oldRepoId)) { + throw new ServiceException("Docker类型制品库的HTTP端口映射已被占用(HTTP端口映射[%d])", nexusRepoDockerVo.getHttpPort()); + } } /** @@ -182,29 +207,7 @@ public class PmsProductLibraryRepositoriesServiceImpl implements IPmsProductLibr VersionPolicyEnum.getByKey(hostedRepositoriesOperateVo.getMaven().getVersionPolicy()); LayoutPolicyEnum.getByKey(hostedRepositoriesOperateVo.getMaven().getLayoutPolicy()); } else if (ProductLibraryRepositoriesFormatEnum.DOCKER.getKey().equals(hostedRepositoriesOperateVo.getFormat())) { - NexusRepoDockerVo nexusRepoDockerVo = hostedRepositoriesOperateVo.getDocker(); - if (nexusRepoDockerVo == null) { - throw new ServiceException("新增【%s】格式制品库时,docker参数不能为空", ProductLibraryRepositoriesFormatEnum.DOCKER.getName()); - } - - VersionPolicyEnum.getByKey(nexusRepoDockerVo.getVersionPolicy()); - // 检查映射端口是否已被占用 - PmsProductLibraryRepositories searchRepo = new PmsProductLibraryRepositories(); - searchRepo.setFormat(ProductLibraryRepositoriesFormatEnum.DOCKER.getKey()); - List dockerRepoList = - pmsProductLibraryRepositoriesMapper.selectPmsProductLibraryRepositoriesList(searchRepo); - - // 获取端口相同的仓库 - PmsProductLibraryRepositories sameDockerRepo = dockerRepoList.stream().filter(repo -> { - String attributeStr = repo.getAttributes(); - NexusRepoDockerVo repoDockerVo = JSONObject.parseObject(attributeStr, NexusRepoDockerVo.class); - return repoDockerVo.getHttpPort() != null && - repoDockerVo.getHttpPort().equals(nexusRepoDockerVo.getHttpPort()); - }).findFirst().orElse(null); - // 判断端口相同的仓库是否为当前仓库(代表更新),若不是则返回错误信息 - if (sameDockerRepo != null && !sameDockerRepo.getId().equals(hostedRepositoriesOperateVo.getId())) { - throw new ServiceException("Docker类型制品库的HTTP端口映射已被占用(HTTP端口映射[%d])", nexusRepoDockerVo.getHttpPort()); - } + checkDockerRepoParameter(hostedRepositoriesOperateVo.getDocker(), hostedRepositoriesOperateVo.getId()); } } @@ -222,12 +225,13 @@ public class PmsProductLibraryRepositoriesServiceImpl implements IPmsProductLibr hostedRepositoriesOperateVo.getName()); checkLockRepositoryStatus(hostedRepositoriesOperateVo.getEnterpriseIdentifier(), oldRepo.getId()); hostedRepositoriesOperateVo.setFormat(oldRepo.getFormat()); + hostedRepositoriesOperateVo.setId(oldRepo.getId()); + checkInputParameter(hostedRepositoriesOperateVo); // 构建更新对象 PmsProductLibraryRepositories pmsProductLibraryRepositories = hostedRepositoriesOperateVo.toPmsProductLibraryRepositories(); pmsProductLibraryRepositories.setId(oldRepo.getId()); pmsProductLibraryRepositories.setUpdateTime(DateUtils.getNowDate()); pmsProductLibraryRepositories.setUpdateBy(SecurityUtils.getUsername()); - checkInputParameter(hostedRepositoriesOperateVo); NexusHostedRepoInputVo requestBody = hostedRepositoriesOperateVo.toNexusRepoDataVo(); // 调用制品库更新接口更新制品库 @@ -248,6 +252,7 @@ public class PmsProductLibraryRepositoriesServiceImpl implements IPmsProductLibr groupRepositoriesOperateVo.getEnterpriseIdentifier(), groupRepositoriesOperateVo.getName()); groupRepositoriesOperateVo.setFormat(oldRepo.getFormat()); + groupRepositoriesOperateVo.setId(oldRepo.getId()); checkGroupMemberRepoList(groupRepositoriesOperateVo); NexusGroupRepoInputVo requestBody = groupRepositoriesOperateVo.toNexusGroupRepoInputVo(); // 调用制品库更新接口更新制品库