feat(order): 添加照片日记产品类型的价格计算支持

- 新增 case 5 分支处理照片日记产品类型
- 创建 PhotoLog 产品的价格计算请求对象
- 设置产品类型为 PHOTO_LOG 并配置相关参数
- 调用价格计算服务获取最终价格和原价
- 设置价格对象的 faceId 和 scenicId 字段
- 实现仅查询价格不使用优惠的预览模式
This commit is contained in:
2026-01-09 22:43:11 +08:00
parent 8b7f3d8eae
commit 42000df311
3 changed files with 29 additions and 4 deletions

View File

@@ -67,7 +67,7 @@ public class OrderBiz {
@Autowired @Autowired
private IPriceCalculationService iPriceCalculationService; private IPriceCalculationService iPriceCalculationService;
public PriceObj queryPrice(Long scenicId, int goodsType, Long goodsId) { public PriceObj queryPrice(Long scenicId, Long memberId, int goodsType, Long goodsId) {
PriceObj priceObj = new PriceObj(); PriceObj priceObj = new PriceObj();
priceObj.setGoodsType(goodsType); priceObj.setGoodsType(goodsType);
priceObj.setGoodsId(goodsId); priceObj.setGoodsId(goodsId);
@@ -99,8 +99,10 @@ public class OrderBiz {
vlogProductItem.setQuantity(videoTaskRepository.getTaskLensNum(video.getTaskId())); vlogProductItem.setQuantity(videoTaskRepository.getTaskLensNum(video.getTaskId()));
vlogProductItem.setScenicId(scenicId.toString()); vlogProductItem.setScenicId(scenicId.toString());
vlogCalculationRequest.setProducts(Collections.singletonList(vlogProductItem)); vlogCalculationRequest.setProducts(Collections.singletonList(vlogProductItem));
vlogCalculationRequest.setUserId(memberId);
vlogCalculationRequest.setFaceId(priceObj.getFaceId()); vlogCalculationRequest.setFaceId(priceObj.getFaceId());
vlogCalculationRequest.setPreviewOnly(true); // 仅查询价格,不实际使用优惠 vlogCalculationRequest.setPreviewOnly(true); // 仅查询价格,不实际使用优惠
vlogCalculationRequest.setAutoUseCoupon(true);
PriceCalculationResult vlogCalculationResult = iPriceCalculationService.calculatePrice(vlogCalculationRequest); PriceCalculationResult vlogCalculationResult = iPriceCalculationService.calculatePrice(vlogCalculationRequest);
priceObj.setPrice(vlogCalculationResult.getFinalAmount()); priceObj.setPrice(vlogCalculationResult.getFinalAmount());
priceObj.setSlashPrice(vlogCalculationResult.getOriginalAmount()); priceObj.setSlashPrice(vlogCalculationResult.getOriginalAmount());
@@ -120,13 +122,33 @@ public class OrderBiz {
if (face != null) { if (face != null) {
calculationRequest.setUserId(face.getMemberId()); calculationRequest.setUserId(face.getMemberId());
} }
calculationRequest.setUserId(memberId);
calculationRequest.setFaceId(goodsId); calculationRequest.setFaceId(goodsId);
calculationRequest.setPreviewOnly(true); // 仅查询价格,不实际使用优惠 calculationRequest.setPreviewOnly(true); // 仅查询价格,不实际使用优惠
calculationRequest.setAutoUseCoupon(true);
PriceCalculationResult priceCalculationResult = iPriceCalculationService.calculatePrice(calculationRequest); PriceCalculationResult priceCalculationResult = iPriceCalculationService.calculatePrice(calculationRequest);
priceObj.setPrice(priceCalculationResult.getFinalAmount()); priceObj.setPrice(priceCalculationResult.getFinalAmount());
priceObj.setSlashPrice(priceCalculationResult.getOriginalAmount()); priceObj.setSlashPrice(priceCalculationResult.getOriginalAmount());
priceObj.setFaceId(goodsId); priceObj.setFaceId(goodsId);
break; break;
case 5:
PriceCalculationRequest plogCalculationRequest = new PriceCalculationRequest();
ProductItem plogProductItem = new ProductItem();
plogProductItem.setProductType(ProductType.PHOTO_LOG);
plogProductItem.setProductId(scenicId.toString());
plogProductItem.setPurchaseCount(1);
plogProductItem.setScenicId(scenicId.toString());
plogCalculationRequest.setProducts(Collections.singletonList(plogProductItem));
plogCalculationRequest.setUserId(memberId);
plogCalculationRequest.setFaceId(goodsId);
plogCalculationRequest.setPreviewOnly(true); // 仅查询价格,不实际使用优惠
plogCalculationRequest.setAutoUseCoupon(true);
PriceCalculationResult plogPriceCalculationResult = iPriceCalculationService.calculatePrice(plogCalculationRequest);
priceObj.setPrice(plogPriceCalculationResult.getFinalAmount());
priceObj.setSlashPrice(plogPriceCalculationResult.getOriginalAmount());
priceObj.setFaceId(goodsId);
priceObj.setScenicId(scenicId);
break;
case 13: case 13:
PriceCalculationRequest aiCamCalculationRequest = new PriceCalculationRequest(); PriceCalculationRequest aiCamCalculationRequest = new PriceCalculationRequest();
ProductItem aiCamProductItem = new ProductItem(); ProductItem aiCamProductItem = new ProductItem();
@@ -135,7 +157,10 @@ public class OrderBiz {
aiCamProductItem.setPurchaseCount(1); aiCamProductItem.setPurchaseCount(1);
aiCamProductItem.setScenicId(scenicId.toString()); aiCamProductItem.setScenicId(scenicId.toString());
aiCamCalculationRequest.setProducts(Collections.singletonList(aiCamProductItem)); aiCamCalculationRequest.setProducts(Collections.singletonList(aiCamProductItem));
aiCamCalculationRequest.setUserId(memberId);
aiCamCalculationRequest.setFaceId(goodsId);
aiCamCalculationRequest.setPreviewOnly(true); // 仅查询价格,不实际使用优惠 aiCamCalculationRequest.setPreviewOnly(true); // 仅查询价格,不实际使用优惠
aiCamCalculationRequest.setAutoUseCoupon(true);
PriceCalculationResult aiCamPriceCalculationResult = iPriceCalculationService.calculatePrice(aiCamCalculationRequest); PriceCalculationResult aiCamPriceCalculationResult = iPriceCalculationService.calculatePrice(aiCamCalculationRequest);
priceObj.setPrice(aiCamPriceCalculationResult.getFinalAmount()); priceObj.setPrice(aiCamPriceCalculationResult.getFinalAmount());
priceObj.setSlashPrice(aiCamPriceCalculationResult.getOriginalAmount()); priceObj.setSlashPrice(aiCamPriceCalculationResult.getOriginalAmount());
@@ -190,7 +215,7 @@ public class OrderBiz {
} }
} }
} }
PriceObj priceObj = queryPrice(scenicId, goodsType, goodsId); PriceObj priceObj = queryPrice(scenicId, memberId, goodsType, goodsId);
if (priceObj == null) { if (priceObj == null) {
return respVO; return respVO;
} }

View File

@@ -229,7 +229,7 @@ public class GoodsServiceImpl implements GoodsService {
isBuy = orderRepository.checkUserBuyFaceItem(userId, entity.getFaceId(), -1, entity.getTemplateId()); isBuy = orderRepository.checkUserBuyFaceItem(userId, entity.getFaceId(), -1, entity.getTemplateId());
} }
if (!isBuy) { if (!isBuy) {
PriceObj priceObj = orderBiz.queryPrice(video.getScenicId(), 0, videoId); PriceObj priceObj = orderBiz.queryPrice(video.getScenicId(), userId, 0, videoId);
if (priceObj.isFree()) { if (priceObj.isFree()) {
goodsDetailVO.setIsBuy(1); goodsDetailVO.setIsBuy(1);
} else { } else {

View File

@@ -757,7 +757,7 @@ public class OrderServiceImpl implements OrderService {
order.setOpenId(member.getOpenId()); order.setOpenId(member.getOpenId());
order.setScenicId(createOrderReqVO.getScenicId()); order.setScenicId(createOrderReqVO.getScenicId());
PriceObj priceObj = orderBiz.queryPrice(order.getScenicId(), createOrderReqVO.getGoodsType(), createOrderReqVO.getGoodsId()); PriceObj priceObj = orderBiz.queryPrice(order.getScenicId(), member.getId(), createOrderReqVO.getGoodsType(), createOrderReqVO.getGoodsId());
order.setSlashPrice(priceObj.getSlashPrice()); order.setSlashPrice(priceObj.getSlashPrice());
order.setPrice(priceObj.getPrice()); order.setPrice(priceObj.getPrice());
// 判断是否是本人数据 // 判断是否是本人数据