Files
leonpan-pc/app/core/services/user_thread.py

200 lines
6.4 KiB
Python
Raw Normal View History

2025-10-29 22:20:21 +08:00
from loguru import logger
from PyQt6.QtCore import QThread, pyqtSignal
from PyQt6.QtGui import QPixmap
from ..api import miaoStarsBasicApi
class UserNickNameUpdateThread(QThread):
successUpdate = pyqtSignal()
errorUpdate = pyqtSignal(str)
def __init__(self, nickName: str):
super().__init__()
logger.debug(f"初始化用户昵称服务线程 - 昵称: {nickName}")
self.nickName = nickName
def run(self):
logger.info(f"开始更新用户昵称 - 昵称: {self.nickName}")
try:
response = miaoStarsBasicApi.updateUserNickname(self.nickName)
print(response)
if response["code"] == 0:
self.successUpdate.emit()
else:
logger.error("更新失败:", response["msg"])
self.errorUpdate.emit(response["msg"])
except Exception as e:
logger.error(f"更新用户昵称过程中发生异常: {e}")
self.errorUpdate.emit("系统错误,请稍后重试")
class UserAvatarUpdateThread(QThread):
successUpdate = pyqtSignal()
errorUpdate = pyqtSignal(str)
def __init__(self, avatarPath: str):
super().__init__()
logger.debug(f"初始化用户头像服务线程 - 头像路径: {avatarPath}")
self.avatarPath = avatarPath
def run(self):
logger.info(f"开始更新用户头像 - 头像路径: {self.avatarPath}")
try:
response = miaoStarsBasicApi.updateUserAvatar(self.avatarPath)
if response["code"] == 0:
logger.info("头像更新成功")
self.successUpdate.emit()
else:
logger.error(f"更新失败,错误信息: {response['msg']}")
self.errorUpdate.emit(f"更新失败: {response['msg']}")
except Exception as e:
logger.error(f"更新用户头像过程中发生异常: {e}")
self.errorUpdate.emit("系统错误,请稍后重试")
class GetUserAvatarThread(QThread):
avatarPixmap = pyqtSignal(QPixmap)
def __init__(self, size: str):
super().__init__()
logger.debug(f"初始化获取用户头像服务线程 - 头像尺寸: {size}")
self.size = size
def run(self):
logger.info(f"开始获取用户头像 - 头像尺寸: {self.size}")
try:
response = miaoStarsBasicApi.getUserAvatar(self.size)
self.avatarPixmap.emit(response)
except Exception as e:
logger.error(f"获取用户头像过程中发生异常: {e}")
self.avatarPixmap.emit(QPixmap(":app/images/logo.png"))
class GetPackThread(QThread):
storageDictSignal = pyqtSignal(dict)
def __init__(self):
super().__init__()
def run(self):
logger.info("开始请求用户配额包")
try:
response = miaoStarsBasicApi.getUserPack()
self.storageDictSignal.emit(response)
except Exception as e:
logger.error(f"获取用户配额包过程中发生异常: {e}")
self.storageDictSignal.emit(
{
"code": 0,
"data": {
"base": 0,
"pack": 0,
"used": 0,
"total": 0,
"packs": [],
},
"msg": "",
}
)
class GetPoliciesThread(QThread):
"""获取策略列表线程"""
successGetSignal = pyqtSignal(list)
errorSignal = pyqtSignal(str)
def __init__(self):
super().__init__()
def run(self):
try:
response = miaoStarsBasicApi.getPolicy()
if response["code"] == 0:
self.successGetSignal.emit(response["data"])
else:
self.errorSignal.emit(f"API返回错误: {response.get('msg')}")
except Exception as e:
self.errorSignal.emit(f"获取策略列表失败: {str(e)}")
class ChangePolicyThread(QThread):
"""更改策略线程"""
successChangedSignal = pyqtSignal()
errorSignal = pyqtSignal(str)
def __init__(self, path, policy_id):
super().__init__()
self.path = path
self.policy_id = policy_id
def run(self):
try:
response = miaoStarsBasicApi.changePolicy(self.path, self.policy_id)
if response["code"] == 0:
self.successChangedSignal.emit()
else:
self.errorSignal.emit(
f"更改策略失败: {response.get('msg', '未知错误')}"
)
except Exception as e:
self.errorSignal.emit(f"更改策略请求失败: {str(e)}")
class DeleteTagThread(QThread):
"""删除标签线程"""
successDeleteSignal = pyqtSignal()
errorSignal = pyqtSignal(str)
def __init__(self, tagId):
super().__init__()
self.tagId = tagId
def run(self):
try:
response = miaoStarsBasicApi.deleteTag(self.tagId)
if response["code"] == 0:
self.successDeleteSignal.emit()
logger.info(f"删除标签成功: {self.tagId}")
else:
logger.error(f"删除标签失败: {response.get('msg')}")
self.errorSignal.emit(f"删除标签失败: {response.get('msg')}")
except Exception as e:
self.errorSignal.emit(f"{str(e)}")
logger.error(f"删除标签请求失败: {str(e)}")
class AddTagThread(QThread):
"""添加标签的线程类"""
successSignal = pyqtSignal(str, dict) # 标签名称, 响应数据
errorSignal = pyqtSignal(str, str) # 标签名称, 错误信息
def __init__(self, name, expression, parent=None):
super().__init__(parent)
self.name = name
self.expression = expression
def run(self):
"""线程执行的主方法"""
try:
response = miaoStarsBasicApi.addTag(self.name, self.expression)
if response["code"] == 0:
logger.info(f"添加标签成功: {self.name}")
self.successSignal.emit(self.name, response)
else:
logger.error(f"添加标签失败: {self.name} - {response.get('msg')}")
self.errorSignal.emit(self.name, response.get("msg"))
except Exception as e:
logger.error(f"添加标签异常: {self.name} - {str(e)}")
self.errorSignal.emit(self.name, str(e))