refactor(order): 重构订单创建和价格计算逻辑

- 修改订单服务中的券码使用逻辑,增加人脸 ID 参数
- 优化价格计算控制器和服务中的预览模式
- 更新券码使用记录,支持人脸 ID 记录
- 修复零金额订单的处理逻辑
- 优化日志输出级别和内容
This commit is contained in:
2025-09-16 17:21:30 +08:00
parent 7cfcc44531
commit 57266eb535
9 changed files with 27 additions and 25 deletions

View File

@@ -876,13 +876,12 @@ public class OrderServiceImpl implements OrderService {
MemberRespVO member = memberMapper.getById(userId);
order.setOpenId(member.getOpenId());
order.setScenicId(face.getScenicId());
order.setSlashPrice(cachedResult.getOriginalAmount());
order.setPrice(cachedResult.getFinalAmount());
// promo code
order.setPayPrice(cachedResult.getFinalAmount());
}
if (order.getPayPrice().equals(BigDecimal.ZERO)) {
order.setSlashPrice(cachedResult.getOriginalAmount());
order.setPrice(cachedResult.getFinalAmount());
// promo code
order.setPayPrice(cachedResult.getFinalAmount());
if (order.getPayPrice().compareTo(BigDecimal.ZERO) <= 0) {
order.setStatus(OrderStateEnum.PAID.getState());
order.setPayAt(new Date());
} else {
@@ -909,7 +908,7 @@ public class OrderServiceImpl implements OrderService {
if (cachedResult.getUsedVoucher() != null) {
order.setBrokerId(cachedResult.getUsedVoucher().getBrokerId());
order.setPromoCode(cachedResult.getUsedVoucher().getVoucherCode());
iVoucherService.markVoucherAsUsed(cachedResult.getUsedVoucher().getVoucherCode(), order.getId().toString());
iVoucherService.markVoucherAsUsed(cachedResult.getUsedVoucher().getVoucherCode(), "用户下单", order.getId().toString(), cachedResult.getUsedVoucher().getDiscountValue(), face.getId());
}
List<OrderItemEntity> orderItems = new ArrayList<>();
OrderItemEntity orderItem = new OrderItemEntity();
@@ -932,7 +931,7 @@ public class OrderServiceImpl implements OrderService {
OrderEntity order = orderMapper.get(orderId);
// 检查订单金额是否为0
if (order.getPayPrice() == null || order.getPayPrice().compareTo(BigDecimal.ZERO) == 0) {
if (order.getPayPrice() == null || order.getPayPrice().compareTo(BigDecimal.ZERO) <= 0) {
// 零金额订单:设置needPay为false,直接标记为已支付
order.setStatus(1); // 1表示已支付
order.setPayAt(new Date());