"""
|
交易管理
|
"""
|
from db.redis_manager_delegate import RedisManager, RedisUtils
|
from utils import constant, tool
|
|
|
class CodeTradeStateManager:
|
TRADE_STATE_ALREADY_BUY = 1
|
TRADE_STATE_NOT_BUY = 0
|
|
__instance = None
|
__redisManager = RedisManager()
|
__trade_state_cache = {}
|
|
def __new__(cls, *args, **kwargs):
|
if not cls.__instance:
|
cls.__instance = super(CodeTradeStateManager, cls).__new__(cls, *args, **kwargs)
|
cls.__load_datas()
|
return cls.__instance
|
|
@classmethod
|
def __load_datas(cls):
|
keys = cls.__get_redis().keys("trade_state-*")
|
for k in keys:
|
code = k.split("-")[1]
|
val = cls.__get_redis().get(k)
|
val = int(val)
|
cls.__trade_state_cache[code] = val
|
|
@classmethod
|
def __get_redis(cls):
|
return cls.__redisManager.getRedis()
|
|
# 设置交易状态
|
def set_trade_state(self, code, state):
|
self.__trade_state_cache[code] = state
|
RedisUtils.setex_async(constant.REDIS_DB, f"trade_state-{code}", tool.get_expire(), state)
|
|
# 获取交易状态
|
def get_trade_state(self, code):
|
state = self.__trade_state_cache.get(code)
|
if state is None:
|
return self.TRADE_STATE_NOT_BUY
|
return state
|