diff --git a/db/sign_in.py b/db/sign_in.py index 4ae355e..66b8cb4 100644 --- a/db/sign_in.py +++ b/db/sign_in.py @@ -126,3 +126,38 @@ class SignInDB(BaseDBOperator): last_sign_date, previous_streak, datetime.now(), wx_id, group_id) return self.execute_update(sql, params) + + def update_makeup_sign_with_streak_recovery(self, wx_id: str, group_id: str, wx_nick_name: str, + points_to_add: int, sign_time: datetime, streak: int, + last_sign_date: datetime, previous_streak: int) -> bool: + """更新补签记录,支持连签恢复""" + sql = """ + UPDATE t_sign_record + SET wx_nick_name = %s, points = points + %s, + signin_streak = %s, last_sign_date = %s, + previous_streak = %s, update_time = %s + WHERE wx_id = %s AND group_id = %s + """ + params = (wx_nick_name, points_to_add, + streak, last_sign_date, + previous_streak, datetime.now(), + wx_id, group_id + ) + return self.execute_update(sql, params) + + def update_sign_record_with_streak_recovery(self, wx_id: str, group_id: str, wx_nick_name: str, + points_to_add: int, sign_time: datetime, streak: int, + last_sign_date: datetime, previous_streak: int) -> bool: + """更新签到记录,支持连签恢复""" + sql = """ + UPDATE t_sign_record + SET wx_nick_name = %s, points = points + %s, + sign_stat = %s, signin_streak = %s, + last_sign_date = %s, previous_streak = %s, update_time = %s + WHERE wx_id = %s AND group_id = %s + """ + params = (wx_nick_name, points_to_add, + sign_time, streak, + last_sign_date, previous_streak, datetime.now(), + wx_id, group_id) + return self.execute_update(sql, params)