Administrator
2023-08-03 2984f2b9363959b4147cdb669eeaa67060500d72
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# 是否在禁止交易代码中
from db import redis_manager
from db.redis_manager import RedisUtils
from utils import tool
 
__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):
        RedisUtils.sadd(cls.__get_redis(), "white_list_codes", code)
        RedisUtils.expire(cls.__get_redis(), "white_list_codes", tool.get_expire())
 
    @classmethod
    def remove_code(cls, code):
        RedisUtils.srem(cls.__get_redis(), "white_list_codes", code)
 
    @classmethod
    def is_in(cls, code):
        return RedisUtils.sismember(cls.__get_redis(), "white_list_codes", code)
 
    @classmethod
    def list_codes(cls):
        return RedisUtils.smembers(cls.__get_redis(), "white_list_codes")
 
    @classmethod
    def clear(cls):
        RedisUtils.delete(cls.__get_redis(), "white_list_codes")
 
 
class BlackListCodeManager:
    __redis_manager = redis_manager.RedisManager(2)
    __forbidden_trade_codes_cache = set()
 
    @classmethod
    def __get_redis(cls):
        return cls.__redis_manager.getRedis()
 
    @classmethod
    def add_code(cls, code):
        cls.__forbidden_trade_codes_cache.add(code)
        RedisUtils.sadd(cls.__get_redis(), "forbidden-trade-codes", code)
        RedisUtils.expire(cls.__get_redis(), "forbidden-trade-codes", tool.get_expire())
 
    @classmethod
    def remove_code(cls, code):
        cls.__forbidden_trade_codes_cache.discard(code)
        RedisUtils.srem(cls.__get_redis(), "forbidden-trade-codes", code)
 
    @classmethod
    def is_in(cls, code):
        return RedisUtils.sismember(cls.__get_redis(), "forbidden-trade-codes", code)
 
    @classmethod
    def is_in_cache(cls, code):
        return code in cls.__forbidden_trade_codes_cache
 
    @classmethod
    def list_codes(cls):
        codes = RedisUtils.smembers(cls.__get_redis(), "forbidden-trade-codes")
        cls.__forbidden_trade_codes_cache = codes
 
    @classmethod
    def clear(cls):
        cls.__forbidden_trade_codes_cache.clear()
        RedisUtils.delete(cls.__get_redis(), "forbidden-trade-codes")
 
 
#  初始化禁止交易代码库
def init_forbidden_trade_codes():
    BlackListCodeManager.clear()
    BlackListCodeManager.add_code("000000")
 
 
# 移除禁止交易代码
def remove_from_forbidden_trade_codes(code):
    BlackListCodeManager.remove_code(code)
 
 
# 添加代码到禁止交易
def add_to_forbidden_trade_codes(code):
    BlackListCodeManager.add_code(code)
 
 
# 禁止代码交易
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, "禁止代码交易")
 
 
def is_in_forbidden_trade_codes(code):
    return BlackListCodeManager.is_in_cache(code)
 
 
if __name__ == "__main__":
    # add_to_forbidden_trade_codes("000977")
    WhiteListCodeManager.add_code("002977")