加入登录账户信息
This commit is contained in:
@@ -86,4 +86,13 @@ def api_wx_logs():
|
|||||||
})
|
})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"获取微信日志失败: {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.contact_manager = robot_instance.contact_manager
|
||||||
self.plugin_manager = robot_instance.plugin_manager
|
self.plugin_manager = robot_instance.plugin_manager
|
||||||
self.plugin_registry = robot_instance.plugin_registry
|
self.plugin_registry = robot_instance.plugin_registry
|
||||||
|
# 获取WCF实例
|
||||||
|
self.wcf = robot_instance.wcf
|
||||||
self.logger.info("使用Robot实例的对象进行初始化")
|
self.logger.info("使用Robot实例的对象进行初始化")
|
||||||
else:
|
else:
|
||||||
self.logger.error("未提供Robot实例,Dashboard无法正常工作")
|
self.logger.error("未提供Robot实例,Dashboard无法正常工作")
|
||||||
@@ -165,3 +167,42 @@ class DashboardServer:
|
|||||||
self._server.shutdown()
|
self._server.shutdown()
|
||||||
|
|
||||||
self.logger.info("服务器已停止")
|
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>
|
<div>
|
||||||
<el-row :gutter="20">
|
<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-col :span="4">
|
||||||
<el-card shadow="hover" class="stats-card">
|
<el-card shadow="hover" class="stats-card">
|
||||||
<div slot="header">
|
<div slot="header">
|
||||||
@@ -252,6 +274,8 @@
|
|||||||
this.loadData();
|
this.loadData();
|
||||||
// 加载系统信息
|
// 加载系统信息
|
||||||
this.loadSystemInfo();
|
this.loadSystemInfo();
|
||||||
|
// 加载当前用户信息
|
||||||
|
this.loadCurrentUserInfo();
|
||||||
// 设置定时刷新系统信息(每30秒)
|
// 设置定时刷新系统信息(每30秒)
|
||||||
this.systemInfoTimer = setInterval(this.loadSystemInfo, 30000);
|
this.systemInfoTimer = setInterval(this.loadSystemInfo, 30000);
|
||||||
},
|
},
|
||||||
@@ -279,6 +303,21 @@
|
|||||||
.catch(error => {
|
.catch(error => {
|
||||||
console.error('加载系统信息出错:', 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) {
|
getProgressStatus(value) {
|
||||||
|
|||||||
@@ -436,20 +436,20 @@ class PluginManager:
|
|||||||
display_name, plugin = self.find_plugin_by_name(name)
|
display_name, plugin = self.find_plugin_by_name(name)
|
||||||
|
|
||||||
if not plugin:
|
if not plugin:
|
||||||
self.LOG.info(f"PluginManager:插件 {name} 未加载")
|
self.LOG.debug(f"PluginManager:插件 {name} 未加载")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if plugin.status == PluginStatus.RUNNING:
|
if plugin.status == PluginStatus.RUNNING:
|
||||||
self.LOG.info(f"PluginManager:插件 {display_name} 已经在运行")
|
self.LOG.debug(f"PluginManager:插件 {display_name} 已经在运行")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if plugin.start():
|
if plugin.start():
|
||||||
plugin.status = PluginStatus.RUNNING
|
plugin.status = PluginStatus.RUNNING
|
||||||
self.LOG.info(f"PluginManager:插件 {display_name} 状态变更为在运行")
|
self.LOG.debug(f"PluginManager:插件 {display_name} 状态变更为在运行")
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
plugin.status = PluginStatus.ERROR
|
plugin.status = PluginStatus.ERROR
|
||||||
self.LOG.info(f"PluginManager:插件 {display_name} 状态变更为异常")
|
self.LOG.debug(f"PluginManager:插件 {display_name} 状态变更为异常")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def stop_plugin(self, name: str) -> bool:
|
def stop_plugin(self, name: str) -> bool:
|
||||||
|
|||||||
Reference in New Issue
Block a user