From d248fcaf389ae5c763926955d7ba0cfa80fc002f Mon Sep 17 00:00:00 2001
From: Administrator <1101184511@qq.com>
Date: 星期四, 13 二月 2025 00:52:11 +0800
Subject: [PATCH] 区域封禁

---
 src/main/java/com/taoke/autopay/controller/WebApiController.java |   34 +++++++++++++++++++++++++++++++---
 1 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/taoke/autopay/controller/WebApiController.java b/src/main/java/com/taoke/autopay/controller/WebApiController.java
index 07aa96b..7b930dd 100644
--- a/src/main/java/com/taoke/autopay/controller/WebApiController.java
+++ b/src/main/java/com/taoke/autopay/controller/WebApiController.java
@@ -65,7 +65,7 @@
         if (verifyAlipayKey != null && verifyAlipayKey.trim().equalsIgnoreCase("1")) {
             try {
                 // 闇�瑕侀獙璇佹敮浠樺疂鍙d护
-                if (urllist.size() < 1) {
+                if (urllist.isEmpty()) {
                     throw new Exception("鍙d护涓笉鍖呭惈閾炬帴");
                 }
                 AlipayOrderUtil.AlipayOrderTradeInfo tradeInfo = AlipayOrderUtil.getTradeInfo(urllist.get(0));
@@ -97,8 +97,6 @@
                 throw new KeyVerifyException(KeyVerifyException.CODE_COMMON, e.getMessage());
             }
         }
-
-
         KeyOrder order = keyOrderService.addKeyOrder(keyInfo, wxUid, TimeUtil.getGernalTime(System.currentTimeMillis(), Constant.DB_DAY_FORMAT),orderType, orderDto);
         Long uid = keyOrderService.getCanDistributeUid(Constant.MAX_PAY_ACCOUNT_QUEUE_SIZE);
         if (uid != null) {
@@ -122,6 +120,7 @@
         }
     }
 
+    private Map<String, IPUtil.IPInfo> ipInfoMap=new HashMap<>();
     @ResponseBody
     @RequestMapping(value = "submitKeyV4")
     public String submitKeyV4(SubmitKeyInfo keyInfo, HttpSession session, HttpServletRequest request) {
@@ -130,6 +129,26 @@
         WxUserInfo user = (WxUserInfo) session.getAttribute(Constant.SESSION_KEY_USER);
         if (StringUtil.isNullOrEmpty(keyInfo.getKey())) {
             return JsonUtil.loadFalseResult("璇蜂笂浼爇ey");
+        }
+        String ip = IPUtil.getRemotIP(request);
+        keyInfo.setIp(ip);
+        if(!ipInfoMap.containsKey(ip)){
+            try {
+                IPUtil.IPInfo ipInfo =  IPUtil.getLocalIPInfo(ip);
+                ipInfoMap.put(ip, ipInfo);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        }
+        keyInfo.setIpInfo(ipInfoMap.get(ip));
+
+        String citys =  systemConfigService.getValueCache(SystemConfigKeyEnum.FORBIDDEN_SUBMIT_CITYS);
+        if(citys!=null&&ipInfoMap.get(ip)!=null){
+           List<String> cityList = Arrays.asList(citys.split(","));
+           if(cityList.contains(ipInfoMap.get(ip).getCity())){
+               LogUtil.loggerDebug.warn("鍖哄煙灞忚斀锛歿}-{}", ip, new Gson().toJson(ipInfoMap.get(ip)));
+               return JsonUtil.loadFalseResult("鏆傛椂鏃犳硶涓婁紶鍙d护");
+           }
         }
 
         try {
@@ -165,6 +184,7 @@
             return JsonUtil.loadTrueResult(Constant.RESULT_CODE_NEED_LOGIN, root);
         }
         wxLogger.info("寰俊鏈夋巿鏉�:" + session.getId());
+        LogUtil.loggerDebug.warn("GEO淇℃伅锛歿}-{}-{}", user.getId(),ip, new Gson().toJson(ipInfoMap.get(ip)));
         try {
             addKey(keyInfo, user.getId());
             return JsonUtil.loadTrueResult("");
@@ -226,6 +246,14 @@
 
                 wxLogger.info("浠巗ession璇诲彇鍒発ey锛歿}", alipayKeyInfo);
                 if (alipayKeyInfo != null) {
+                    if(!ipInfoMap.containsKey(alipayKeyInfo.getIp())){
+                        try {
+                            IPUtil.IPInfo ipInfo =  IPUtil.getLocalIPInfo(alipayKeyInfo.getIp());
+                            ipInfoMap.put(alipayKeyInfo.getIp(), ipInfo);
+                        } catch (Exception e) {
+                            throw new RuntimeException(e);
+                        }
+                    }
                     addKey(alipayKeyInfo, user.getId());
                 }
                 response.sendRedirect(successLink);

--
Gitblit v1.8.0