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());