From fefed50bf97060a82aabd09e090fa08ce532532f Mon Sep 17 00:00:00 2001
From: p-honggang.li <p-honggang.li@pcitc.com>
Date: 星期三, 20 八月 2025 10:59:04 +0800
Subject: [PATCH] Merge branch 'master' of http://xearth.cn:6600/r/web-manage/web-manage-back

---
 src/main/java/com/webmanage/controller/OrderController.java |   27 +++++++++++++++++++++++----
 1 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/webmanage/controller/OrderController.java b/src/main/java/com/webmanage/controller/OrderController.java
index 6680838..d2d30e7 100644
--- a/src/main/java/com/webmanage/controller/OrderController.java
+++ b/src/main/java/com/webmanage/controller/OrderController.java
@@ -3,7 +3,9 @@
 import com.webmanage.common.Result;
 import com.webmanage.dto.CreateOrderDTO;
 import com.webmanage.dto.OrderQueryDTO;
+import com.webmanage.entity.OrderInfo;
 import com.webmanage.service.OrderInfoService;
+import com.webmanage.service.TokenService;
 import com.webmanage.service.OrderNoService;
 import com.webmanage.vo.OrderDetailVO;
 import io.swagger.annotations.Api;
@@ -29,6 +31,7 @@
 public class OrderController {
     @Resource private OrderInfoService orderInfoService;
     @Resource private OrderNoService orderNoService;
+    @Resource private TokenService tokenService;
 
     @PostMapping("/buyer/page")
     @ApiOperation("鍒嗛〉鏌ヨ涔板璁㈠崟鍒楄〃")
@@ -38,17 +41,33 @@
     }
 
     @PostMapping("/create")
-    @ApiOperation("鍒涘缓璁㈠崟锛堝寘鍚鍗曡鎯咃級")
-    public Result<Object> createOrder(@Valid @RequestBody CreateOrderDTO createOrderDTO) {
+    @ApiOperation("鍒涘缓璁㈠崟锛堝寘鍚鍗曡鎯咃級锛岄渶鍦� Header 鎼哄甫 Idempotency-Token 闃查噸澶嶆彁浜�")
+    public Result<OrderInfo> createOrder(@RequestHeader(value = "Idempotency-Token", required = false) String token,
+                                         @Valid @RequestBody CreateOrderDTO createOrderDTO) {
         try {
-            String orderId = orderInfoService.createOrder(createOrderDTO);
-            return Result.success(orderId);
+            if (!tokenService.verifyAndConsume(token)) {
+                return Result.error("璇锋眰鏃犳晥鎴栭噸澶嶆彁浜わ紝璇峰埛鏂伴〉闈㈠悗閲嶈瘯");
+            }
+            OrderInfo orderInfo = orderInfoService.createOrder(createOrderDTO);
+            return Result.success(orderInfo);
         } catch (Exception e) {
             log.error("鍒涘缓璁㈠崟澶辫触", e);
             return Result.error("鍒涘缓璁㈠崟澶辫触锛�" + e.getMessage());
         }
     }
 
+    @GetMapping("/idempotency/token")
+    @ApiOperation("鑾峰彇涓�娆℃�ч槻閲嶅鎻愪氦 Token")
+    public Result<Object> getIdempotencyToken(@RequestParam(required = false) Long userId) {
+        try {
+            String token = tokenService.generateToken(userId);
+            return Result.success("token鐢熸垚",token);
+        } catch (Exception e) {
+            log.error("鐢熸垚闃查噸澶嶆彁浜� Token 澶辫触", e);
+            return Result.error("鐢熸垚闃查噸澶嶆彁浜� Token 澶辫触锛�" + e.getMessage());
+        }
+    }
+
     @GetMapping("/no/new")
     @ApiOperation("鐢熸垚鍞竴璁㈠崟鍙�")
     public Result<Object> generateOrderNo() {

--
Gitblit v1.8.0