diff --git a/admin/dashboard/blueprints/contacts.py b/admin/dashboard/blueprints/contacts.py index ad847ca..8456fd5 100644 --- a/admin/dashboard/blueprints/contacts.py +++ b/admin/dashboard/blueprints/contacts.py @@ -124,4 +124,28 @@ def api_contacts_public(): }) except Exception as e: logger.error(f"获取公共好友信息失败: {e}") + return jsonify({"success": False, "error": str(e)}), 500 + +@contacts_bp.route('/api/group//members', methods=['GET']) +@login_required +def api_group_members(group_id): + """获取指定群组的成员信息API""" + try: + server = current_app.dashboard_server + members = server.contact_manager.get_group_members(group_id) + + if members is None: + return jsonify({ + "success": False, + "error": "无法获取群成员信息或群组不存在" + }), 404 + + return jsonify({ + "success": True, + "data": { + "members": members + } + }) + except Exception as e: + logger.error(f"获取群组 {group_id} 成员信息失败: {e}") return jsonify({"success": False, "error": str(e)}), 500 \ No newline at end of file diff --git a/admin/dashboard/blueprints/system.py b/admin/dashboard/blueprints/system.py index 43fa758..cc64a92 100644 --- a/admin/dashboard/blueprints/system.py +++ b/admin/dashboard/blueprints/system.py @@ -57,7 +57,7 @@ def api_wx_logs(): else: log_file = os.path.join(project_root, 'wx_info.log') - logger.info(f"尝试读取日志文件: {log_file}") + # logger.info(f"尝试读取日志文件: {log_file}") # 读取日志文件 log_content = [] diff --git a/admin/dashboard/templates/contacts_management.html b/admin/dashboard/templates/contacts_management.html index 515acd3..f67b168 100644 --- a/admin/dashboard/templates/contacts_management.html +++ b/admin/dashboard/templates/contacts_management.html @@ -197,12 +197,33 @@ - + {% raw %}{{ currentGroup.wxid }}{% endraw %} {% raw %}{{ currentGroup.name }}{% endraw %} + +
+

群成员列表

+
+ +

加载群成员中...

+
+
+

暂无群成员信息

+
+ + + + + + +
@@ -263,7 +284,9 @@ currentGroup: {}, currentUser: {}, currentOfficial: {}, - currentPublic: {} + currentPublic: {}, + groupMembers: [], + loadingMembers: false }; }, computed: { @@ -436,6 +459,34 @@ viewGroupDetails(group) { this.currentGroup = group; this.groupDetailDialogVisible = true; + this.loadGroupMembers(group.wxid); + }, + loadGroupMembers(groupId) { + this.loadingMembers = true; + this.groupMembers = []; + + axios.get(`/contacts/api/group/${groupId}/members`) + .then(response => { + if (response.data.success) { + const members = response.data.data.members; + this.groupMembers = Object.entries(members).map(([wxid, info]) => { + return { + wxid: wxid, + nickname: info.nickname || '未知', + displayname: info.displayname || '未设置' + }; + }); + } else { + this.$message.warning('获取群成员信息失败: ' + response.data.error); + } + }) + .catch(error => { + console.error('加载群成员数据失败:', error); + this.$message.error('加载群成员数据失败'); + }) + .finally(() => { + this.loadingMembers = false; + }); }, viewUserDetails(user) { this.currentUser = user; diff --git a/game_task/game_chatgpt_qa.py b/game_task/game_chatgpt_qa.py index 5db19b9..02eba9a 100644 --- a/game_task/game_chatgpt_qa.py +++ b/game_task/game_chatgpt_qa.py @@ -77,7 +77,8 @@ def game_question_json(question): 3. 每个问题应独立,且问题之间无连贯性或延续性。 4. 避免重复提问或产生相似的问题,确保问题新颖。 5. 对于每个问题,提供难度评分(1-10分)。在问题答对后,用户可以根据难度给出相应的分数。 - + 6. 答案控制长度在20字以内。 + 输出格式要求如下(仅返回JSON格式,确保不添加多余的符号): { "category":"人文地理"