From 14c80fbd16a51a355138345ecf69df9ca37746bf Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期五, 06 十一月 2026 09:18:32 +0800
Subject: [PATCH] 完善售后退货联动和订单作废保护

---
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/sale/ErpSaleOrderApiImpl.java |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/sale/ErpSaleOrderApiImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/sale/ErpSaleOrderApiImpl.java
index 08a9a10..bd0354a 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/sale/ErpSaleOrderApiImpl.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/api/sale/ErpSaleOrderApiImpl.java
@@ -13,6 +13,10 @@
 import cn.iocoder.yudao.module.erp.service.sale.ErpSaleOrderService;
 import jakarta.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus;
+import java.util.Objects;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -21,6 +25,7 @@
 import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.invalidParamException;
 
 /**
  * ERP 閿�鍞鍗� API 瀹炵幇绫�
@@ -57,6 +62,18 @@
     @Override
     public CommonResult<ErpSaleOrderRespDTO> getSaleOrder(Long id) {
         ErpSaleOrderDO order = saleOrderService.getSaleOrder(id);
+        return success(BeanUtils.toBean(order, ErpSaleOrderRespDTO.class));
+    }
+
+    @Override
+    @Transactional(propagation = Propagation.MANDATORY)
+    public CommonResult<ErpSaleOrderRespDTO> lockSaleOrderForNotice(Long id, String orderNo) {
+        if (id == null && (orderNo == null || orderNo.isBlank())) return success(null);
+        ErpSaleOrderDO order = id != null ? saleOrderMapper.selectByIdForUpdate(id) : saleOrderMapper.selectByNoForUpdate(orderNo);
+        if (order == null || (orderNo != null && !orderNo.isBlank() && !Objects.equals(orderNo, order.getNo())))
+            throw invalidParamException("鍏宠仈閿�鍞鍗曚笉瀛樺湪鎴栬鍗曠紪鍙蜂笉鍖归厤");
+        if (!Objects.equals(order.getStatus(), ErpAuditStatus.APPROVE.getStatus()))
+            throw invalidParamException("閿�鍞鍗曟湭瀹℃牳鎴栧凡浣滃簾锛屼笉鑳界敓鎴愬彂璐ч�氱煡");
         return success(BeanUtils.toBean(order, ErpSaleOrderRespDTO.class));
     }
 
@@ -121,4 +138,4 @@
         return success(true);
     }
 
-}
\ No newline at end of file
+}

--
Gitblit v1.9.3