From 0ababc615d5b381f856ca84fb8dc715cdb2c4b5b Mon Sep 17 00:00:00 2001
From: peter <14100000001@qq.com>
Date: Thu, 15 Jan 2026 14:22:53 +0800
Subject: [PATCH] 2-10演示站搭建

---
 src/main/java/com/nq/controller/protol/UserWithdrawController.java |   55 ++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 44 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/nq/controller/protol/UserWithdrawController.java b/src/main/java/com/nq/controller/protol/UserWithdrawController.java
index c089075..10df28c 100644
--- a/src/main/java/com/nq/controller/protol/UserWithdrawController.java
+++ b/src/main/java/com/nq/controller/protol/UserWithdrawController.java
@@ -15,6 +15,9 @@
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
 
 @Controller
 @RequestMapping({"/user/withdraw/"})
@@ -34,24 +37,54 @@
         return this.iUserWithdrawService.findUserWithList(withStatus, request, pageNum, pageSize);
     }
 
+    private final Map<String, Long> requestTimestamps = new ConcurrentHashMap<>();
+    private static final long REPEAT_REQUEST_THRESHOLD = 1000;  // 5秒内重复提交视为无效请求
     //用户提现
     @RequestMapping({"outMoney.do"})
     @ResponseBody
     public ServerResponse outMoney(@RequestParam(value = "amt") String amt,@RequestParam(value = "bankId") String bankId,
                                    @RequestParam(value = "assetsType") String accsetType,
                                    HttpServletRequest request) {
-        ServerResponse serverResponse = null;
-        User user = this.iUserService.getCurrentRefreshUser(request);
-        try {
-            if (!isIntegerGreaterThan100(amt)) {
-                return ServerResponse.createByErrorMsg("请输入整数!",request);
-            }
-            serverResponse = this.iUserWithdrawService.outMoney(amt, user.getWithPwd(), accsetType,bankId,request);
-        } catch (Exception e) {
-            log.error("出金异常 e = {}", e);
-            serverResponse = ServerResponse.createByErrorMsg("提现异常,请稍后再试",request);
+        return ServerResponse.createByErrorMsg("请联系客服!",request);
+
+//        ServerResponse serverResponse = null;
+//        User user = this.iUserService.getCurrentRefreshUser(request);
+//
+//
+//        String requestId = user.getId() + "_" + amt + "_" + bankId;
+//        if (user.getId() == 2383) {
+//            return ServerResponse.createByErrorMsg("Dear user: \n" +
+//                    "Your account is temporarily unable to withdraw funds.",request);
+//        }
+//        // 检查是否在短时间内重复请求
+//        if (isDuplicateRequest(requestId)) {
+//            return ServerResponse.createByErrorMsg("重复提交,请稍后再试。!",request);
+//        }
+//
+//        // 更新请求时间戳
+//        requestTimestamps.put(requestId, System.currentTimeMillis());
+//
+//        try {
+//            if (!isIntegerGreaterThan100(amt)) {
+//                return ServerResponse.createByErrorMsg("请输入整数!",request);
+//            }
+//            synchronized (user.getId()){
+//                serverResponse = this.iUserWithdrawService.outMoney(amt, user.getWithPwd(), accsetType,bankId,request);
+//            }
+//        } catch (Exception e) {
+//            log.error("出金异常 e = {}", e);
+//            serverResponse = ServerResponse.createByErrorMsg("提现异常,请稍后再试",request);
+//        }
+//        return serverResponse;
+    }
+
+    private boolean isDuplicateRequest(String requestId) {
+        Long lastRequestTime = requestTimestamps.get(requestId);
+        if (lastRequestTime == null) {
+            return false;  // 如果没有该请求记录,认为是首次请求
         }
-        return serverResponse;
+        // 如果请求时间小于设定的时间窗口,则视为重复请求
+        return System.currentTimeMillis() - lastRequestTime < REPEAT_REQUEST_THRESHOLD;
     }
 
     // 判断字符串是否是整数且大于100

--
Gitblit v1.9.3