class BaseIncrease(object):
_instance_lock = threading.Lock()
num = None
date = None
_instance = None
@classmethod
@abc.abstractmethod
def get_init_num(cls):
pass
@classmethod
@abc.abstractmethod
def get_serial_num(cls):
pass
def __new__(cls, *args, **kwargs):
if not cls._instance:
with cls._instance_lock:
if not cls._instance:
cls._instance = object.__new__(cls)
cls.date = datetime.date.today().strftime("%Y%m%d")
cls.num = cls.get_init_num()
return cls._instance
@classmethod
def get_num(cls):
date = datetime.date.today().strftime("%Y%m%d")
if cls.date != date:
cls.date = date
cls.num = 1
else:
cls.num += 1
class FG_GROUP_ID(BaseIncrease):
def __new__(cls, *args, **kwargs):
return super(FG_GROUP_ID, cls).__new__(cls)
@classmethod
def get_init_num(cls):
res = db_api.get_sorted_field(f"GP{cls.date}%", "FG_GROUP_ID", models.ProxyPayTrades)
return int(res.FG_GROUP_ID[-6:]) if res else 0
@classmethod
def get_serial_num(cls):
cls.get_num()
return f'GP{cls.date}{cls.num:06}'
class FG_TRD_ID(BaseIncrease):
def __new__(cls, *args, **kwargs):
return super(FG_TRD_ID, cls).__new__(cls)
@classmethod
def get_init_num(cls):
res = db_api.get_sorted_field(f"FG{cls.date}%", "FG_TRD_ID", models.ProxyPayTrades)
return int(res.FG_TRD_ID[-6:]) if res else 0
@classmethod
def get_serial_num(cls):
cls.get_num()
return f'FG{cls.date}{cls.num:06}'
if __name__ == '__main__':
print(FG_GROUP_ID().get_serial_num())
print(FG_GROUP_ID().get_serial_num())
print(FG_GROUP_ID().get_serial_num())
获取指定字符串+递增数字的字符串
于 2022-02-22 15:25:53 首次发布