From 39c955b55c51ae53309f6224bd25ed9a30a2bff6 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sun, 15 Feb 2026 09:05:09 +0800 Subject: [PATCH] =?UTF-8?q?refactor(face):=20=E9=87=8D=E6=9E=84=E4=BA=BA?= =?UTF-8?q?=E8=84=B8=E8=AF=86=E5=88=AB=E6=9C=8D=E5=8A=A1=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 按设备列表顺序重新排列结果以确保一致性 - 为每个设备创建对应的内容项,包括无源设备的占位符 - 过滤并按设备ID分组源实体数据 - 为无关联设备的源实体补充单独的处理逻辑 - 优化数据流处理提高代码可读性和维护性 --- .../service/pc/impl/FaceServiceImpl.java | 61 +++++++++++++------ 1 file changed, 43 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java index 79fb5cec..7df16fe0 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java @@ -519,12 +519,52 @@ public class FaceServiceImpl implements FaceService { List deviceList = deviceRepository.getAllDeviceByScenicId(face.getScenicId()); List sourceEntityList = sourceMapper.listSourceByFaceRelation(face.getId(), 2); List memberSourceRelations = memberRelationRepository.listSourceByFaceRelation(face.getId(), 2); + // 按 deviceList 顺序排列结果 + Set deviceIds = deviceList.stream().map(DeviceV2DTO::getId).collect(Collectors.toSet()); + for (DeviceV2DTO device : deviceList) { + List deviceSources = sourceEntityList.stream() + .filter(s -> device.getId().equals(s.getDeviceId())) + .toList(); + if (deviceSources.isEmpty()) { + ContentPageVO content = new ContentPageVO(); + content.setName(device.getName()); + content.setGroup(device.getName()); + content.setContentId(device.getId()); + content.setGoodsType(2); + content.setContentType(2); + content.setScenicId(face.getScenicId()); + content.setSourceType(2); + content.setTemplateCoverUrl(""); + content.setIsBuy(0); + content.setLockType(1); + result.add(content); + } else { + for (SourceEntity sourceEntity : deviceSources) { + ContentPageVO content = new ContentPageVO(); + content.setName("摄影师拍照"); + content.setGroup(device.getName()); + content.setContentId(sourceEntity.getId()); + content.setGoodsType(2); + content.setContentType(2); + content.setScenicId(sourceEntity.getScenicId()); + content.setSourceType(2); + content.setOrigUrl(sourceEntity.getUrl()); + content.setTemplateCoverUrl(sourceEntity.getThumbUrl()); + memberSourceRelations.stream().filter(relation -> relation.getSourceId().equals(sourceEntity.getId())).findAny().ifPresent(relation -> { + content.setIsBuy(relation.getIsBuy()); + }); + content.setLockType(-1); + result.add(content); + } + } + } + // 补充不属于任何设备的源 for (SourceEntity sourceEntity : sourceEntityList) { + if (sourceEntity.getDeviceId() != null && deviceIds.contains(sourceEntity.getDeviceId())) { + continue; + } ContentPageVO content = new ContentPageVO(); content.setName("摄影师拍照"); - deviceList.stream().filter(device -> device.getId().equals(sourceEntity.getDeviceId())).findFirst().ifPresent(device -> { - content.setGroup(device.getName()); - }); content.setContentId(sourceEntity.getId()); content.setGoodsType(2); content.setContentType(2); @@ -538,21 +578,6 @@ public class FaceServiceImpl implements FaceService { content.setLockType(-1); result.add(content); } - List containedDeviceId = sourceEntityList.stream().map(SourceEntity::getDeviceId).filter(Objects::nonNull).distinct().toList(); - deviceList.stream().filter(device -> !containedDeviceId.contains(device.getId())).forEach(device -> { - ContentPageVO content = new ContentPageVO(); - content.setName(device.getName()); - content.setGroup(device.getName()); - content.setContentId(device.getId()); - content.setGoodsType(2); - content.setContentType(2); - content.setScenicId(face.getScenicId()); - content.setSourceType(2); - content.setTemplateCoverUrl(""); - content.setIsBuy(0); - content.setLockType(1); - result.add(content); - }); return result; } List templateList = templateRepository.getTemplateListByScenicId(face.getScenicId());