You've already forked FrameTour-BE
refactor(face): 优化拼图模板内容生成逻辑
- 修改拼图模板内容生成方式,支持多个模板内容生成 - 使用forEach循环处理每个模板,确保内容正确插入 - 保留原有价格计算和购买状态判断逻辑 - 确保contentId在记录存在时正确设置 - 维持原有的商品类型、分组和排序设置
This commit is contained in:
@@ -454,45 +454,47 @@ public class FaceServiceImpl implements FaceService {
|
||||
}
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
int count = puzzleGenerationRecordMapper.countByFaceId(faceId);
|
||||
if (count > 0) {
|
||||
ContentPageVO sfpContent = new ContentPageVO();
|
||||
List<PuzzleTemplateEntity> puzzleTemplateEntityList = puzzleTemplateMapper.list(face.getScenicId(), null, 1);
|
||||
if (!puzzleTemplateEntityList.isEmpty()) {
|
||||
List<PuzzleGenerationRecordEntity> records = puzzleGenerationRecordMapper.listByFaceId(faceId);
|
||||
PuzzleTemplateEntity template = puzzleTemplateMapper.getById(records.getFirst().getTemplateId());
|
||||
sfpContent.setName(template.getName());
|
||||
sfpContent.setGroup("plog");
|
||||
sfpContent.setScenicId(face.getScenicId());
|
||||
sfpContent.setContentType(3);
|
||||
sfpContent.setSourceType(3);
|
||||
sfpContent.setLockType(-1);
|
||||
sfpContent.setContentId(records.getFirst().getId());
|
||||
sfpContent.setTemplateId(template.getId());
|
||||
sfpContent.setTemplateCoverUrl(template.getCoverImage());
|
||||
sfpContent.setGoodsType(3);
|
||||
sfpContent.setSort(0);
|
||||
IsBuyRespVO isBuyRespVO = orderBiz.isBuy(face.getMemberId(), face.getScenicId(), 5, records.getFirst().getTemplateId());
|
||||
if (isBuyRespVO.isBuy()) {
|
||||
sfpContent.setIsBuy(1);
|
||||
} else {
|
||||
sfpContent.setIsBuy(0);
|
||||
}
|
||||
PriceCalculationRequest calculationRequest = new PriceCalculationRequest();
|
||||
ProductItem productItem = new ProductItem();
|
||||
productItem.setProductType(ProductType.PHOTO_LOG);
|
||||
productItem.setProductId(records.getFirst().getTemplateId().toString());
|
||||
productItem.setPurchaseCount(1);
|
||||
productItem.setScenicId(face.getScenicId().toString());
|
||||
calculationRequest.setProducts(Collections.singletonList(productItem));
|
||||
calculationRequest.setUserId(face.getMemberId());
|
||||
calculationRequest.setFaceId(face.getId());
|
||||
calculationRequest.setPreviewOnly(true); // 仅查询价格,不实际使用优惠
|
||||
PriceCalculationResult calculationResult = iPriceCalculationService.calculatePrice(calculationRequest);
|
||||
if (calculationResult.getFinalAmount().compareTo(BigDecimal.ZERO) > 0) {
|
||||
sfpContent.setFreeCount(0);
|
||||
} else {
|
||||
sfpContent.setFreeCount(1);
|
||||
}
|
||||
contentList.add(1, sfpContent);
|
||||
puzzleTemplateEntityList.forEach(template -> {
|
||||
Optional<PuzzleGenerationRecordEntity> optionalRecord = records.stream().filter(r -> r.getTemplateId().equals(template.getId())).findFirst();
|
||||
ContentPageVO sfpContent = new ContentPageVO();
|
||||
sfpContent.setName(template.getName());
|
||||
sfpContent.setGroup("plog");
|
||||
sfpContent.setScenicId(face.getScenicId());
|
||||
sfpContent.setContentType(3);
|
||||
sfpContent.setSourceType(3);
|
||||
sfpContent.setLockType(-1);
|
||||
sfpContent.setContentId(optionalRecord.map(PuzzleGenerationRecordEntity::getId).orElse(null));
|
||||
sfpContent.setTemplateId(template.getId());
|
||||
sfpContent.setTemplateCoverUrl(template.getCoverImage());
|
||||
sfpContent.setGoodsType(3);
|
||||
sfpContent.setSort(0);
|
||||
IsBuyRespVO isBuyRespVO = orderBiz.isBuy(face.getMemberId(), face.getScenicId(), 5, records.getFirst().getTemplateId());
|
||||
if (isBuyRespVO.isBuy()) {
|
||||
sfpContent.setIsBuy(1);
|
||||
} else {
|
||||
sfpContent.setIsBuy(0);
|
||||
}
|
||||
PriceCalculationRequest calculationRequest = new PriceCalculationRequest();
|
||||
ProductItem productItem = new ProductItem();
|
||||
productItem.setProductType(ProductType.PHOTO_LOG);
|
||||
productItem.setProductId(records.getFirst().getTemplateId().toString());
|
||||
productItem.setPurchaseCount(1);
|
||||
productItem.setScenicId(face.getScenicId().toString());
|
||||
calculationRequest.setProducts(Collections.singletonList(productItem));
|
||||
calculationRequest.setUserId(face.getMemberId());
|
||||
calculationRequest.setFaceId(face.getId());
|
||||
calculationRequest.setPreviewOnly(true); // 仅查询价格,不实际使用优惠
|
||||
PriceCalculationResult calculationResult = iPriceCalculationService.calculatePrice(calculationRequest);
|
||||
if (calculationResult.getFinalAmount().compareTo(BigDecimal.ZERO) > 0) {
|
||||
sfpContent.setFreeCount(0);
|
||||
} else {
|
||||
sfpContent.setFreeCount(1);
|
||||
}
|
||||
contentList.add(1, sfpContent);
|
||||
});
|
||||
}
|
||||
SourceReqQuery sourceReqQuery = new SourceReqQuery();
|
||||
sourceReqQuery.setScenicId(face.getScenicId());
|
||||
|
||||
Reference in New Issue
Block a user