From e5d17ab1bc9e0779b325c53bf23d61ae4a15432e Mon Sep 17 00:00:00 2001
From: seatonwan9
Date: 星期四, 28 八月 2025 16:17:52 +0800
Subject: [PATCH] 更新代码

---
 src/main/java/com/webmanage/service/OrderInfoService.java          |    7 +++++++
 src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java |   16 ++++++++++++++++
 src/main/java/com/webmanage/controller/OrderController.java        |   13 +++++++++++++
 3 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/webmanage/controller/OrderController.java b/src/main/java/com/webmanage/controller/OrderController.java
index f3120a7..5a9e406 100644
--- a/src/main/java/com/webmanage/controller/OrderController.java
+++ b/src/main/java/com/webmanage/controller/OrderController.java
@@ -360,4 +360,17 @@
             return Result.error("鍙栨秷璁㈠崟澶辫触锛�" + e.getMessage());
         }
     }
+
+    @GetMapping("/product/{productId}/has-completed-orders")
+    @ApiOperation("鏍规嵁浜у搧ID鍒ゆ柇鏄惁瀛樺湪瀹℃牳涓殑鍏宠仈璁㈠崟")
+    public Result<Boolean> hasCompletedOrdersByProductId(
+            @ApiParam("浜у搧ID") @PathVariable @NotBlank String productId) {
+        try {
+            boolean exists = orderInfoService.existsCompletedNotCancelledOrderByProductId(productId);
+            return Result.success(exists);
+        } catch (Exception e) {
+            log.error("鏌ヨ浜у搧鍏宠仈璁㈠崟瀛樺湪鎬уけ璐ワ紝浜у搧ID: {}", productId, e);
+            return Result.error("鏌ヨ澶辫触锛�" + e.getMessage());
+        }
+    }
 }
diff --git a/src/main/java/com/webmanage/service/OrderInfoService.java b/src/main/java/com/webmanage/service/OrderInfoService.java
index 07ff911..ea54fd5 100644
--- a/src/main/java/com/webmanage/service/OrderInfoService.java
+++ b/src/main/java/com/webmanage/service/OrderInfoService.java
@@ -145,4 +145,11 @@
      * @return 鏄惁鏇存柊鎴愬姛
      */
     boolean updateWorkflowId(String orderId, String workflowId);
+
+    /**
+     * 鏍规嵁浜у搧ID鍒ゆ柇鏄惁瀛樺湪鏈彇娑堜笖宸插畬鎴愮殑鍏宠仈璁㈠崟
+     * @param productId 浜у搧ID
+     * @return 瀛樺湪杩斿洖true锛屼笉瀛樺湪杩斿洖false
+     */
+    boolean existsCompletedNotCancelledOrderByProductId(String productId);
 }
diff --git a/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java b/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java
index 459acd4..456e8a3 100644
--- a/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java
+++ b/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java
@@ -41,6 +41,7 @@
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Arrays;
 import java.util.stream.Collectors;
 
 /**
@@ -1183,4 +1184,19 @@
         orderInfo.setUpdatedAt(LocalDateTime.now());
         return this.updateById(orderInfo);
     }
+
+    @Override
+    public boolean existsCompletedNotCancelledOrderByProductId(String productId) {
+        if (!StringUtils.hasText(productId)) {
+            throw new BusinessException("浜у搧ID涓嶈兘涓虹┖");
+        }
+        QueryWrapper<OrderInfo> wrapper = new QueryWrapper<>();
+        wrapper.eq("product_id", productId);
+        // 鏈彇娑堬細閫昏緫鏈垹闄�
+        wrapper.eq("deleted", 0);
+        // 瀹℃牳涓細鐘舵�佷笉涓� 宸插畬鎴� 鎴� 宸插彇娑�
+        wrapper.notIn("order_status", Arrays.asList("宸插畬鎴�", "宸插彇娑�"));
+        Integer count = this.baseMapper.selectCount(wrapper);
+        return count != null && count > 0;
+    }
 }

--
Gitblit v1.8.0