BUGFIX: 隐藏加载不出minio的相关数据;

This commit is contained in:
shahaibo
2025-03-12 22:48:18 +08:00
parent d3ee0e5f4f
commit a043db2de5
2 changed files with 73 additions and 52 deletions

View File

@@ -1408,6 +1408,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
d.setMinIOPath(o.getPath()); d.setMinIOPath(o.getPath());
d.setPrintObject(new DesignPythonItemPrint()); d.setPrintObject(new DesignPythonItemPrint());
})); }));
response.getOthers().removeIf(o -> !minioUtil.doesObjectExist(o.getMinIOPath()));
return editDesignItemLayer(flag, designPythonOutfit, return editDesignItemLayer(flag, designPythonOutfit,
minioUtil.getPreSignedUrl(designPythonOutfit.getDesignUrl(), 24 * 60), minioUtil.getPreSignedUrl(designPythonOutfit.getDesignUrl(), 24 * 60),
editResponseColor(designItemDetails, response)); editResponseColor(designItemDetails, response));

View File

@@ -183,73 +183,93 @@ public class LibraryServiceImpl extends ServiceImpl<LibraryMapper, Library> impl
} }
} }
queryWrapper.orderByDesc("id"); queryWrapper.orderByDesc("id");
IPage<Library> page = getBaseMapper().selectPage( // 1. 先查询所有符合条件的 Library 数据
new Page<>(query.getPage(), query.getSize()), queryWrapper); List<Library> libraryList = getBaseMapper().selectList(queryWrapper);
if (CollectionUtils.isEmpty(page.getRecords())) { if (CollectionUtils.isEmpty(libraryList)) {
return PageBaseResponse.success(new Page<>()); return PageBaseResponse.success(new Page<>());
} }
// 2. 封装打点内容
Map<Long, LibraryModelPointVO> map = null; Map<Long, LibraryModelPointVO> map = null;
//封装打点内容 boolean isExist = libraryList.stream()
Boolean isExist = page.getRecords().stream()
.anyMatch(library -> library.getLevel1Type().equals(LibraryLevel1TypeEnum.MODELS.getRealName())); .anyMatch(library -> library.getLevel1Type().equals(LibraryLevel1TypeEnum.MODELS.getRealName()));
if (isExist) { if (isExist) {
List<Long> libarayIds = page.getRecords().stream() List<Long> libraryIds = libraryList.stream()
.filter(library -> library.getLevel1Type().equals(LibraryLevel1TypeEnum.MODELS.getRealName())) .filter(library -> library.getLevel1Type().equals(LibraryLevel1TypeEnum.MODELS.getRealName()))
.map(Library::getId) .map(Library::getId)
.collect(Collectors.toList()); .collect(Collectors.toList());
List<LibraryModelPointVO> libraryModelPointVOS = libraryModelPointService.selectByLibraryIds(libarayIds); List<LibraryModelPointVO> libraryModelPointVOS = libraryModelPointService.selectByLibraryIds(libraryIds);
if (!CollectionUtils.isEmpty(libraryModelPointVOS)) { if (!CollectionUtils.isEmpty(libraryModelPointVOS)) {
map = libraryModelPointVOS.stream().collect(Collectors.toMap(LibraryModelPointVO::getRelationId, v -> v)); map = libraryModelPointVOS.stream()
.collect(Collectors.toMap(LibraryModelPointVO::getRelationId, v -> v));
} }
} }
Map<Long, LibraryModelPointVO> finalMap = map; Map<Long, LibraryModelPointVO> finalMap = map;
AtomicInteger i = new AtomicInteger();
IPage<QueryLibraryPageVO> convert = page.convert((Function<Library, QueryLibraryPageVO>) library -> { // 3. 转换 Library 为 QueryLibraryPageVO并通过 minioUtil 过滤掉不存在的 URL
List<QueryLibraryPageVO> convertedList = libraryList.stream()
.map(library -> {
QueryLibraryPageVO libraryPageVO = CopyUtil.copyObject(library, QueryLibraryPageVO.class); QueryLibraryPageVO libraryPageVO = CopyUtil.copyObject(library, QueryLibraryPageVO.class);
libraryPageVO.setDesignType(DesignTypeEnum.LIBRARY.getRealName()); libraryPageVO.setDesignType(DesignTypeEnum.LIBRARY.getRealName());
libraryPageVO.setMinIOPath(library.getUrl()); libraryPageVO.setMinIOPath(library.getUrl());
String url = library.getUrl(); String url = library.getUrl();
if (minioUtil.doesObjectExist(url)) { if (minioUtil.doesObjectExist(url)) {
libraryPageVO.setUrl(minioUtil.getPreSignedUrl(library.getUrl(), 24 * 60)); libraryPageVO.setUrl(minioUtil.getPreSignedUrl(url, 24 * 60));
if (finalMap != null && finalMap.containsKey(library.getId())) { if (finalMap != null && finalMap.containsKey(library.getId())) {
libraryPageVO.setLibraryModelPoint(finalMap.get(library.getId())); libraryPageVO.setLibraryModelPoint(finalMap.get(library.getId()));
} }
if (libraryPageVO.getLevel1Type().equals(LibraryLevel1TypeEnum.SKETCH_BOARD.getRealName())) { if (libraryPageVO.getLevel1Type().equals(LibraryLevel1TypeEnum.SKETCH_BOARD.getRealName())) {
if (!StringUtils.isEmpty(libraryPageVO.getLevel2Type())) { if (!StringUtils.isEmpty(libraryPageVO.getLevel2Type())) {
Position position = Position.getPosition(libraryPageVO.getLevel2Type()); Position position = Position.getPosition(libraryPageVO.getLevel2Type());
libraryPageVO.setLevel2TypeEnum(new BizJson(position.getValue(), position.name(), BusinessException.getMessageFromResource(position.name()))); libraryPageVO.setLevel2TypeEnum(new BizJson(
position.getValue(),
position.name(),
BusinessException.getMessageFromResource(position.name()))
);
} }
} }
if (libraryPageVO.getLevel1Type().equals(LibraryLevel1TypeEnum.PRINT_BOARD.getRealName())) { if (libraryPageVO.getLevel1Type().equals(LibraryLevel1TypeEnum.PRINT_BOARD.getRealName())) {
PrintboardLevel2TypeEnum printboardLevel2TypeEnum = PrintboardLevel2TypeEnum.fromName(libraryPageVO.getLevel2Type()); PrintboardLevel2TypeEnum printboardLevel2TypeEnum = PrintboardLevel2TypeEnum.fromName(libraryPageVO.getLevel2Type());
libraryPageVO.setLevel2TypeEnum(new BizJson(printboardLevel2TypeEnum.getValue(), printboardLevel2TypeEnum.name(), BusinessException.getMessageFromResource(printboardLevel2TypeEnum.name()))); libraryPageVO.setLevel2TypeEnum(new BizJson(
printboardLevel2TypeEnum.getValue(),
printboardLevel2TypeEnum.name(),
BusinessException.getMessageFromResource(printboardLevel2TypeEnum.name()))
);
} }
if (libraryPageVO.getLevel1Type().equals(LibraryLevel1TypeEnum.DESIGN_ELEMENTS.getRealName())) { if (libraryPageVO.getLevel1Type().equals(LibraryLevel1TypeEnum.DESIGN_ELEMENTS.getRealName())) {
DesignElementsEnum designElementsEnum = DesignElementsEnum.fromName(libraryPageVO.getLevel2Type()); DesignElementsEnum designElementsEnum = DesignElementsEnum.fromName(libraryPageVO.getLevel2Type());
libraryPageVO.setLevel2TypeEnum(new BizJson(designElementsEnum.getValue(), designElementsEnum.name(), BusinessException.getMessageFromResource(designElementsEnum.name()))); libraryPageVO.setLevel2TypeEnum(new BizJson(
designElementsEnum.getValue(),
designElementsEnum.name(),
BusinessException.getMessageFromResource(designElementsEnum.name()))
);
} }
return libraryPageVO; return libraryPageVO;
}else { } else {
i.getAndIncrement(); // 如果对应的 MinIO 文件不存在,则返回 null后续过滤掉
return null; return null;
} }
}).getRecords().stream() })
.filter(Objects::nonNull) .filter(Objects::nonNull)
.collect(Collectors.collectingAndThen( .collect(Collectors.toList());
Collectors.toList(),
list -> new Page<QueryLibraryPageVO>(page.getCurrent(), page.getSize(), page.getTotal()) { // 4. 手动分页
@Override int total = convertedList.size();
public List<QueryLibraryPageVO> getRecords() { int currentPage = query.getPage(); // 当前页码从1开始
return list; int pageSize = query.getSize(); // 每页大小
int fromIndex = (currentPage - 1) * pageSize;
int toIndex = Math.min(total, currentPage * pageSize);
List<QueryLibraryPageVO> pageList = new ArrayList<>();
if (fromIndex < total) {
pageList = convertedList.subList(fromIndex, toIndex);
} }
@Override // 5. 构造 IPage 对象(使用 MyBatis-Plus 的 Page 实现)
public long getTotal() { IPage<QueryLibraryPageVO> pageResult = new Page<>(currentPage, pageSize, total);
return page.getTotal(); pageResult.setRecords(pageList);
}
} // 6. 返回结果
)); return PageBaseResponse.success(pageResult);
return PageBaseResponse.success(convert);
} }
@Override @Override