diff --git a/app/core/config.py b/app/core/config.py index 833d11c..f3339a5 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -145,7 +145,7 @@ class AppConfig: if mode == "Maa": self.cur.execute( - "CREATE TABLE adminx(admin text,id text,server text,day int,status text,last date,game text,game_1 text,game_2 text,routine text,annihilation text,infrastructure text,password byte,notes text,numb int,mode text,uid int)" + "CREATE TABLE adminx(admin text,id text,server text,day int,status text,last date,game text,game_1 text,game_2 text,routine text,annihilation text,infrastructure text,password byte,notes text,numb int,mode text,uid int,today_status text)" ) self.cur.execute("CREATE TABLE version(v text)") self.cur.execute("INSERT INTO version VALUES(?)", ("v1.4",)) @@ -161,7 +161,7 @@ class AppConfig: db = sqlite3.connect(self.database_path) cur = db.cursor() cur.execute("CREATE TABLE version(v text)") - cur.execute("INSERT INTO version VALUES(?)", ("v1.4",)) + cur.execute("INSERT INTO version VALUES(?)", ("v1.5",)) db.commit() cur.close() db.close() @@ -172,7 +172,7 @@ class AppConfig: cur.execute("SELECT * FROM version WHERE True") version = cur.fetchall() - if version[0][0] != "v1.4": + if version[0][0] != "v1.5": logger.info("数据文件版本更新开始") if_streaming = False # v1.0-->v1.1 @@ -387,10 +387,40 @@ class AppConfig: ) as f: json.dump(queue_config, f, ensure_ascii=False, indent=4) (self.app_path / "config/gui.json").unlink() + + if version[0][0] == "v1.4" or if_streaming: + logger.info("数据文件版本更新:v1.4-->v1.5") + if_streaming = True + # 检查adminx表是否存在 + cur.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='adminx'") + if not cur.fetchone(): + self.create_adminx_table(cur) + else: + # 获取现有数据 + cur.execute("SELECT * FROM adminx") + data = cur.fetchall() + # 重建表以包含新字段 + cur.execute("DROP TABLE IF EXISTS adminx") + self.create_adminx_table(cur) + # 恢复数据 + for row in data: + cur.execute( + "INSERT INTO adminx VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", + row + ("n",) # 添加today_status默认值为'n' + ) + cur.execute("DELETE FROM version WHERE v = ?", ("v1.4",)) + cur.execute("INSERT INTO version VALUES(?)", ("v1.5",)) + db.commit() cur.close() db.close() logger.info("数据文件版本更新完成") + def create_adminx_table(self, cur): + """创建adminx表""" + cur.execute( + "CREATE TABLE adminx(admin text,id text,server text,day int,status text,last date,game text,game_1 text,game_2 text,routine text,annihilation text,infrastructure text,password byte,notes text,numb int,mode text,uid int,today_status text)" + ) + def search_config(self) -> list: """搜索所有子配置文件""" @@ -434,6 +464,7 @@ class AppConfig: lasts: list, notes: list, numbs: list, + today_status: list, ) -> None: """将代理完成后发生改动的用户信息同步至本地数据库""" @@ -457,6 +488,10 @@ class AppConfig: "UPDATE adminx SET numb = ? WHERE mode = ? AND uid = ?", (numbs[index], modes[index], uids[index]), ) + cur.execute( # 添加today_status的更新 + "UPDATE adminx SET today_status = ? WHERE mode = ? AND uid = ?", + (today_status[index], modes[index], uids[index]), + ) db.commit() cur.close() db.close() diff --git a/app/core/task_manager.py b/app/core/task_manager.py index 85e97f8..142fe1d 100644 --- a/app/core/task_manager.py +++ b/app/core/task_manager.py @@ -45,7 +45,7 @@ class Task(QThread): push_info_bar = Signal(str, str, str, int) question = Signal(str, str) question_response = Signal(bool) - update_user_info = Signal(Path, list, list, list, list, list, list) + update_user_info = Signal(Path, list, list, list, list, list, list, list) create_task_list = Signal(list) create_user_list = Signal(list) update_task_list = Signal(list) @@ -137,7 +137,7 @@ class Task(QThread): self.task.update_user_list.connect(self.update_user_list.emit) self.task.update_log_text.connect(self.update_log_text.emit) self.task.update_user_info.connect( - lambda modes, uids, days, lasts, notes, numbs: self.update_user_info.emit( + lambda modes, uids, days, lasts, notes, numbs, today_status: self.update_user_info.emit( self.member_dict[self.task_list[i][0]][1], modes, uids, @@ -145,6 +145,7 @@ class Task(QThread): lasts, notes, numbs, + today_status ) ) self.task.accomplish.connect( diff --git a/app/models/MAA.py b/app/models/MAA.py index 77815ba..6726c06 100644 --- a/app/models/MAA.py +++ b/app/models/MAA.py @@ -46,7 +46,7 @@ class MaaManager(QObject): question = Signal(str, str) question_response = Signal(bool) - update_user_info = Signal(list, list, list, list, list, list) + update_user_info = Signal(list, list, list, list, list, list, list) push_info_bar = Signal(str, str, str, int) create_user_list = Signal(list) update_user_list = Signal(list) @@ -272,6 +272,7 @@ class MaaManager(QObject): # 移除静默进程标记 Config.silence_list.remove(self.emulator_path) # 推送异常通知 + self.data[user[2]][17] = 'n' Notify.push_notification( "用户自动代理出现异常!", f"用户 {user[0].replace("_", " 今天的")}的{mode_book[j][5:7]}部分出现一次异常", @@ -300,6 +301,7 @@ class MaaManager(QObject): # 录入代理失败的用户 if not (run_book[0] and run_book[1]): + self.data[user[2]][17] = 'n' user[1] = "异常" self.update_user_list.emit(user_list) @@ -479,7 +481,8 @@ class MaaManager(QObject): lasts = [self.data[_[2]][5] for _ in user_list] notes = [self.data[_[2]][13] for _ in user_list] numbs = [self.data[_[2]][14] for _ in user_list] - self.update_user_info.emit(modes, uids, days, lasts, notes, numbs) + today_status = [self.data[_[2]][17] for _ in user_list] + self.update_user_info.emit(modes, uids, days, lasts, notes, numbs, today_status) error_index = [_[2] for _ in user_list if _[1] == "异常"] over_index = [_[2] for _ in user_list if _[1] == "完成"] diff --git a/app/ui/member_manager.py b/app/ui/member_manager.py index 60d4740..1be99e7 100644 --- a/app/ui/member_manager.py +++ b/app/ui/member_manager.py @@ -789,6 +789,7 @@ class MaaSettingBox(QWidget): "numb", "mode", "uid", + "today_status", ] self.userlist_simple_index = [ 0, @@ -808,6 +809,7 @@ class MaaSettingBox(QWidget): "-", "-", "-", + "-" ] self.userlist_beta_index = [ 0, @@ -827,6 +829,7 @@ class MaaSettingBox(QWidget): "-", "-", "-", + "-", ] self.pivot = Pivot(self) @@ -1225,7 +1228,7 @@ class MaaSettingBox(QWidget): elif "高级用户列表" in self.pivot.currentRouteKey(): set_book = ["beta", self.user_list_beta.rowCount()] Config.cur.execute( - "INSERT INTO adminx VALUES('新用户','手机号码(官服)/B站ID(B服)','Official',-1,'y','2000-01-01','1-7','-','-','n','n','n',?,'无',0,?,?)", + "INSERT INTO adminx VALUES('新用户','手机号码(官服)/B站ID(B服)','Official',-1,'y','2000-01-01','1-7','-','-','n','n','n',?,'无',0,?,?,'n')", ( Crypto.encryptx("未设置"), set_book[0],