加入登录账户信息

This commit is contained in:
liuwei
2025-04-11 17:51:46 +08:00
parent 89bac7123c
commit ea59ceeef2
4 changed files with 94 additions and 5 deletions

View File

@@ -86,4 +86,13 @@ def api_wx_logs():
})
except Exception as e:
logger.error(f"获取微信日志失败: {e}")
return jsonify({"success": False, "error": str(e)}), 500
return jsonify({"success": False, "error": str(e)}), 500
# 在现有路由下添加
@system_bp.route('/api/current_user_info', methods=['GET'])
@login_required
def get_current_user_info():
"""获取当前登录的微信用户信息"""
dashboard_server = current_app.dashboard_server
result = dashboard_server.get_current_user_info()
return jsonify(result)

View File

@@ -44,6 +44,8 @@ class DashboardServer:
self.contact_manager = robot_instance.contact_manager
self.plugin_manager = robot_instance.plugin_manager
self.plugin_registry = robot_instance.plugin_registry
# 获取WCF实例
self.wcf = robot_instance.wcf
self.logger.info("使用Robot实例的对象进行初始化")
else:
self.logger.error("未提供Robot实例Dashboard无法正常工作")
@@ -165,3 +167,42 @@ class DashboardServer:
self._server.shutdown()
self.logger.info("服务器已停止")
def get_current_user_info(self):
"""获取当前登录的微信用户信息"""
try:
if not self.wcf:
self.logger.error("WCF实例不可用无法获取当前用户信息")
return {"success": False, "message": "WCF实例不可用"}
# 获取当前登录的微信ID
wx_id = self.wcf.get_self_wxid()
if not wx_id:
return {"success": False, "message": "未获取到微信ID"}
# 获取用户详细信息
user_info = self.wcf.get_user_info()
# 获取头像
avatar_path = None
try:
avatar_path = self.wcf.get_avatar(wx_id)
except Exception as e:
self.logger.warning(f"获取用户头像失败: {e}")
return {
"success": True,
"data": {
"wx_id": wx_id,
"nickname": user_info.get("nickname", "未知用户"),
"avatar": avatar_path,
"signature": user_info.get("signature", ""),
"gender": user_info.get("gender", 0),
"country": user_info.get("country", ""),
"province": user_info.get("province", ""),
"city": user_info.get("city", "")
}
}
except Exception as e:
self.logger.error(f"获取当前用户信息失败: {e}")
return {"success": False, "message": f"获取用户信息出错: {str(e)}"}

View File

@@ -6,6 +6,28 @@
<!-- 首页概览 -->
<div>
<el-row :gutter="20">
<el-col :span="4">
<el-card shadow="hover" class="stats-card">
<div slot="header">
<span>当前登录微信账号</span>
</div>
<div v-if="currentUser.success" style="display: flex; align-items: center;">
<div v-if="currentUser.data.avatar" style="margin-right: 15px;">
<img :src="'/static/images/' + currentUser.data.avatar" style="width: 60px; height: 60px; border-radius: 50%;" />
</div>
<div>
<div style="font-size: 18px; font-weight: bold;">{% raw %}{{ currentUser.data.nickname }}{% endraw %}</div>
<div style="font-size: 14px; color: #666;">微信号: {% raw %}{{ currentUser.data.wx_id }}{% endraw %}</div>
<div style="font-size: 12px; color: #999; margin-top: 5px;">{% raw %}{{ currentUser.data.signature || '暂无签名' }}{% endraw %}</div>
</div>
</div>
<div v-else style="text-align: center; color: #999;">
<i class="el-icon-warning" style="font-size: 24px;"></i>
<div>{% raw %}{{ currentUser.message || '未获取到用户信息' }}{% endraw %}</div>
</div>
</el-card>
</el-col>
<el-col :span="4">
<el-card shadow="hover" class="stats-card">
<div slot="header">
@@ -252,6 +274,8 @@
this.loadData();
// 加载系统信息
this.loadSystemInfo();
// 加载当前用户信息
this.loadCurrentUserInfo();
// 设置定时刷新系统信息每30秒
this.systemInfoTimer = setInterval(this.loadSystemInfo, 30000);
},
@@ -279,6 +303,21 @@
.catch(error => {
console.error('加载系统信息出错:', error);
});
},
// 添加获取当前用户信息的方法
loadCurrentUserInfo() {
axios.get('/api/current_user_info')
.then(response => {
this.currentUser = response.data;
})
.catch(error => {
console.error('加载当前用户信息出错:', error);
this.currentUser = {
success: false,
message: '获取用户信息失败',
data: {}
};
});
},
// 添加获取进度条状态的方法
getProgressStatus(value) {

View File

@@ -436,20 +436,20 @@ class PluginManager:
display_name, plugin = self.find_plugin_by_name(name)
if not plugin:
self.LOG.info(f"PluginManager插件 {name} 未加载")
self.LOG.debug(f"PluginManager插件 {name} 未加载")
return False
if plugin.status == PluginStatus.RUNNING:
self.LOG.info(f"PluginManager插件 {display_name} 已经在运行")
self.LOG.debug(f"PluginManager插件 {display_name} 已经在运行")
return True
if plugin.start():
plugin.status = PluginStatus.RUNNING
self.LOG.info(f"PluginManager插件 {display_name} 状态变更为在运行")
self.LOG.debug(f"PluginManager插件 {display_name} 状态变更为在运行")
return True
else:
plugin.status = PluginStatus.ERROR
self.LOG.info(f"PluginManager插件 {display_name} 状态变更为异常")
self.LOG.debug(f"PluginManager插件 {display_name} 状态变更为异常")
return False
def stop_plugin(self, name: str) -> bool: