修复签到bug

This commit is contained in:
liuwei
2025-04-11 12:24:09 +08:00
parent 90b0c0d181
commit 4631297379

View File

@@ -454,6 +454,8 @@ class MessageSignPlugin(MessagePluginInterface):
) )
return True, "扣除积分失败" return True, "扣除积分失败"
# 在_handle_makeup_sign方法中修改计算新连签天数的逻辑
# 获取原连签天数和断签前连签天数 # 获取原连签天数和断签前连签天数
original_streak = user_record['signin_streak'] original_streak = user_record['signin_streak']
previous_streak = user_record.get('previous_streak', 0) previous_streak = user_record.get('previous_streak', 0)
@@ -461,18 +463,13 @@ class MessageSignPlugin(MessagePluginInterface):
# 计算新的连签天数 # 计算新的连签天数
new_streak = original_streak new_streak = original_streak
# 如果今天已签到且有断签前记录,恢复连签 # 如果有断签前记录,直接使用断签前连签天数+1
if sign_stat and sign_stat >= today_start and previous_streak > 0: if previous_streak > 0:
# 恢复连签:断签前连签天数 + 1 (今天已签到) # 恢复连签:断签前连签天数 + 1 (补签后相当于连续签到)
new_streak = previous_streak + 1 new_streak = previous_streak + 1
self.LOG.info(f"恢复连签: {previous_streak} + 1 = {new_streak}") self.LOG.info(f"恢复连签: {previous_streak} + 1 = {new_streak}")
# 如果今天未签到且有断签前记录,也可以恢复连签
elif previous_streak > 0:
# 恢复连签:断签前连签天数
new_streak = previous_streak
self.LOG.info(f"恢复连签: {previous_streak}")
# 如果没有断签前记录,则连签天数+1
else: else:
# 如果没有断签前记录,则连签天数+1
new_streak = original_streak + 1 new_streak = original_streak + 1
self.LOG.info(f"普通补签: {original_streak} + 1 = {new_streak}") self.LOG.info(f"普通补签: {original_streak} + 1 = {new_streak}")
@@ -485,7 +482,7 @@ class MessageSignPlugin(MessagePluginInterface):
self.sign_in_db.update_makeup_sign_with_streak_recovery( self.sign_in_db.update_makeup_sign_with_streak_recovery(
sender, roomid, wx_nick_name, sender, roomid, wx_nick_name,
0, # 补签不增加积分 0, # 补签不增加积分
sign_stat, new_streak, sign_stat, new_streak, # 使用恢复后的连签天数
yesterday_time, # 设置last_sign_date为昨天 yesterday_time, # 设置last_sign_date为昨天
0 # 清除previous_streak因为已经恢复了 0 # 清除previous_streak因为已经恢复了
) )
@@ -494,7 +491,7 @@ class MessageSignPlugin(MessagePluginInterface):
self.sign_in_db.update_sign_record_with_streak_recovery( self.sign_in_db.update_sign_record_with_streak_recovery(
sender, roomid, wx_nick_name, sender, roomid, wx_nick_name,
0, # 补签不增加积分 0, # 补签不增加积分
yesterday_time, new_streak, yesterday_time, new_streak, # 使用恢复后的连签天数
last_sign_date, # 保留原来的last_sign_date last_sign_date, # 保留原来的last_sign_date
0 # 清除previous_streak因为已经恢复了 0 # 清除previous_streak因为已经恢复了
) )