From 7894f29391537d207f9dcbb4d3e913307e8bf095 Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Tue, 6 Aug 2024 15:01:06 +0800 Subject: [PATCH 1/8] =?UTF-8?q?feat(=E5=88=B6=E5=93=81=E5=BA=93=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91):=20=E5=9F=BA=E4=BA=8ECMDB=E5=88=B6?= =?UTF-8?q?=E5=93=81=E5=AE=9A=E5=88=B6=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 获取产品库制品列表接口: 1. 默认查询组织下所有产品库的制品列表,可传入产品库标识进行限定 2. 可传入需排除的制品Id列表参数(当CMDB已处理制品后将返回已处理的制品id列表,此时将不返回这些制品) 3. 拼接产品库地址,返回制品下载地址 --- .../PmsProductLibraryController.java | 14 +++ .../domain/PmsProductLibraryComponent.java | 7 ++ .../vo/PmsProductLibraryComponentDataVo.java | 97 +++++++++++++++++++ .../PmsProductLibraryComponentSearchVo.java | 26 +++++ .../PmsProductLibraryComponentMapper.java | 9 ++ .../PmsProductLibraryRepositoriesMapper.java | 1 + .../IPmsProductLibraryProductRepoService.java | 2 + ...IPmsProductLibraryRepositoriesService.java | 2 + ...sProductLibraryProductRepoServiceImpl.java | 28 ++++++ ...ProductLibraryRepositoriesServiceImpl.java | 10 ++ .../pms/PmsProductLibraryComponentMapper.xml | 42 ++++++++ .../PmsProductLibraryRepositoriesMapper.xml | 5 + 12 files changed, 243 insertions(+) create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/PmsProductLibraryComponentDataVo.java create mode 100644 microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/PmsProductLibraryComponentSearchVo.java diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/controller/PmsProductLibraryController.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/controller/PmsProductLibraryController.java index 93a355b07..a6fba2e7f 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/controller/PmsProductLibraryController.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/controller/PmsProductLibraryController.java @@ -35,6 +35,20 @@ public class PmsProductLibraryController extends BaseController { @Autowired private IPmsProductLibraryComponentService pmsProductLibraryComponentService; + /** + * 获取产品库制品列表 + */ +// @RequiresPermissions("pms:pmsProductLibraryRepositories:list") + @GetMapping("/componentList") + @ApiOperation(value = "获取产品库制品列表") + public GenericsTableDataInfo selectComponentList( + @PathVariable String enterpriseIdentifier, + @ApiParam(value = "产品库制品查询条件") PmsProductLibraryComponentSearchVo search) { + search.setPmsEnterpriseIdentifier(enterpriseIdentifier); + startPage(); + return pmsProductLibraryProductRepoService.selectComponentList(search); + } + /** * 查询制品库-仓库列表 */ diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/PmsProductLibraryComponent.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/PmsProductLibraryComponent.java index b5a4c773d..f52a0d887 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/PmsProductLibraryComponent.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/PmsProductLibraryComponent.java @@ -3,6 +3,7 @@ package com.microservices.pms.productLibrary.domain; import com.alibaba.fastjson2.JSONObject; import com.fasterxml.jackson.annotation.JsonInclude; import com.microservices.common.core.utils.StringUtils; +import com.microservices.common.core.utils.bean.BeanUtils; import com.microservices.common.core.utils.sign.Base64; import com.microservices.common.core.web.domain.BaseEntity; import com.microservices.pms.productLibrary.domain.vo.*; @@ -173,4 +174,10 @@ public class PmsProductLibraryComponent extends BaseEntity { target.setDirectory(this.getGroup()); return target; } + + public PmsProductLibraryComponentDataVo toPmsProductLibraryComponentDataVo() { + PmsProductLibraryComponentDataVo target = new PmsProductLibraryComponentDataVo(); + BeanUtils.copyProperties(this, target); + return target; + } } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/PmsProductLibraryComponentDataVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/PmsProductLibraryComponentDataVo.java new file mode 100644 index 000000000..3bcdd57c2 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/PmsProductLibraryComponentDataVo.java @@ -0,0 +1,97 @@ +package com.microservices.pms.productLibrary.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * 制品库数据对象 + * + * @author otto + * @date 2024-07-11 + */ +@Data +@ApiModel("产品库制品数据对象") +public class PmsProductLibraryComponentDataVo { + + /** + * 制品ID + */ + private Long id; + + /** + * 制品标识 + */ + @ApiModelProperty(value = "制品标识") + private String identifier; + + /** + * 制品路径 + */ + @ApiModelProperty(value = "制品路径") + private String path; + + /** + * 制品所在组 + */ + @ApiModelProperty(value = "制品所在组") + private String group; + + /** + * 制品名称 + */ + @ApiModelProperty(value = "制品名称") + private String name; + + /** + * 制品库Id + */ + @ApiModelProperty(value = "制品库Id") + private Long repoId; + + /** + * 制品版本 + */ + @ApiModelProperty(value = "制品版本") + private String version; + + /** + * 制品文件Id + */ + @ApiModelProperty(value = "制品文件Id") + private String fileIdentifier; + + /** + * 制品下载地址 + */ + @ApiModelProperty(value = "制品下载地址") + private String downloadUrl; + /** + * 创建者 + */ + @ApiModelProperty(value = "创建者", hidden = true) + private String createBy; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建时间", hidden = true) + private Date createTime; + + /** + * 更新者 + */ + @ApiModelProperty(value = "更新者", hidden = true) + private String updateBy; + + /** + * 更新时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新时间", hidden = true) + private Date updateTime; +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/PmsProductLibraryComponentSearchVo.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/PmsProductLibraryComponentSearchVo.java new file mode 100644 index 000000000..ee0897ba7 --- /dev/null +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/domain/vo/PmsProductLibraryComponentSearchVo.java @@ -0,0 +1,26 @@ +package com.microservices.pms.productLibrary.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 制品库数据对象 + * + * @author otto + * @date 2024-07-11 + */ +@Data +@ApiModel("产品库制品查询对象") +public class PmsProductLibraryComponentSearchVo { + @ApiModelProperty(value = "需排除的制品Id列表(逗号分割的字符串)") + private String excludeIds; + @ApiModelProperty(value = "产品库标识") + private String productRepoName; + /** + * 关联企业ID + */ + @ApiModelProperty(value = "关联企业标识", hidden = true) + private String pmsEnterpriseIdentifier; + +} diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/mapper/PmsProductLibraryComponentMapper.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/mapper/PmsProductLibraryComponentMapper.java index df515e340..d29715a4a 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/mapper/PmsProductLibraryComponentMapper.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/mapper/PmsProductLibraryComponentMapper.java @@ -1,6 +1,7 @@ package com.microservices.pms.productLibrary.mapper; import com.microservices.pms.productLibrary.domain.PmsProductLibraryComponent; +import com.microservices.pms.productLibrary.domain.vo.PmsProductLibraryComponentSearchVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -89,4 +90,12 @@ public interface PmsProductLibraryComponentMapper { * @return 制品文件列表 */ List selectPmsProductLibraryComponentUnderThePath(@Param("path") String path, @Param("repoId") Long repoId, @Param("pmsEnterpriseId") Long pmsEnterpriseId); + + /** + * 查询产品库制品列表 + * + * @param search 查询条件 + * @return 制品列表 + */ + List selectProductRepoComponentList(PmsProductLibraryComponentSearchVo search); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/mapper/PmsProductLibraryRepositoriesMapper.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/mapper/PmsProductLibraryRepositoriesMapper.java index a5dd5c623..83481c2b9 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/mapper/PmsProductLibraryRepositoriesMapper.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/mapper/PmsProductLibraryRepositoriesMapper.java @@ -119,4 +119,5 @@ public interface PmsProductLibraryRepositoriesMapper { List selectPmsProductLibrarySnapshotPageList(@Param("pmsEnterpriseIdentifier") String pmsEnterpriseIdentifier, @Param("repoName") String repoName, @Param("snapshotName") String snapshotName); + PmsProductLibraryRepositories selectProductRepoById(Long repoId); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryProductRepoService.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryProductRepoService.java index c4dab2b0b..4858d2396 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryProductRepoService.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryProductRepoService.java @@ -74,4 +74,6 @@ public interface IPmsProductLibraryProductRepoService { * @return 制品列表 */ NexusComponentResultVo> selectPmsProductLibraryKeyComponentList(String enterpriseIdentifier, ComponentSearchVo componentSearchVo); + + GenericsTableDataInfo selectComponentList(PmsProductLibraryComponentSearchVo search); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryRepositoriesService.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryRepositoriesService.java index b486c8382..6ee231ccb 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryRepositoriesService.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/IPmsProductLibraryRepositoriesService.java @@ -129,4 +129,6 @@ public interface IPmsProductLibraryRepositoriesService { * @return 锁定中的制品库id列表 */ List getLockStatusRepositoryList(String enterpriseIdentifier, String repoIds); + + PmsProductLibraryRepositories selectPmsProductLibraryRepositoriesById(Long repoId); } diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryProductRepoServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryProductRepoServiceImpl.java index 4db11ad36..6a93a749c 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryProductRepoServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryProductRepoServiceImpl.java @@ -6,6 +6,7 @@ import com.microservices.common.core.utils.DateUtils; import com.microservices.common.core.utils.PageUtils; import com.microservices.common.core.utils.ServletUtils; import com.microservices.common.core.utils.StringUtils; +import com.microservices.common.core.utils.html.EscapeUtil; import com.microservices.common.core.web.page.GenericsTableDataInfo; import com.microservices.common.security.utils.SecurityUtils; import com.microservices.pms.enterprise.domain.PmsEnterprise; @@ -27,6 +28,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * @author OTTO @@ -67,6 +69,15 @@ public class PmsProductLibraryProductRepoServiceImpl implements IPmsProductLibra return pmsProductLibraryRepositories; } + private PmsProductLibraryRepositories selectPmsProductLibraryRepositoriesById(Long repoId) { + PmsProductLibraryRepositories pmsProductLibraryRepositories = + pmsProductLibraryRepositoriesMapper.selectProductRepoById(repoId); + if (pmsProductLibraryRepositories == null) { + throw new ServiceException("组织下不存在该产品库(产品库id[%d])", repoId); + } + return pmsProductLibraryRepositories; + } + @Override public GenericsTableDataInfo selectPmsProductLibraryPageList(String enterpriseIdentifier, String name) { return PageUtils.toPage( @@ -247,6 +258,23 @@ public class PmsProductLibraryProductRepoServiceImpl implements IPmsProductLibra } } + @Override + public GenericsTableDataInfo selectComponentList(PmsProductLibraryComponentSearchVo search) { + List pmsProductLibraryComponentList = + pmsProductLibraryComponentMapper.selectProductRepoComponentList(search); + List repoIdList = pmsProductLibraryComponentList.stream().map(PmsProductLibraryComponent::getRepoId).distinct().collect(Collectors.toList()); + List repoList = repoIdList.stream().map(this::selectPmsProductLibraryRepositoriesById).collect(Collectors.toList()); + return PageUtils.toPage(pmsProductLibraryComponentList, x -> toPmsProductLibraryComponentDataVo(x, repoList)); + } + + private PmsProductLibraryComponentDataVo toPmsProductLibraryComponentDataVo(PmsProductLibraryComponent component, List repoList) { + PmsProductLibraryComponentDataVo pmsProductLibraryComponentDataVo = component.toPmsProductLibraryComponentDataVo(); + repoList.stream().filter(x -> x.getId().equals(component.getRepoId())).findFirst().ifPresent(repo -> pmsProductLibraryComponentDataVo.setDownloadUrl( + EscapeUtil.removeExtraSlashOfUrl( + String.format("%s/%s", repo.getUrl(), component.getPath())))); + return pmsProductLibraryComponentDataVo; + } + private void setNexusResultDataVoChoose(PmsProductLibraryRepositories repo, List productComponentList, List nexusResultDataVoList) { for (PmsProductLibraryComponent component : productComponentList) { nexusResultDataVoList.forEach(x -> { 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 8750e1386..a57976167 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 @@ -50,6 +50,16 @@ public class PmsProductLibraryRepositoriesServiceImpl implements IPmsProductLibr return pmsProductLibraryRepositories; } + @Override + public PmsProductLibraryRepositories selectPmsProductLibraryRepositoriesById(Long repoId) { + PmsProductLibraryRepositories pmsProductLibraryRepositories = + pmsProductLibraryRepositoriesMapper.selectPmsProductLibraryRepositoriesById(repoId); + if (pmsProductLibraryRepositories == null) { + throw new ServiceException("组织下不存在该制品库(制品库id[%s])", repoId); + } + return pmsProductLibraryRepositories; + } + @Override public NexusHostedRepoInputVo getNexusRepo(String type, String format, String nexusRepoName) { NexusHostedRepoInputVo nexusRepo = nexusRequestHelper.doRequestToJavaObject( diff --git a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryComponentMapper.xml b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryComponentMapper.xml index ca21436a2..11e14538f 100644 --- a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryComponentMapper.xml +++ b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryComponentMapper.xml @@ -49,6 +49,33 @@ from pms_product_library_component + + select pplc.id, + pplc.identifier, + pplc.path, + pplc.`group`, + pplc.name, + pplc.repo_id, + pplc.version, + pplc.file_identifier, + pplc.dept_id, + pplc.pms_enterprise_id, + pplc.update_time, + pplc.update_by, + pplc.create_time, + pplc.create_by, + pplc.del_flag, + pplc.attributes, + pplc.reserved_field_1, + pplc.reserved_field_2, + pplc.reserved_field_3, + pe.enterprise_identifier, + pplr.format + from pms_product_library_component as pplc + left join pms_enterprise as pe on pplc.pms_enterprise_id = pe.id + left join pms_product_library_repositories as pplr on pplr.id = pplc.repo_id + + + diff --git a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryRepositoriesMapper.xml b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryRepositoriesMapper.xml index ebfbb1d05..5e64a6a2c 100644 --- a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryRepositoriesMapper.xml +++ b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryRepositoriesMapper.xml @@ -135,6 +135,11 @@ and pe.enterprise_identifier = #{pmsEnterpriseIdentifier} and pplr.snapshot_name IS NOT NULL + From 4471c5dc22bd3412c2c3b94b3cf0cc5796d2aab7 Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Tue, 6 Aug 2024 15:03:31 +0800 Subject: [PATCH 2/8] =?UTF-8?q?feat(=E5=88=B6=E5=93=81=E5=BA=93=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91):=20=E5=9F=BA=E4=BA=8ECMDB=E5=88=B6?= =?UTF-8?q?=E5=93=81=E5=AE=9A=E5=88=B6=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 创建产品库时获取产品库的Nexus地址,防止产品库中制品文件无法下载 --- .../impl/PmsProductLibraryProductRepoServiceImpl.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryProductRepoServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryProductRepoServiceImpl.java index 6a93a749c..707728479 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryProductRepoServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryProductRepoServiceImpl.java @@ -128,9 +128,18 @@ public class PmsProductLibraryProductRepoServiceImpl implements IPmsProductLibra requestBody.getFormat()), JSONObject.from(requestBody) ); + // 调用Nexus制品库详情接口获取制品库详情 + NexusHostedRepoInputVo nexusDataVo = pmsProductLibraryRepositoriesService.getNexusRepo( + productRepositoriesInputVo.getType(), + productRepositoriesInputVo.getFormat(), + PmsProductLibraryRepositories.getNexusProductRepositoriesName( + productRepositoriesInputVo.getEnterpriseIdentifier(), + productRepositoriesInputVo.getName() + )); // 数据库添加该制品库 PmsProductLibraryRepositories pmsProductLibraryRepositories = productRepositoriesInputVo.toPmsProductLibraryRepositories(); pmsProductLibraryRepositories.setPmsEnterpriseId(pmsEnterprise.getId()); + pmsProductLibraryRepositories.setUrl(nexusDataVo.getUrl()); pmsProductLibraryRepositories.setDeptId(pmsEnterprise.getDeptId()); pmsProductLibraryRepositories.setCreateTime(DateUtils.getNowDate()); pmsProductLibraryRepositories.setCreateBy(SecurityUtils.getUsername()); From 12aa288f29888a5b6bb1b5a527aeba380f654a42 Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Mon, 12 Aug 2024 16:34:02 +0800 Subject: [PATCH 3/8] =?UTF-8?q?feat(=E5=88=B6=E5=93=81=E5=BA=93=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91):=20=E4=BA=A7=E5=93=81=E5=BA=93?= =?UTF-8?q?=E6=94=AF=E6=8C=81Docker=E5=88=B6=E5=93=81=E7=A7=BB=E5=85=A5?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复Nexus响应异常导致无法正常识别错误码的问题 --- .../com/microservices/pms/utils/NexusRequestHelper.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/NexusRequestHelper.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/NexusRequestHelper.java index a8b1eed8d..e85024f38 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/NexusRequestHelper.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/NexusRequestHelper.java @@ -270,6 +270,13 @@ public class NexusRequestHelper { if (res == null) { return null; } + JSONObject resultJson = res.getJSONObject("result"); + if (resultJson == null) { + return null; + } + if (!resultJson.getBoolean("success")) { + return null; + } return JSONObject.parseObject(res.toJSONString(), buildType(ownerClass, rawClass)); } From 6a4dbd3e71e2d1ddbc915afb1fea5f7739d98f3c Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Mon, 12 Aug 2024 16:42:04 +0800 Subject: [PATCH 4/8] =?UTF-8?q?feat(=E5=88=B6=E5=93=81=E5=BA=93=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91):=20=E4=BA=A7=E5=93=81=E5=BA=93?= =?UTF-8?q?=E6=94=AF=E6=8C=81Docker=E5=88=B6=E5=93=81=E7=A7=BB=E5=85=A5?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复Nexus响应异常导致无法正常识别错误码的问题 --- .../java/com/microservices/pms/utils/NexusRequestHelper.java | 1 - 1 file changed, 1 deletion(-) diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/NexusRequestHelper.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/NexusRequestHelper.java index e85024f38..34d896c5d 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/NexusRequestHelper.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/NexusRequestHelper.java @@ -285,7 +285,6 @@ public class NexusRequestHelper { if (res == null) { return null; } - return JSONObject.parseObject(res.toJSONString(), buildType(ownerClass, List.class, rawClass)); } From 29dfd87b4dd752bdb0ea54fab13a7117be2743f6 Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Fri, 16 Aug 2024 10:25:32 +0800 Subject: [PATCH 5/8] =?UTF-8?q?feat(=E5=88=B6=E5=93=81=E5=BA=93=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91):=20=E5=88=B6=E5=93=81=E5=BA=93?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=86=85=E9=83=A8=E4=BC=A0=E9=80=92=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 使用流传递文件,防止大文件导致字节数组溢出 --- .../com/microservices/system/api/domain/SysFileBytes.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/domain/SysFileBytes.java b/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/domain/SysFileBytes.java index 0112a09ce..6ff29a5ff 100644 --- a/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/domain/SysFileBytes.java +++ b/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/domain/SysFileBytes.java @@ -17,12 +17,7 @@ public class SysFileBytes { private String fileName; /** - * 文件地址 - */ - private byte[] fileBytes; - - /** - * 文件地址 + * 文件流 */ private InputStream fileInputStream; } From 86855bbee919e76849dbb19461d077d03a905c12 Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Fri, 16 Aug 2024 10:27:27 +0800 Subject: [PATCH 6/8] =?UTF-8?q?feat(=E5=88=B6=E5=93=81=E5=BA=93=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91):=20=E5=88=B6=E5=93=81=E5=BA=93?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=86=85=E9=83=A8=E4=BC=A0=E9=80=92=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根据文件标识获取文件实体接口调整: 1. 接口会对返回值进行序列化,所以无法直接返回InputStream 2. 不使用字节数组进行返回,防止大文件溢出 3. 直接通过Feign返回文件Response --- .../system/api/RemoteFileService.java | 7 ++--- .../factory/RemoteFileFallbackFactory.java | 7 +++-- .../file/controller/CommonController.java | 5 ++-- .../file/service/ISysFileInfoService.java | 5 +--- .../service/impl/SysFileInfoServiceImpl.java | 29 ++++++++++++------- 5 files changed, 28 insertions(+), 25 deletions(-) diff --git a/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/RemoteFileService.java b/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/RemoteFileService.java index 6071d1290..23c733b65 100644 --- a/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/RemoteFileService.java +++ b/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/RemoteFileService.java @@ -4,9 +4,9 @@ import com.microservices.common.core.constant.SecurityConstants; import com.microservices.common.core.constant.ServiceNameConstants; import com.microservices.common.core.domain.R; import com.microservices.system.api.domain.SysFile; -import com.microservices.system.api.domain.SysFileBytes; import com.microservices.system.api.domain.SysFileInfo; import com.microservices.system.api.factory.RemoteFileFallbackFactory; +import feign.Response; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; @@ -71,9 +71,8 @@ public interface RemoteFileService { * 根据文件标识获取文件实体 * * @param fileIdentifier 文件标识 - * @return 文件实体 */ @GetMapping("/common/getFileEntityByIdentifier/{fileIdentifier}") - R getFileEntityByIdentifier(@PathVariable("fileIdentifier") String fileIdentifier, - @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + Response getFileEntityByIdentifier(@PathVariable("fileIdentifier") String fileIdentifier, + @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } diff --git a/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/factory/RemoteFileFallbackFactory.java b/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/factory/RemoteFileFallbackFactory.java index 0f23a32fd..f298a8890 100644 --- a/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/factory/RemoteFileFallbackFactory.java +++ b/microservices-api/microservices-api-system/src/main/java/com/microservices/system/api/factory/RemoteFileFallbackFactory.java @@ -1,10 +1,11 @@ package com.microservices.system.api.factory; import com.microservices.common.core.domain.R; +import com.microservices.common.core.exception.ServiceException; import com.microservices.system.api.RemoteFileService; import com.microservices.system.api.domain.SysFile; -import com.microservices.system.api.domain.SysFileBytes; import com.microservices.system.api.domain.SysFileInfo; +import feign.Response; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; @@ -54,8 +55,8 @@ public class RemoteFileFallbackFactory implements FallbackFactory getFileEntityByIdentifier(String fileIdentifier, String source) { - return R.fail("根据文件标识获取文件实体失败:" + throwable.getMessage()); + public Response getFileEntityByIdentifier(String fileIdentifier, String source) { + throw new ServiceException("文件获取失败:" + throwable.getMessage()); } }; } diff --git a/microservices-modules/microservices-modules-file/src/main/java/com/microservices/file/controller/CommonController.java b/microservices-modules/microservices-modules-file/src/main/java/com/microservices/file/controller/CommonController.java index 85f8f9002..4837abe41 100644 --- a/microservices-modules/microservices-modules-file/src/main/java/com/microservices/file/controller/CommonController.java +++ b/microservices-modules/microservices-modules-file/src/main/java/com/microservices/file/controller/CommonController.java @@ -9,7 +9,6 @@ import com.microservices.common.core.web.controller.BaseController; import com.microservices.common.core.web.domain.AjaxResult; import com.microservices.common.security.annotation.InnerAuth; import com.microservices.file.service.ISysFileInfoService; -import com.microservices.system.api.domain.SysFileBytes; import com.microservices.system.api.domain.SysFileInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -66,8 +65,8 @@ public class CommonController extends BaseController { @GetMapping("/getFileEntityByIdentifier/{fileIdentifier}") @ApiOperation("根据文件标识获取文件实体") @InnerAuth - public R getFileEntityByIdentifier(@PathVariable("fileIdentifier") String fileIdentifier) { - return sysFileInfoService.getFileEntityByIdentifier(fileIdentifier); + public void getFileEntityByIdentifier(@PathVariable("fileIdentifier") String fileIdentifier, HttpServletResponse response) { + sysFileInfoService.getFileEntityByIdentifier(response, fileIdentifier); } /** diff --git a/microservices-modules/microservices-modules-file/src/main/java/com/microservices/file/service/ISysFileInfoService.java b/microservices-modules/microservices-modules-file/src/main/java/com/microservices/file/service/ISysFileInfoService.java index c12a330ee..a8003ea07 100644 --- a/microservices-modules/microservices-modules-file/src/main/java/com/microservices/file/service/ISysFileInfoService.java +++ b/microservices-modules/microservices-modules-file/src/main/java/com/microservices/file/service/ISysFileInfoService.java @@ -1,9 +1,7 @@ package com.microservices.file.service; -import com.microservices.common.core.domain.R; import com.microservices.common.core.web.domain.AjaxResult; -import com.microservices.system.api.domain.SysFileBytes; import com.microservices.system.api.domain.SysFileInfo; import org.springframework.web.multipart.MultipartFile; @@ -171,7 +169,6 @@ public interface ISysFileInfoService { * 根据文件标识获取文件实体 * * @param fileIdentifier 文件标识 - * @return 文件实体 */ - R getFileEntityByIdentifier(String fileIdentifier); + void getFileEntityByIdentifier(HttpServletResponse response, String fileIdentifier); } diff --git a/microservices-modules/microservices-modules-file/src/main/java/com/microservices/file/service/impl/SysFileInfoServiceImpl.java b/microservices-modules/microservices-modules-file/src/main/java/com/microservices/file/service/impl/SysFileInfoServiceImpl.java index dd34de6d1..0f05b6b2c 100644 --- a/microservices-modules/microservices-modules-file/src/main/java/com/microservices/file/service/impl/SysFileInfoServiceImpl.java +++ b/microservices-modules/microservices-modules-file/src/main/java/com/microservices/file/service/impl/SysFileInfoServiceImpl.java @@ -5,7 +5,6 @@ import com.alibaba.fastjson2.JSONObject; import com.j256.simplemagic.ContentInfo; import com.j256.simplemagic.ContentInfoUtil; import com.microservices.common.core.constant.Constants; -import com.microservices.common.core.domain.R; import com.microservices.common.core.exception.ServiceException; import com.microservices.common.core.utils.DateUtils; import com.microservices.common.core.utils.StringUtils; @@ -20,7 +19,6 @@ import com.microservices.common.security.utils.SecurityUtils; import com.microservices.file.mapper.SysFileInfoMapper; import com.microservices.file.service.ISysFileInfoService; import com.microservices.file.utils.FileUploadUtils; -import com.microservices.system.api.domain.SysFileBytes; import com.microservices.system.api.domain.SysFileInfo; import com.microservices.system.api.model.LoginUser; import org.slf4j.Logger; @@ -34,8 +32,9 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; -import java.nio.file.Files; +import java.io.OutputStream; import java.nio.file.Paths; import java.text.DecimalFormat; import java.util.ArrayList; @@ -511,23 +510,31 @@ public class SysFileInfoServiceImpl implements ISysFileInfoService { } @Override - public R getFileEntityByIdentifier(String fileIdentifier) { - SysFileBytes fileEntity = new SysFileBytes(); + public void getFileEntityByIdentifier(HttpServletResponse response, String fileIdentifier) { SysFileInfo sysFileInfo = selectSysFileInfoByFileIdentifier(fileIdentifier); String filePath = localFilePath + sysFileInfo.getFilePath(); File file = new File(filePath); if (!file.exists()) { throw new ServiceException("该文件不存在"); } - byte[] fileBytes; + response.setHeader("FileName", sysFileInfo.getFileOriginName()); try { - fileBytes = Files.readAllBytes(file.toPath()); + response.setContentType("application/octet-stream"); + response.setHeader("Content-Disposition", "attachment;filename=" + file.getName()); + + try (FileInputStream fileInputStream = new FileInputStream(file); + OutputStream outputStream = response.getOutputStream()) { + // 根据实际情况调整缓冲区大小 + byte[] buffer = new byte[4096]; + int bytesRead; + while ((bytesRead = fileInputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, bytesRead); + } + outputStream.flush(); + } } catch (IOException e) { - throw new ServiceException("文件流读取失败:", e.getMessage()); + throw new ServiceException("文件读取失败", e); } - fileEntity.setFileBytes(fileBytes); - fileEntity.setFileName(sysFileInfo.getFileOriginName()); - return R.ok(fileEntity); } private void fileDownload(SysFileInfo sysFileInfo, HttpServletResponse response) { From 139671ade7be67732a87d31fc5560fd6913b7394 Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Fri, 16 Aug 2024 10:29:42 +0800 Subject: [PATCH 7/8] =?UTF-8?q?feat(=E5=88=B6=E5=93=81=E5=BA=93=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91):=20=E5=88=B6=E5=93=81=E5=BA=93?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=86=85=E9=83=A8=E4=BC=A0=E9=80=92=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 文件均采用InputStream进行流式传递,防止大文件导致字节数组溢出 --- .../httpClient/service/HttpAPIService.java | 11 +--- ...PmsProductLibraryComponentServiceImpl.java | 51 +++++++------------ .../com/microservices/pms/utils/PmsUtils.java | 17 +++++++ 3 files changed, 36 insertions(+), 43 deletions(-) diff --git a/microservices-common/microservices-common-httpClient/src/main/java/com/microservices/common/httpClient/service/HttpAPIService.java b/microservices-common/microservices-common-httpClient/src/main/java/com/microservices/common/httpClient/service/HttpAPIService.java index 67fa6d7d1..87c2b662e 100644 --- a/microservices-common/microservices-common-httpClient/src/main/java/com/microservices/common/httpClient/service/HttpAPIService.java +++ b/microservices-common/microservices-common-httpClient/src/main/java/com/microservices/common/httpClient/service/HttpAPIService.java @@ -24,7 +24,6 @@ import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -32,7 +31,6 @@ import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; -import java.util.Objects; import static com.microservices.common.core.web.domain.AjaxResult.DATA_TAG; @@ -371,23 +369,16 @@ public class HttpAPIService { HttpEntity httpEntity = response.getEntity(); if (httpEntity != null) { InputStream input = httpEntity.getContent(); - ByteArrayOutputStream output = new ByteArrayOutputStream(); - byte[] buffer = new byte[4096]; - int n = 0; - while (-1 != (n = input.read(buffer))) { - output.write(buffer, 0, n); - } String fileName = url.substring(url.lastIndexOf('/') + 1); Header fileNameHeader = response.getFirstHeader("Content-Disposition"); if (fileNameHeader != null) { fileName = fileNameHeader.getValue(); } SysFileBytes sysFileBytes = new SysFileBytes(); - sysFileBytes.setFileBytes(output.toByteArray()); + sysFileBytes.setFileInputStream(input); sysFileBytes.setFileName(fileName); return sysFileBytes; } - } } throw new Exception("请求响应失败"); diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryComponentServiceImpl.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryComponentServiceImpl.java index 8672d5c26..b62d3af1c 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryComponentServiceImpl.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/productLibrary/service/impl/PmsProductLibraryComponentServiceImpl.java @@ -22,7 +22,6 @@ import com.microservices.pms.utils.NexusRequestUrl; import com.microservices.pms.utils.PmsUtils; import com.microservices.system.api.RemoteFileService; import com.microservices.system.api.domain.SysFileBytes; -import com.microservices.system.api.utils.FeignUtils; import org.apache.http.entity.ContentType; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.slf4j.Logger; @@ -426,14 +425,12 @@ public class PmsProductLibraryComponentServiceImpl implements IPmsProductLibrary if (assetMavenInputVo.getFileBytes() != null) { fileBytes = assetMavenInputVo.getFileBytes(); } else { - fileBytes = FeignUtils.getReturnData( - fileService.getFileEntityByIdentifier(assetMavenInputVo.getFileIdentifier(), SecurityConstants.INNER) - ); - if (fileBytes == null) { - throw new ServiceException("制品文件读取失败"); - } + fileBytes = PmsUtils.getFeignFile(fileService.getFileEntityByIdentifier(assetMavenInputVo.getFileIdentifier(), SecurityConstants.INNER)); } - builder.addBinaryBody(String.format("maven2.asset%d", i + 1), fileBytes.getFileBytes(), ContentType.DEFAULT_BINARY, fileBytes.getFileName()); + if (fileBytes == null || fileBytes.getFileInputStream() == null) { + throw new ServiceException("制品文件读取失败"); + } + builder.addBinaryBody(String.format("maven2.asset%d", i + 1), fileBytes.getFileInputStream(), ContentType.DEFAULT_BINARY, fileBytes.getFileName()); } JSONObject bodyLog = toBodyLog(componentMavenInputVo); nexusRequestHelper.doRequest(NexusRequestUrl.UPLOAD_COMPONENTS(componentMavenInputVo.getNexusRepoName()), builder.build(), bodyLog); @@ -487,20 +484,13 @@ public class PmsProductLibraryComponentServiceImpl implements IPmsProductLibrary SysFileBytes fileBytes; if (assetRawInputVo.getFileBytes() != null) { fileBytes = assetRawInputVo.getFileBytes(); - if (fileBytes.getFileInputStream() != null) { - builder.addBinaryBody(String.format("raw.asset%d", i + 1), fileBytes.getFileInputStream(), ContentType.DEFAULT_BINARY, fileBytes.getFileName()); - } else { - builder.addBinaryBody(String.format("raw.asset%d", i + 1), fileBytes.getFileBytes(), ContentType.DEFAULT_BINARY, fileBytes.getFileName()); - } } else { - fileBytes = FeignUtils.getReturnData( - fileService.getFileEntityByIdentifier(assetRawInputVo.getFileIdentifier(), SecurityConstants.INNER) - ); - if (fileBytes == null) { - throw new ServiceException("制品文件读取失败"); - } - builder.addBinaryBody(String.format("raw.asset%d", i + 1), fileBytes.getFileBytes(), ContentType.DEFAULT_BINARY, fileBytes.getFileName()); + fileBytes = PmsUtils.getFeignFile(fileService.getFileEntityByIdentifier(assetRawInputVo.getFileIdentifier(), SecurityConstants.INNER)); } + if (fileBytes == null || fileBytes.getFileInputStream() == null) { + throw new ServiceException("制品文件读取失败"); + } + builder.addBinaryBody(String.format("raw.asset%d", i + 1), fileBytes.getFileInputStream(), ContentType.DEFAULT_BINARY, fileBytes.getFileName()); } JSONObject bodyLog = toBodyLog(componentRawInputVo); nexusRequestHelper.doRequest(NexusRequestUrl.UPLOAD_COMPONENTS(componentRawInputVo.getNexusRepoName()), builder.build(), bodyLog); @@ -535,15 +525,13 @@ public class PmsProductLibraryComponentServiceImpl implements IPmsProductLibrary if (componentInputVo.getFileBytes() != null) { fileBytes = componentInputVo.getFileBytes(); } else { - fileBytes = FeignUtils.getReturnData( - fileService.getFileEntityByIdentifier(componentInputVo.getFileIdentifier(), SecurityConstants.INNER) - ); - if (fileBytes == null) { - throw new ServiceException("制品文件读取失败"); - } + fileBytes = PmsUtils.getFeignFile(fileService.getFileEntityByIdentifier(componentInputVo.getFileIdentifier(), SecurityConstants.INNER)); + } + if (fileBytes == null || fileBytes.getFileInputStream() == null) { + throw new ServiceException("制品文件读取失败"); } - builder.addBinaryBody("npm.asset", fileBytes.getFileBytes(), ContentType.DEFAULT_BINARY, fileBytes.getFileName()); + builder.addBinaryBody("npm.asset", fileBytes.getFileInputStream(), ContentType.DEFAULT_BINARY, fileBytes.getFileName()); JSONObject bodyLog = toBodyLog(componentInputVo); try { nexusRequestHelper.doRequest(NexusRequestUrl.UPLOAD_COMPONENTS(componentInputVo.getNexusRepoName()), builder.build(), bodyLog); @@ -574,15 +562,12 @@ public class PmsProductLibraryComponentServiceImpl implements IPmsProductLibrary if (componentInputVo.getFileBytes() != null) { fileBytes = componentInputVo.getFileBytes(); } else { - fileBytes = FeignUtils.getReturnData( - fileService.getFileEntityByIdentifier(componentInputVo.getFileIdentifier(), SecurityConstants.INNER) - ); + fileBytes = PmsUtils.getFeignFile(fileService.getFileEntityByIdentifier(componentInputVo.getFileIdentifier(), SecurityConstants.INNER)); } - - if (fileBytes == null) { + if (fileBytes == null || fileBytes.getFileInputStream() == null) { throw new ServiceException("制品文件读取失败"); } - builder.addBinaryBody("pypi.asset1", fileBytes.getFileBytes(), ContentType.DEFAULT_BINARY, fileBytes.getFileName()); + builder.addBinaryBody("pypi.asset1", fileBytes.getFileInputStream(), ContentType.DEFAULT_BINARY, fileBytes.getFileName()); JSONObject bodyLog = toBodyLog(componentInputVo); JSONObject res; try { diff --git a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/PmsUtils.java b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/PmsUtils.java index 829041dcc..44c7b79e1 100644 --- a/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/PmsUtils.java +++ b/microservices-modules/microservices-modules-pms/src/main/java/com/microservices/pms/utils/PmsUtils.java @@ -2,7 +2,11 @@ package com.microservices.pms.utils; import com.microservices.common.core.exception.ServiceException; import com.microservices.common.core.utils.ServletUtils; +import com.microservices.system.api.domain.SysFileBytes; +import feign.Response; +import java.io.IOException; +import java.io.InputStream; import java.util.Date; import java.util.HashMap; import java.util.UUID; @@ -95,4 +99,17 @@ public class PmsUtils { } return ""; } + + public static SysFileBytes getFeignFile(Response response) { + try { + InputStream inputStream = response.body().asInputStream(); + String fileName = response.headers().get("FileName") + ""; + SysFileBytes sysFileBytes = new SysFileBytes(); + sysFileBytes.setFileInputStream(inputStream); + sysFileBytes.setFileName(fileName); + return sysFileBytes; + } catch (IOException e) { + throw new ServiceException("获取文件失败:" + e.getMessage()); + } + } } From e05f73976f9f5b8439c50a632c39a651bdae31ea Mon Sep 17 00:00:00 2001 From: OTTO <731554297@qq.com> Date: Fri, 16 Aug 2024 14:27:03 +0800 Subject: [PATCH 8/8] =?UTF-8?q?feat(=E5=88=B6=E5=93=81=E5=BA=93=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91):=20=E5=8A=9F=E8=83=BD=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 快照库列表根据创建时间倒序排序 --- .../resources/mapper/pms/PmsProductLibraryRepositoriesMapper.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryRepositoriesMapper.xml b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryRepositoriesMapper.xml index c86e98a41..41b2f266e 100644 --- a/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryRepositoriesMapper.xml +++ b/microservices-modules/microservices-modules-pms/src/main/resources/mapper/pms/PmsProductLibraryRepositoriesMapper.xml @@ -78,6 +78,7 @@ and pe.enterprise_identifier = #{pmsEnterpriseIdentifier} and pplr.name = #{repoName} and pplr.snapshot_name IS NOT NULL + order by pplr.create_time desc