签到功能加入了总天数记录。

This commit is contained in:
liuwei
2025-09-17 14:33:47 +08:00
parent f2b30b5b27
commit aeb05c678e
+15 -12
View File
@@ -7,15 +7,15 @@ from db.connection import DBConnectionManager
class SignInRedisDB: class SignInRedisDB:
"""签到系统Redis相关操作""" """签到系统Redis相关操作"""
def __init__(self, db_manager: DBConnectionManager): def __init__(self, db_manager: DBConnectionManager):
self.db_manager = db_manager self.db_manager = db_manager
self.prefix = "group:sign_in:" self.prefix = "group:sign_in:"
def get_redis_connection(self): def get_redis_connection(self):
"""获取Redis连接""" """获取Redis连接"""
return self.db_manager.get_redis_connection() return self.db_manager.get_redis_connection()
def load_signin_count(self) -> Dict[str, int]: def load_signin_count(self) -> Dict[str, int]:
"""加载签到人数数据""" """加载签到人数数据"""
signin_count = {} signin_count = {}
@@ -33,7 +33,7 @@ class SignInRedisDB:
count = count.decode('utf-8') count = count.decode('utf-8')
signin_count[group_id] = int(count) signin_count[group_id] = int(count)
return signin_count return signin_count
def save_signin_count(self, group_id: str, count: int) -> bool: def save_signin_count(self, group_id: str, count: int) -> bool:
"""保存签到人数""" """保存签到人数"""
try: try:
@@ -42,7 +42,7 @@ class SignInRedisDB:
return True return True
except Exception: except Exception:
return False return False
def get_last_reset_date(self) -> Optional[datetime.date]: def get_last_reset_date(self) -> Optional[datetime.date]:
"""获取最后重置日期""" """获取最后重置日期"""
with self.get_redis_connection() as redis_client: with self.get_redis_connection() as redis_client:
@@ -52,7 +52,7 @@ class SignInRedisDB:
date_str = date_str.decode('utf-8') date_str = date_str.decode('utf-8')
return datetime.strptime(date_str, '%Y-%m-%d').date() return datetime.strptime(date_str, '%Y-%m-%d').date()
return None return None
def save_last_reset_date(self, date: datetime.date) -> bool: def save_last_reset_date(self, date: datetime.date) -> bool:
"""保存最后重置日期""" """保存最后重置日期"""
try: try:
@@ -61,7 +61,7 @@ class SignInRedisDB:
return True return True
except Exception: except Exception:
return False return False
def reset_daily_counts(self) -> bool: def reset_daily_counts(self) -> bool:
"""重置每日签到计数""" """重置每日签到计数"""
try: try:
@@ -75,7 +75,7 @@ class SignInRedisDB:
return True return True
except Exception: except Exception:
return False return False
def get_user_total_sign_count_key(self, wx_id: str, group_id: str) -> str: def get_user_total_sign_count_key(self, wx_id: str, group_id: str) -> str:
"""获取用户总签到次数的Redis键""" """获取用户总签到次数的Redis键"""
return f"{self.prefix}sign:total:{wx_id}:{group_id}" return f"{self.prefix}sign:total:{wx_id}:{group_id}"
@@ -83,15 +83,18 @@ class SignInRedisDB:
def increment_user_sign_count(self, wx_id: str, group_id: str) -> int: def increment_user_sign_count(self, wx_id: str, group_id: str) -> int:
"""增加用户签到总次数""" """增加用户签到总次数"""
key = self.get_user_total_sign_count_key(wx_id, group_id) key = self.get_user_total_sign_count_key(wx_id, group_id)
return self.redis.incr(key) with self.get_redis_connection() as redis_client:
return redis_client.incr(key)
def get_user_total_sign_count(self, wx_id: str, group_id: str) -> int: def get_user_total_sign_count(self, wx_id: str, group_id: str) -> int:
"""获取用户签到总次数""" """获取用户签到总次数"""
key = self.get_user_total_sign_count_key(wx_id, group_id) key = self.get_user_total_sign_count_key(wx_id, group_id)
count = self.redis.get(key) with self.get_redis_connection() as redis_client:
return int(count) if count else 0 count = redis_client.get(key)
return int(count) if count else 0
def set_user_total_sign_count(self, wx_id: str, group_id: str, count: int) -> bool: def set_user_total_sign_count(self, wx_id: str, group_id: str, count: int) -> bool:
"""设置用户签到总次数""" """设置用户签到总次数"""
key = self.get_user_total_sign_count_key(wx_id, group_id) key = self.get_user_total_sign_count_key(wx_id, group_id)
return self.redis.set(key, count) with self.get_redis_connection() as redis_client:
return redis_client.set(key, count)