feat: 添加会员状态定时检测功能
This commit is contained in:
131
gui/main_mac.py
131
gui/main_mac.py
@@ -57,7 +57,7 @@ try:
|
|||||||
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,
|
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,
|
||||||
QPushButton, QLabel, QLineEdit, QTextEdit, QMessageBox,
|
QPushButton, QLabel, QLineEdit, QTextEdit, QMessageBox,
|
||||||
QHBoxLayout, QFrame, QStackedWidget)
|
QHBoxLayout, QFrame, QStackedWidget)
|
||||||
from PyQt5.QtCore import Qt, QThread, pyqtSignal
|
from PyQt5.QtCore import Qt, QThread, pyqtSignal, QTimer
|
||||||
from PyQt5.QtGui import QFont, QIcon, QPalette, QColor
|
from PyQt5.QtGui import QFont, QIcon, QPalette, QColor
|
||||||
from update_cursor_token import CursorTokenUpdater
|
from update_cursor_token import CursorTokenUpdater
|
||||||
from logger import logging
|
from logger import logging
|
||||||
@@ -109,6 +109,8 @@ class MainWindow(QMainWindow):
|
|||||||
self.init_ui()
|
self.init_ui()
|
||||||
# 检查会员状态
|
# 检查会员状态
|
||||||
self.check_member_status()
|
self.check_member_status()
|
||||||
|
# 启动定时检测
|
||||||
|
self.setup_status_timer()
|
||||||
logging.info("主窗口初始化完成")
|
logging.info("主窗口初始化完成")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f"初始化主窗口时发生错误: {str(e)}")
|
logging.error(f"初始化主窗口时发生错误: {str(e)}")
|
||||||
@@ -320,6 +322,8 @@ class MainWindow(QMainWindow):
|
|||||||
self.update_button.setEnabled(False)
|
self.update_button.setEnabled(False)
|
||||||
|
|
||||||
# 显示处理中的提示
|
# 显示处理中的提示
|
||||||
|
self.member_info.clear()
|
||||||
|
self.member_info.append("正在激活,请稍候...")
|
||||||
QApplication.processEvents()
|
QApplication.processEvents()
|
||||||
|
|
||||||
# 调用激活接口
|
# 调用激活接口
|
||||||
@@ -332,27 +336,49 @@ class MainWindow(QMainWindow):
|
|||||||
self.member_info.append(f"到期时间: {account_info['expire_time']}")
|
self.member_info.append(f"到期时间: {account_info['expire_time']}")
|
||||||
self.member_info.append(f"剩余天数: {account_info['days_left']}天")
|
self.member_info.append(f"剩余天数: {account_info['days_left']}天")
|
||||||
|
|
||||||
|
# 禁用激活输入框
|
||||||
|
self.activate_input.setEnabled(False)
|
||||||
|
self.activate_input.clear()
|
||||||
|
self.activate_input.setPlaceholderText("已激活")
|
||||||
|
|
||||||
|
# 启用更新按钮
|
||||||
|
self.update_button.setEnabled(True)
|
||||||
|
|
||||||
# 显示成功消息
|
# 显示成功消息
|
||||||
QMessageBox.information(self, "激活成功",
|
QMessageBox.information(self, "激活成功",
|
||||||
f"设备已成功激活!\n"
|
f"设备已成功激活!\n"
|
||||||
f"到期时间: {account_info['expire_time']}\n"
|
f"到期时间: {account_info['expire_time']}\n"
|
||||||
f"剩余天数: {account_info['days_left']}天")
|
f"剩余天数: {account_info['days_left']}天")
|
||||||
|
|
||||||
# 清空激活码输入框
|
|
||||||
self.activate_input.clear()
|
|
||||||
|
|
||||||
logging.info(f"设备激活成功,到期时间: {account_info['expire_time']}")
|
logging.info(f"设备激活成功,到期时间: {account_info['expire_time']}")
|
||||||
else:
|
else:
|
||||||
|
# 恢复激活输入框
|
||||||
|
self.activate_input.setEnabled(True)
|
||||||
|
self.activate_input.setPlaceholderText("请输入激活码")
|
||||||
|
|
||||||
|
# 更新状态显示
|
||||||
|
self.member_info.clear()
|
||||||
|
self.member_info.append("会员状态: 未激活")
|
||||||
|
self.member_info.append("请输入激活码进行激活")
|
||||||
|
|
||||||
QMessageBox.warning(self, "激活失败", message)
|
QMessageBox.warning(self, "激活失败", message)
|
||||||
logging.error(f"激活失败: {message}")
|
logging.error(f"激活失败: {message}")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
# 恢复激活输入框
|
||||||
|
self.activate_input.setEnabled(True)
|
||||||
|
self.activate_input.setPlaceholderText("请输入激活码")
|
||||||
|
|
||||||
|
# 更新状态显示
|
||||||
|
self.member_info.clear()
|
||||||
|
self.member_info.append("会员状态: 激活失败")
|
||||||
|
self.member_info.append("请重新尝试")
|
||||||
|
|
||||||
logging.error(f"激活过程中发生错误: {str(e)}")
|
logging.error(f"激活过程中发生错误: {str(e)}")
|
||||||
QMessageBox.critical(self, "错误", f"激活过程发生错误: {str(e)}")
|
QMessageBox.critical(self, "错误", f"激活过程发生错误: {str(e)}")
|
||||||
finally:
|
finally:
|
||||||
# 恢复按钮状态
|
# 根据激活状态设置更新按钮状态
|
||||||
self.activate_input.setEnabled(True)
|
self.update_button.setEnabled(success if 'success' in locals() else False)
|
||||||
self.update_button.setEnabled(True)
|
|
||||||
|
|
||||||
def disable_cursor_update(self):
|
def disable_cursor_update(self):
|
||||||
try:
|
try:
|
||||||
@@ -378,19 +404,110 @@ class MainWindow(QMainWindow):
|
|||||||
self.member_info.append(f"会员状态: 已激活")
|
self.member_info.append(f"会员状态: 已激活")
|
||||||
self.member_info.append(f"到期时间: {account_info['expire_time']}")
|
self.member_info.append(f"到期时间: {account_info['expire_time']}")
|
||||||
self.member_info.append(f"剩余天数: {account_info['days_left']}天")
|
self.member_info.append(f"剩余天数: {account_info['days_left']}天")
|
||||||
|
|
||||||
|
# 禁用激活输入框和按钮
|
||||||
|
self.activate_input.setEnabled(False)
|
||||||
|
self.activate_input.setPlaceholderText("已激活")
|
||||||
|
|
||||||
|
# 启用更新按钮
|
||||||
|
self.update_button.setEnabled(True)
|
||||||
|
|
||||||
logging.info(f"会员状态检查完成 - 到期时间: {account_info['expire_time']}")
|
logging.info(f"会员状态检查完成 - 到期时间: {account_info['expire_time']}")
|
||||||
else:
|
else:
|
||||||
# 显示未激活状态
|
# 显示未激活状态
|
||||||
self.member_info.clear()
|
self.member_info.clear()
|
||||||
self.member_info.append("会员状态: 未激活")
|
self.member_info.append("会员状态: 未激活")
|
||||||
self.member_info.append("请输入激活码进行激活")
|
self.member_info.append("请输入激活码进行激活")
|
||||||
|
|
||||||
|
# 启用激活输入框和按钮
|
||||||
|
self.activate_input.setEnabled(True)
|
||||||
|
self.activate_input.setPlaceholderText("请输入激活码")
|
||||||
|
|
||||||
|
# 禁用更新按钮
|
||||||
|
self.update_button.setEnabled(False)
|
||||||
|
|
||||||
logging.warning("会员状态检查结果:未激活")
|
logging.warning("会员状态检查结果:未激活")
|
||||||
|
|
||||||
|
if message and "设备未激活" not in message:
|
||||||
|
QMessageBox.warning(self, "提示", message)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.member_info.clear()
|
self.member_info.clear()
|
||||||
self.member_info.append("会员状态: 检查失败")
|
self.member_info.append("会员状态: 检查失败")
|
||||||
self.member_info.append("请稍后重试")
|
self.member_info.append("请稍后重试")
|
||||||
|
|
||||||
|
# 启用激活输入框和按钮
|
||||||
|
self.activate_input.setEnabled(True)
|
||||||
|
self.activate_input.setPlaceholderText("请输入激活码")
|
||||||
|
|
||||||
|
# 禁用更新按钮
|
||||||
|
self.update_button.setEnabled(False)
|
||||||
|
|
||||||
logging.error(f"检查会员状态时发生错误: {str(e)}")
|
logging.error(f"检查会员状态时发生错误: {str(e)}")
|
||||||
|
QMessageBox.warning(self, "错误", f"检查会员状态失败: {str(e)}")
|
||||||
|
|
||||||
|
def setup_status_timer(self):
|
||||||
|
"""设置定时检测会员状态"""
|
||||||
|
try:
|
||||||
|
self.status_timer = QTimer(self)
|
||||||
|
self.status_timer.timeout.connect(self.silent_check_member_status)
|
||||||
|
# 设置3分钟检测一次 (180000毫秒)
|
||||||
|
self.status_timer.start(180000)
|
||||||
|
logging.info("会员状态定时检测已启动")
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"设置定时器时发生错误: {str(e)}")
|
||||||
|
|
||||||
|
def silent_check_member_status(self):
|
||||||
|
"""静默检查会员状态"""
|
||||||
|
try:
|
||||||
|
logging.info("开始静默检查会员状态...")
|
||||||
|
success, message, account_info = self.updater.check_member_status()
|
||||||
|
|
||||||
|
if success and account_info:
|
||||||
|
# 更新会员信息显示
|
||||||
|
self.member_info.clear()
|
||||||
|
self.member_info.append(f"会员状态: 已激活")
|
||||||
|
self.member_info.append(f"到期时间: {account_info['expire_time']}")
|
||||||
|
self.member_info.append(f"剩余天数: {account_info['days_left']}天")
|
||||||
|
|
||||||
|
# 禁用激活输入框和按钮
|
||||||
|
self.activate_input.setEnabled(False)
|
||||||
|
self.activate_input.setPlaceholderText("已激活")
|
||||||
|
|
||||||
|
# 启用更新按钮
|
||||||
|
self.update_button.setEnabled(True)
|
||||||
|
|
||||||
|
logging.info(f"静默检查完成 - 会员状态正常,到期时间: {account_info['expire_time']}")
|
||||||
|
else:
|
||||||
|
# 显示未激活状态
|
||||||
|
self.member_info.clear()
|
||||||
|
self.member_info.append("会员状态: 未激活")
|
||||||
|
self.member_info.append("请输入激活码进行激活")
|
||||||
|
|
||||||
|
# 启用激活输入框和按钮
|
||||||
|
self.activate_input.setEnabled(True)
|
||||||
|
self.activate_input.setPlaceholderText("请输入激活码")
|
||||||
|
|
||||||
|
# 禁用更新按钮
|
||||||
|
self.update_button.setEnabled(False)
|
||||||
|
|
||||||
|
logging.warning("静默检查结果:会员未激活")
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"静默检查会员状态时发生错误: {str(e)}")
|
||||||
|
# 静默检查出错时不显示错误提示,只记录日志
|
||||||
|
|
||||||
|
def closeEvent(self, event):
|
||||||
|
"""窗口关闭事件"""
|
||||||
|
try:
|
||||||
|
# 停止定时器
|
||||||
|
if hasattr(self, 'status_timer'):
|
||||||
|
self.status_timer.stop()
|
||||||
|
logging.info("应用程序正常关闭")
|
||||||
|
event.accept()
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"关闭窗口时发生错误: {str(e)}")
|
||||||
|
event.accept()
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user