You've already forked FrameTour-BE
feat(order): 添加零金额订单处理逻辑
- 在 getPaymentParams 方法中增加对订单金额的检查- 如果订单金额为 0 或空,则自动将订单状态设置为已支付 - 更新数据库中的订单信息 - 返回一个特殊的 PaymentParamsResponse,表示免费订单 -非零金额订单则按原有流程处理
This commit is contained in:
@@ -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 {
|
||||||
|
Reference in New Issue
Block a user