加入登录账户信息
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)}"}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user