refactor(face): 优化拼图模板内容生成逻辑

- 修改拼图模板内容生成方式,支持多个模板内容生成
- 使用forEach循环处理每个模板,确保内容正确插入
- 保留原有价格计算和购买状态判断逻辑
- 确保contentId在记录存在时正确设置
- 维持原有的商品类型、分组和排序设置
This commit is contained in:
2025-11-21 17:46:28 +08:00
parent 83cfbc67e1
commit c0daa4d3b2

View File

@@ -454,45 +454,47 @@ public class FaceServiceImpl implements FaceService {
} }
}).collect(Collectors.toList()); }).collect(Collectors.toList());
int count = puzzleGenerationRecordMapper.countByFaceId(faceId); List<PuzzleTemplateEntity> puzzleTemplateEntityList = puzzleTemplateMapper.list(face.getScenicId(), null, 1);
if (count > 0) { if (!puzzleTemplateEntityList.isEmpty()) {
ContentPageVO sfpContent = new ContentPageVO();
List<PuzzleGenerationRecordEntity> records = puzzleGenerationRecordMapper.listByFaceId(faceId); List<PuzzleGenerationRecordEntity> records = puzzleGenerationRecordMapper.listByFaceId(faceId);
PuzzleTemplateEntity template = puzzleTemplateMapper.getById(records.getFirst().getTemplateId()); puzzleTemplateEntityList.forEach(template -> {
sfpContent.setName(template.getName()); Optional<PuzzleGenerationRecordEntity> optionalRecord = records.stream().filter(r -> r.getTemplateId().equals(template.getId())).findFirst();
sfpContent.setGroup("plog"); ContentPageVO sfpContent = new ContentPageVO();
sfpContent.setScenicId(face.getScenicId()); sfpContent.setName(template.getName());
sfpContent.setContentType(3); sfpContent.setGroup("plog");
sfpContent.setSourceType(3); sfpContent.setScenicId(face.getScenicId());
sfpContent.setLockType(-1); sfpContent.setContentType(3);
sfpContent.setContentId(records.getFirst().getId()); sfpContent.setSourceType(3);
sfpContent.setTemplateId(template.getId()); sfpContent.setLockType(-1);
sfpContent.setTemplateCoverUrl(template.getCoverImage()); sfpContent.setContentId(optionalRecord.map(PuzzleGenerationRecordEntity::getId).orElse(null));
sfpContent.setGoodsType(3); sfpContent.setTemplateId(template.getId());
sfpContent.setSort(0); sfpContent.setTemplateCoverUrl(template.getCoverImage());
IsBuyRespVO isBuyRespVO = orderBiz.isBuy(face.getMemberId(), face.getScenicId(), 5, records.getFirst().getTemplateId()); sfpContent.setGoodsType(3);
if (isBuyRespVO.isBuy()) { sfpContent.setSort(0);
sfpContent.setIsBuy(1); IsBuyRespVO isBuyRespVO = orderBiz.isBuy(face.getMemberId(), face.getScenicId(), 5, records.getFirst().getTemplateId());
} else { if (isBuyRespVO.isBuy()) {
sfpContent.setIsBuy(0); sfpContent.setIsBuy(1);
} } else {
PriceCalculationRequest calculationRequest = new PriceCalculationRequest(); sfpContent.setIsBuy(0);
ProductItem productItem = new ProductItem(); }
productItem.setProductType(ProductType.PHOTO_LOG); PriceCalculationRequest calculationRequest = new PriceCalculationRequest();
productItem.setProductId(records.getFirst().getTemplateId().toString()); ProductItem productItem = new ProductItem();
productItem.setPurchaseCount(1); productItem.setProductType(ProductType.PHOTO_LOG);
productItem.setScenicId(face.getScenicId().toString()); productItem.setProductId(records.getFirst().getTemplateId().toString());
calculationRequest.setProducts(Collections.singletonList(productItem)); productItem.setPurchaseCount(1);
calculationRequest.setUserId(face.getMemberId()); productItem.setScenicId(face.getScenicId().toString());
calculationRequest.setFaceId(face.getId()); calculationRequest.setProducts(Collections.singletonList(productItem));
calculationRequest.setPreviewOnly(true); // 仅查询价格,不实际使用优惠 calculationRequest.setUserId(face.getMemberId());
PriceCalculationResult calculationResult = iPriceCalculationService.calculatePrice(calculationRequest); calculationRequest.setFaceId(face.getId());
if (calculationResult.getFinalAmount().compareTo(BigDecimal.ZERO) > 0) { calculationRequest.setPreviewOnly(true); // 仅查询价格,不实际使用优惠
sfpContent.setFreeCount(0); PriceCalculationResult calculationResult = iPriceCalculationService.calculatePrice(calculationRequest);
} else { if (calculationResult.getFinalAmount().compareTo(BigDecimal.ZERO) > 0) {
sfpContent.setFreeCount(1); sfpContent.setFreeCount(0);
} } else {
contentList.add(1, sfpContent); sfpContent.setFreeCount(1);
}
contentList.add(1, sfpContent);
});
} }
SourceReqQuery sourceReqQuery = new SourceReqQuery(); SourceReqQuery sourceReqQuery = new SourceReqQuery();
sourceReqQuery.setScenicId(face.getScenicId()); sourceReqQuery.setScenicId(face.getScenicId());