feat(order): 添加零金额订单处理逻辑

- 在 getPaymentParams 方法中增加对订单金额的检查- 如果订单金额为 0 或空,则自动将订单状态设置为已支付
- 更新数据库中的订单信息
- 返回一个特殊的 PaymentParamsResponse,表示免费订单
-非零金额订单则按原有流程处理
This commit is contained in:
2025-09-03 08:31:45 +08:00
parent 0ff0b75910
commit bea5255927

View File

@@ -843,10 +843,23 @@ public class OrderServiceImpl implements OrderService {
@Override @Override
public ApiResponse<PaymentParamsResponse> getPaymentParams(Long orderId, Long userId, PaymentParamsRequest request) { public ApiResponse<PaymentParamsResponse> getPaymentParams(Long orderId, Long userId, PaymentParamsRequest request) {
OrderEntity order = orderMapper.get(orderId);
// 检查订单金额是否为0
if (order.getPayPrice() == null || order.getPayPrice().compareTo(BigDecimal.ZERO) == 0) {
// 零金额订单:设置needPay为false,直接标记为已支付
order.setStatus(1); // 1表示已支付
order.setPayAt(new Date());
orderMapper.updateOrder(order);
// 返回免费订单响应
return ApiResponse.success(PaymentParamsResponse.free(orderId, orderId.toString()));
}
// 非零金额订单:按原流程处理
PaymentParamsResponse response = new PaymentParamsResponse(); PaymentParamsResponse response = new PaymentParamsResponse();
response.setOrderId(orderId); response.setOrderId(orderId);
response.setOrderNo(orderId.toString()); response.setOrderNo(orderId.toString());
OrderEntity order = orderMapper.get(orderId);
response.setNeedPay(true); response.setNeedPay(true);
List<OrderItemEntity> orderItems = orderMapper.getOrderItems(orderId); List<OrderItemEntity> orderItems = orderMapper.getOrderItems(orderId);
try { try {