From 6a0d3ff5832e57ee1b1374d086f24b3c1679b332 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期五, 05 九月 2025 18:22:24 +0800
Subject: [PATCH] bug修复/降低测撤单率

---
 trade/l2_trade_util.py |  105 +++++++++++++++-------------------------------------
 1 files changed, 31 insertions(+), 74 deletions(-)

diff --git a/trade/l2_trade_util.py b/trade/l2_trade_util.py
index aa2e154..18648e6 100644
--- a/trade/l2_trade_util.py
+++ b/trade/l2_trade_util.py
@@ -1,95 +1,52 @@
 # 鏄惁鍦ㄧ姝氦鏄撲唬鐮佷腑
-from db import redis_manager
-from utils import tool
+from code_attribute import gpcode_manager
+from db import redis_manager_delegate as redis_manager
+from log_module import async_log_util
+from log_module.log import logger_trade
+from trade import trade_record_log_util
+from trade.buy_radical.block_special_codes_manager import BlockSpecialCodesManager
 
 __redis_manager = redis_manager.RedisManager(2)
 
 
-class WhiteListCodeManager:
-    __redis_manager = redis_manager.RedisManager(2)
-
-    @classmethod
-    def __get_redis(cls):
-        return cls.__redis_manager.getRedis()
-
-    @classmethod
-    def add_code(cls, code):
-        cls.__get_redis().sadd("white_list_codes", code)
-        cls.__get_redis().expire("white_list_codes", tool.get_expire())
-
-    @classmethod
-    def remove_code(cls, code):
-        cls.__get_redis().srem("white_list_codes", code)
-
-    @classmethod
-    def is_in(cls, code):
-        return cls.__get_redis().sismember("white_list_codes", code)
-
-    @classmethod
-    def list_codes(cls):
-        return cls.__get_redis().smembers("white_list_codes")
-
-    @classmethod
-    def clear(cls):
-        cls.__get_redis().delete("white_list_codes")
-
-
-class BlackListCodeManager:
-    __redis_manager = redis_manager.RedisManager(2)
-
-    @classmethod
-    def __get_redis(cls):
-        return cls.__redis_manager.getRedis()
-
-    @classmethod
-    def add_code(cls, code):
-        cls.__get_redis().sadd("forbidden-trade-codes", code)
-        cls.__get_redis().expire("forbidden-trade-codes", tool.get_expire())
-
-    @classmethod
-    def remove_code(cls, code):
-        cls.__get_redis().srem("forbidden-trade-codes", code)
-
-    @classmethod
-    def is_in(cls, code):
-        return cls.__get_redis().sismember("forbidden-trade-codes", code)
-
-    @classmethod
-    def list_codes(cls):
-        return cls.__get_redis().smembers("forbidden-trade-codes")
-
-    @classmethod
-    def clear(cls):
-        cls.__get_redis().delete("forbidden-trade-codes")
-
-
 #  鍒濆鍖栫姝氦鏄撲唬鐮佸簱
 def init_forbidden_trade_codes():
-    BlackListCodeManager.clear()
-    BlackListCodeManager.add_code("000000")
+    gpcode_manager.BlackListCodeManager().clear()
+    gpcode_manager.BlackListCodeManager().add_code("000000")
 
 
 # 绉婚櫎绂佹浜ゆ槗浠g爜
 def remove_from_forbidden_trade_codes(code):
-    BlackListCodeManager.remove_code(code)
+    gpcode_manager.BlackListCodeManager().remove_code(code)
 
 
 # 娣诲姞浠g爜鍒扮姝氦鏄�
-def add_to_forbidden_trade_codes(code):
-    BlackListCodeManager.add_code(code)
+def __add_to_forbidden_trade_codes(code):
+    gpcode_manager.BlackListCodeManager().add_code(code)
 
 
 # 绂佹浠g爜浜ゆ槗
-def forbidden_trade(code):
-    add_to_forbidden_trade_codes(code)
-    # l2_data_manager.remove_from_l2_fixed_codes(code)
-    # l2_code_operate.L2CodeOperate.get_instance().remove_l2_listen(code, "绂佹浠g爜浜ゆ槗")
+# force 鏄惁寮哄埗鍔犲叆榛戝悕鍗�
+def forbidden_trade(code, msg=None, force=False):
+    need_add = False
+    if force:
+        need_add = True
+    else:
+        # 妫�鏌ユ槸鍚﹀湪鎯充拱鍗曚腑
+        if gpcode_manager.HumanRemoveForbiddenManager().is_in_cache(code):
+            # 浜轰负绉婚櫎榛戯紝涓嶅彲鍐嶆媺榛�
+            need_add = False
+        else:
+            need_add = True
+
+    if need_add:
+        if not is_in_forbidden_trade_codes(code):
+            trade_record_log_util.add_forbidden_buy_log(code, msg)
+        __add_to_forbidden_trade_codes(code)
+        async_log_util.warning(logger_trade, f"{code}鍔犲叆榛戝悕鍗曞師鍥狅細{msg}")
+
 
 
 def is_in_forbidden_trade_codes(code):
-    return BlackListCodeManager.is_in(code)
+    return gpcode_manager.BlackListCodeManager().is_in_cache(code)
 
-
-if __name__ == "__main__":
-    # add_to_forbidden_trade_codes("000977")
-    WhiteListCodeManager.add_code("002977")

--
Gitblit v1.8.0