From 995e4fed95dc0625a2b3119838331823fa4558ac Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期四, 12 三月 2026 14:50:20 +0800
Subject: [PATCH] bugfix

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java |   36 ++++++++++++++++++++++++++++++++++++
 1 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
index c618ae7..d257b52 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -2504,4 +2504,40 @@
 
         return xpOrderDetailVO;
     }
+
+    @Override
+    public void changeAmount(Long id, BigDecimal amount) {
+        if (Objects.isNull(id)) {
+            throw new ServiceException("订单ID不能为空", I18nKeyConstant.ORDER_CHANGE_AMOUNT_ID_REQUIRED);
+        }
+        if (Objects.isNull(amount)) {
+            throw new ServiceException("订单金额不能为空", I18nKeyConstant.ORDER_CHANGE_AMOUNT_AMOUNT_REQUIRED);
+        }
+        if (amount.compareTo(BigDecimal.ZERO) < 0) {
+            throw new ServiceException("订单金额不能小于0", I18nKeyConstant.ORDER_CHANGE_AMOUNT_AMOUNT_INVALID);
+        }
+
+        XpOrder order = this.getById(id);
+        if (Objects.isNull(order)) {
+            throw new ServiceException("订单不存在", I18nKeyConstant.ORDER_NOT_EXISTS);
+        }
+
+        final Integer pendingPaymentStatus = 8;
+        if (!Objects.equals(order.getStatus(), pendingPaymentStatus)) {
+            throw new ServiceException("当前订单状态不允许改价,只有待付款状态的订单可以改价", I18nKeyConstant.ORDER_CHANGE_AMOUNT_STATUS_INVALID);
+        }
+
+        if (Objects.nonNull(order.getOrderMoney()) && order.getOrderMoney().compareTo(amount) == 0) {
+            return;
+        }
+
+        boolean updated = this.lambdaUpdate()
+                .set(XpOrder::getOrderMoney, amount)
+                .eq(XpOrder::getId, id)
+                .eq(XpOrder::getStatus, pendingPaymentStatus)
+                .update();
+        if (!updated) {
+            throw new ServiceException("订单改价失败,请稍后重试", I18nKeyConstant.ORDER_CHANGE_AMOUNT_FAILED);
+        }
+    }
 }

--
Gitblit v1.7.1