From a846b46f15ad309a62fe400cf78dd7fc888155d7 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 26 五月 2025 16:39:19 +0800
Subject: [PATCH] 完善大单够了加白机制

---
 code_attribute/gpcode_manager.py |   30 ++++++++++++++++++++++++++++--
 1 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/code_attribute/gpcode_manager.py b/code_attribute/gpcode_manager.py
index 9ab6e76..4dbcfc1 100644
--- a/code_attribute/gpcode_manager.py
+++ b/code_attribute/gpcode_manager.py
@@ -401,6 +401,7 @@
 class WhiteListCodeManager:
     __instance = None
     __redis_manager = redis_manager.RedisManager(2)
+    __human_remove_codes = set()
 
     def __new__(cls, *args, **kwargs):
         if not cls.__instance:
@@ -421,14 +422,21 @@
         if data:
             self.__white_codes_cache |= data
 
-    def add_code(self, code):
+    def add_code(self, code, is_human=False):
+
+        if not is_human and code in self.__human_remove_codes:
+            # 鏈哄櫒鍔犵櫧锛屼笖琚汉涓虹Щ鐧戒簡灏变笉鑳藉啀鍔犵櫧
+            return
+
         self.__white_codes_cache.add(code)
         RedisUtils.sadd(self.__get_redis(), "white_list_codes", code)
         RedisUtils.expire(self.__get_redis(), "white_list_codes", tool.get_expire())
 
-    def remove_code(self, code):
+    def remove_code(self, code, is_human=False):
         self.__white_codes_cache.discard(code)
         RedisUtils.srem(self.__get_redis(), "white_list_codes", code)
+        if is_human:
+            self.human_remove(code)
 
     def is_in(self, code):
         return RedisUtils.sismember(self.__get_redis(), "white_list_codes", code)
@@ -446,6 +454,24 @@
         self.__white_codes_cache.clear()
         RedisUtils.delete(self.__get_redis(), "white_list_codes")
 
+    def human_remove(self, code):
+        """
+        浜轰负绉荤櫧
+        @param code:
+        @return:
+        """
+        self.__human_remove_codes.add(code)
+
+    def clear_huamn_info(self, code):
+        """
+        绉婚櫎浜轰负骞查淇℃伅
+        @param code:
+        @return:
+        """
+        if code in self.__human_remove_codes:
+            self.__human_remove_codes.discard(code)
+
+
 
 class BlackListCodeManager:
     __instance = None

--
Gitblit v1.8.0