修复签到bug
This commit is contained in:
@@ -117,3 +117,28 @@ CREATE TABLE IF NOT EXISTS message_archive.tasks
|
||||
)
|
||||
comment '机器人定时任务表';
|
||||
|
||||
|
||||
|
||||
-- 修改签到表,添加必要字段
|
||||
ALTER TABLE t_sign_record ADD COLUMN last_continuous_days INT DEFAULT 0 COMMENT '历史最长连续签到天数';
|
||||
ALTER TABLE t_sign_record ADD COLUMN total_sign_days INT DEFAULT 0 COMMENT '总签到天数';
|
||||
ALTER TABLE t_sign_record ADD COLUMN last_sign_date DATETIME NULL COMMENT '上一次签到日期';
|
||||
ALTER TABLE t_sign_record ADD COLUMN streak_start_sign_date DATETIME NULL COMMENT '连续签到第一天日期';
|
||||
-- 添加断签前连签天数字段
|
||||
ALTER TABLE t_sign_record ADD COLUMN previous_streak INT DEFAULT 0 COMMENT '断签前的连签天数';
|
||||
|
||||
|
||||
-- 创建签到历史记录表
|
||||
CREATE TABLE IF NOT EXISTS message_archive.t_sign_history (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '历史记录ID',
|
||||
wx_id VARCHAR(100) NOT NULL COMMENT '用户微信ID',
|
||||
group_id VARCHAR(100) NOT NULL COMMENT '群聊ID',
|
||||
sign_date DATE NOT NULL COMMENT '签到日期',
|
||||
sign_time DATETIME NOT NULL COMMENT '签到时间',
|
||||
is_makeup TINYINT(1) DEFAULT 0 COMMENT '是否为补签',
|
||||
points_earned INT DEFAULT 0 COMMENT '获得的积分',
|
||||
streak_count INT DEFAULT 1 COMMENT '当时的连签天数',
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
|
||||
INDEX idx_user_group (wx_id, group_id),
|
||||
INDEX idx_sign_date (sign_date)
|
||||
) COMMENT '用户签到历史记录表';
|
||||
@@ -109,3 +109,20 @@ class SignInDB(BaseDBOperator):
|
||||
wx_id, group_id
|
||||
)
|
||||
self.execute_update(sql, params)
|
||||
|
||||
def update_sign_record_with_previous_streak(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)
|
||||
|
||||
Reference in New Issue
Block a user