Administrator
7 天以前 d91210fd9d205558fb3a0acb7e5cc8c6f0c600f2
code_attribute/gpcode_manager.py
@@ -9,7 +9,7 @@
from db.mysql_data_delegate import Mysqldb
from db.redis_manager_delegate import RedisUtils
from log_module import log_export, async_log_util
from log_module.log import logger_pre_close_price, logger_debug
from log_module.log import logger_pre_close_price, logger_debug, logger_trade
from trade import trade_record_log_util
from utils import tool
import decimal
@@ -211,10 +211,63 @@
        return self.__want_buy_codes_cache
# 人为移想的代码
class HumanRemoveWantBuyCodesManager:
    __instance = None
    __db = 0
    redisManager = redis_manager.RedisManager(0)
    __redis_key = "human_remove_want_buy_codes"
    def __new__(cls, *args, **kwargs):
        if not cls.__instance:
            cls.__instance = super(HumanRemoveWantBuyCodesManager, cls).__new__(cls, *args, **kwargs)
            # 初始化设置
            # 获取交易窗口的锁
            cls.__instance.__want_buy_codes_cache = RedisUtils.smembers(cls.__get_redis(),
                                                                        cls.__redis_key)
        return cls.__instance
    __want_buy_codes_cache = set()
    @classmethod
    def __get_redis(cls):
        return cls.redisManager.getRedis()
    def clear(self):
        RedisUtils.delete(self.__get_redis(), self.__redis_key)
    def add_code(self, code):
        self.__want_buy_codes_cache.add(code)
        RedisUtils.sadd(self.__get_redis(), self.__redis_key, code)
        RedisUtils.expire(self.__get_redis(), self.__redis_key, tool.get_expire())
    def remove_code(self, code):
        self.__want_buy_codes_cache.discard(code)
        RedisUtils.srem_async(self.__db, self.__redis_key, code)
    def sync(self):
        codes = self.list_code()
        self.__want_buy_codes_cache.clear()
        if codes:
            self.__want_buy_codes_cache |= set(codes)
    def is_in(self, code):
        return RedisUtils.sismember(self.__get_redis(), self.__redis_key, code)
    def is_in_cache(self, code):
        return code in self.__want_buy_codes_cache
    def list_code(self):
        return RedisUtils.smembers(self.__get_redis(), self.__redis_key)
    def list_code_cache(self):
        return self.__want_buy_codes_cache
@tool.singleton
class HumanRemoveForbiddenManager:
    """
    认为移黑管理
    人为移黑管理
    """
    __db = 0
    redisManager = redis_manager.RedisManager(0)
@@ -582,6 +635,68 @@
        RedisUtils.delete(self.__get_redis(), "green-trade-codes")
class CodesContinueBuyMoneyManager:
    """
    代码续买金额管理
    """
    __db = 2
    __redis_manager = redis_manager.RedisManager(2)
    __instance = None
    __buy_money_dict = {}
    def __new__(cls, *args, **kwargs):
        if not cls.__instance:
            cls.__instance = super(CodesContinueBuyMoneyManager, cls).__new__(cls, *args, **kwargs)
            cls.__load_datas()
        return cls.__instance
    @classmethod
    def __get_redis(cls):
        return cls.__redis_manager.getRedis()
    @classmethod
    def __load_datas(cls):
        __redis = cls.__get_redis()
        # 初始化数据
        keys = RedisUtils.keys(__redis, "continue_buy_money-*", auto_free=False)
        if keys:
            for key in keys:
                code = key.split("-")[-1]
                cls.__buy_money_dict[code] = int(RedisUtils.get(__redis, key, auto_free=False))
    def set_continue_buy_money(self, code, money):
        """
        设置续买金额
        @param code:
        @param money:
        @return:
        """
        self.__buy_money_dict[code] = money
        RedisUtils.setex_async(self.__db, f"continue_buy_money-{code}", tool.get_expire(), money)
        async_log_util.info(logger_trade, f"设置续买金额:{code}-{money}")
    def remove_continue_buy_money(self, code):
        """
        移除续买金额
        @param code:
        @return:
        """
        if code not in self.__buy_money_dict:
            return
        self.__buy_money_dict.pop(code)
        RedisUtils.delete_async(self.__db, f"continue_buy_money-{code}")
        async_log_util.info(logger_trade, f"移除续买金额:{code}")
    def get_continue_buy_money(self, code):
        """
        获取续买金额
        @param code:
        @return:
        """
        return self.__buy_money_dict.get(code)
def __parse_codes_data(code_datas):
    codes = []
    name_codes = {}