From eb357bb9938d569734b04948695726b80c5dfb85 Mon Sep 17 00:00:00 2001
From: peter <14100000001@qq.com>
Date: Wed, 19 Nov 2025 10:40:27 +0800
Subject: [PATCH] 代理后台新增删除用户、提现审核

---
 src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java        |    2 
 src/main/java/com/nq/controller/AgentApiController.java            |    2 
 src/main/java/com/nq/controller/agent/AgentUserController.java     |    7 ++
 src/main/java/com/nq/controller/agent/AgentWithdrawController.java |   54 ++++++++++++++++++
 src/main/java/com/nq/service/impl/SiteInfoServiceImpl.java         |   25 +++++++
 src/main/java/com/nq/service/IUserService.java                     |    3 +
 src/main/resources/application.yml                                 |    2 
 src/main/java/com/nq/service/impl/UserServiceImpl.java             |   54 ++++++++++++++++++
 8 files changed, 145 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/nq/controller/AgentApiController.java b/src/main/java/com/nq/controller/AgentApiController.java
index cfbb1fe..c2a9f33 100644
--- a/src/main/java/com/nq/controller/AgentApiController.java
+++ b/src/main/java/com/nq/controller/AgentApiController.java
@@ -59,7 +59,7 @@
         String token = RedisConst.getAgentRedisKey(httpSession.getId());
         if (serverResponse.isSuccess()) {
             String redisSetExResult = RedisShardedPoolUtils.setEx(token,
-                    JsonUtil.obj2String(serverResponse.getData()), 999999);
+                    JsonUtil.obj2String(serverResponse.getData()), 300);
             log.info("redis setex agent result : {}", redisSetExResult);
             AgentLoginResultVO resultVO = new AgentLoginResultVO();
             resultVO.setToken(token);
diff --git a/src/main/java/com/nq/controller/agent/AgentUserController.java b/src/main/java/com/nq/controller/agent/AgentUserController.java
index e3f4d95..0ecf2b9 100644
--- a/src/main/java/com/nq/controller/agent/AgentUserController.java
+++ b/src/main/java/com/nq/controller/agent/AgentUserController.java
@@ -77,4 +77,11 @@
     public ServerResponse getBank(Integer userId) {
         return this.iUserBankService.getBank(userId);
     }
+
+    //删除用户列表 用户信息
+    @RequestMapping({"delete.do"})
+    @ResponseBody
+    public ServerResponse delete(Integer userId, HttpServletRequest request) {
+        return this.iUserService.agentDelete(userId, request);
+    }
 }
diff --git a/src/main/java/com/nq/controller/agent/AgentWithdrawController.java b/src/main/java/com/nq/controller/agent/AgentWithdrawController.java
index 16f6bad..3ef01e0 100644
--- a/src/main/java/com/nq/controller/agent/AgentWithdrawController.java
+++ b/src/main/java/com/nq/controller/agent/AgentWithdrawController.java
@@ -6,6 +6,7 @@
 import com.nq.service.IUserWithdrawService;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 import org.slf4j.Logger;
 
@@ -20,6 +21,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
@@ -38,4 +42,54 @@
     public ServerResponse list(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "8") int pageSize, @RequestParam(value = "realName", required = false) String realName, @RequestParam(value = "state", required = false) Integer state, @RequestParam(value = "agentId", required = false) Integer agentId, HttpServletRequest request) {
         return this.iUserWithdrawService.listByAgent(agentId, realName, state, request, pageNum, pageSize);
     }
+
+    /**
+     *
+     * @param withId
+     * @param state 1.审核通过(走代付) 2.审核(不走代付) 3.驳回
+     * @param authMsg
+     * @return
+     */
+    //修改资金管理 提现列表 提现状态
+    @RequestMapping({"updateState.do"})
+    @ResponseBody
+    public ServerResponse updateState(@RequestParam(value = "withId", required = false) Integer withId,
+                                      @RequestParam(value = "state", required = false) Integer state,
+                                      @RequestParam(value = "authMsg", required = false) String authMsg,
+                                      HttpServletRequest request, HttpServletResponse response) {
+        ServerResponse serverResponse = null;
+        try {
+            String requestId = withId + "_" + state;
+            // 检查是否在短时间内重复请求
+            if (isDuplicateRequest(requestId)) {
+                return ServerResponse.createByErrorMsg("重复提交,请稍后再试。");
+            }
+
+            // 更新请求时间戳
+            requestTimestamps.put(requestId, System.currentTimeMillis());
+            synchronized (withId){
+                serverResponse = this.iUserWithdrawService.updateState(withId, state, authMsg,request,response);
+            }
+        } catch (Exception e) {
+            log.error("admin修改充值订单状态出错 ,异常 = {}", e);
+            return ServerResponse.createByErrorMsg("操作失败");
+        }
+        return serverResponse;
+    }
+    private final Map<String, Long> requestTimestamps = new ConcurrentHashMap<>();
+    private static final long REPEAT_REQUEST_THRESHOLD = 1000;  // 5秒内重复提交视为无效请求
+    private boolean isDuplicateRequest(String requestId) {
+        Long lastRequestTime = requestTimestamps.get(requestId);
+        if (lastRequestTime == null) {
+            return false;  // 如果没有该请求记录,认为是首次请求
+        }
+        // 如果请求时间小于设定的时间窗口,则视为重复请求
+        return System.currentTimeMillis() - lastRequestTime < REPEAT_REQUEST_THRESHOLD;
+    }
+
+    @RequestMapping({"deleteWithdraw.do"})
+    @ResponseBody
+    public ServerResponse deleteWithdraw(Integer withdrawId) {
+        return this.iUserWithdrawService.deleteWithdraw(withdrawId);
+    }
 }
diff --git a/src/main/java/com/nq/service/IUserService.java b/src/main/java/com/nq/service/IUserService.java
index c635d6e..5217624 100644
--- a/src/main/java/com/nq/service/IUserService.java
+++ b/src/main/java/com/nq/service/IUserService.java
@@ -74,6 +74,9 @@
 
   ServerResponse delete(Integer paramInteger, HttpServletRequest paramHttpServletRequest);
 
+  ServerResponse agentDelete(Integer paramInteger, HttpServletRequest paramHttpServletRequest);
+
+
   int CountUserSize(Integer paramInteger);
 
   BigDecimal CountUserAmt(Integer paramInteger);
diff --git a/src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java b/src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java
index 863377c..56ed4a3 100644
--- a/src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java
@@ -156,7 +156,7 @@
         String token = RedisConst.getAdminRedisKey(httpSession.getId());
 
         String str = RedisShardedPoolUtils.setEx(token,
-                JsonUtil.obj2String(siteAdmin), 999999);
+                JsonUtil.obj2String(siteAdmin), 300);
 
 
         siteAdmin.setToken(token);
diff --git a/src/main/java/com/nq/service/impl/SiteInfoServiceImpl.java b/src/main/java/com/nq/service/impl/SiteInfoServiceImpl.java
index 1547ebe..92958d7 100644
--- a/src/main/java/com/nq/service/impl/SiteInfoServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/SiteInfoServiceImpl.java
@@ -114,10 +114,31 @@
                 if(agentUser != null){
                     siteInfo.setAgentCode(agentUser.getAgentCode());
                     if(!agentUser.getOnLineServices().isEmpty()){
-                        siteInfo.setOnlineService(agentUser.getOnLineServices());
+                        if(agentUser.getId().equals(1)){
+                            siteInfo.setOnlineService("https://4kf.qingjiumeng.com/k1/chatlink.html?");
+                        }else if(agentUser.getId().equals(2)){
+                            siteInfo.setOnlineService("https://4kf.qingjiumeng.com/k1/chatlink.html?");
+                        }else if(agentUser.getId().equals(3)){
+                            siteInfo.setOnlineService("https://4kf.qingjiumeng.com/k1/chatlink.html? ");
+                        }else if(agentUser.getId().equals(4)){
+                            siteInfo.setOnlineService("https://4kf.qingjiumeng.com/k2/chatlink.html? ");
+                        }else if(agentUser.getId().equals(5)){
+                            siteInfo.setOnlineService("https://4kf.qingjiumeng.com/k3/chatlink.html? ");
+                        }else if(agentUser.getId().equals(6)){
+                            siteInfo.setOnlineService("https://4kf.qingjiumeng.com/k4/chatlink.html? ");
+                        }
                     }
                 }
-            }
+                }
+//            if(user != null ){
+//                AgentUser agentUser = agentUserMapper.findAgentByAgentId(user.getAgentId());
+//                if(agentUser != null){
+//                    siteInfo.setAgentCode(agentUser.getAgentCode());
+//                    if(!agentUser.getOnLineServices().isEmpty()){
+//                        siteInfo.setOnlineService(agentUser.getOnLineServices());
+//                    }
+//                }
+//            }
 
 //            ObjectMapper objectMapper = new ObjectMapper();
 //            Map<String, String> metadataMap = new HashMap<>();
diff --git a/src/main/java/com/nq/service/impl/UserServiceImpl.java b/src/main/java/com/nq/service/impl/UserServiceImpl.java
index 0693d2d..05da93b 100644
--- a/src/main/java/com/nq/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -998,6 +998,60 @@
         return ServerResponse.createByErrorMsg("Operation failed. View logs");
     }
 
+    public ServerResponse agentDelete(Integer userId, HttpServletRequest request) {
+        String loginToken = CookieUtils.readLoginToken(request, PropertiesUtil.getProperty("agent.cookie.name"));
+        String agentJson = RedisShardedPoolUtils.get(loginToken);
+        AgentUser agentUser = (AgentUser) JsonUtil.string2Obj(agentJson, AgentUser.class);
+        log.info("管理员 {} 删除用户 {}", StringUtils.isBlank(agentUser.getAgentName())?agentUser.getAgentPhone():agentUser.getAgentName(), userId);
+
+
+        int delChargeCount = this.iUserRechargeService.deleteByUserId(userId);
+        if (delChargeCount > 0) {
+            log.info("删除 充值 记录成功");
+        } else {
+            log.info("删除 充值 记录失败");
+        }
+
+
+        int delWithdrawCount = this.iUserWithdrawService.deleteByUserId(userId);
+        if (delWithdrawCount > 0) {
+            log.info("删除 提现 记录成功");
+        } else {
+            log.info("删除 提现 记录失败");
+        }
+
+
+        int delCashCount = this.iUserCashDetailService.deleteByUserId(userId);
+        if (delCashCount > 0) {
+            log.info("删除 资金 记录成功");
+        } else {
+            log.info("删除 资金 记录成功");
+        }
+
+
+        int delPositionCount = this.iUserPositionService.deleteByUserId(userId);
+        if (delPositionCount > 0) {
+            log.info("删除 持仓 记录成功");
+        } else {
+            log.info("删除 持仓 记录失败");
+        }
+
+
+        int delLogCount = this.iSiteLoginLogService.deleteByUserId(userId);
+        if (delLogCount > 0) {
+            log.info("删除 登录 记录成功");
+        } else {
+            log.info("删除 登录 记录失败");
+        }
+
+
+        int delUserCount = this.userMapper.deleteById(userId);
+        if (delUserCount > 0) {
+            return ServerResponse.createBySuccessMsg("Successful operation");
+        }
+        return ServerResponse.createByErrorMsg("Operation failed. View logs");
+    }
+
 
     public int CountUserSize(Integer accountType) {
         return this.userMapper.CountUserSize(accountType);
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 901ab9a..ff1c5a0 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -132,6 +132,8 @@
 #    url: jdbc:mysql://127.0.0.1:3306/trading_order_1024?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
     username: stock_us
     password: M6bWfxCCGfXmf8Ly
+#    username: root
+#    password: 123456
     druid:
       # 初始连接数
       initialSize: 5

--
Gitblit v1.9.3