添加群成员查看功能

This commit is contained in:
liuwei
2025-04-03 13:30:56 +08:00
parent dbbc16346c
commit 2db6232e58
4 changed files with 80 additions and 4 deletions

View File

@@ -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/<group_id>/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

View File

@@ -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 = []

View File

@@ -197,12 +197,33 @@
</el-row>
<!-- 群组详情对话框 -->
<el-dialog title="群组详情" {% raw %}:visible.sync="groupDetailDialogVisible"{% endraw %} width="50%">
<el-dialog title="群组详情" {% raw %}:visible.sync="groupDetailDialogVisible"{% endraw %} width="70%">
<el-descriptions {% raw %}:column="1"{% endraw %} border>
<el-descriptions-item label="群ID">{% raw %}{{ currentGroup.wxid }}{% endraw %}</el-descriptions-item>
<el-descriptions-item label="群名称">{% raw %}{{ currentGroup.name }}{% endraw %}</el-descriptions-item>
<!-- 可以添加更多群组相关信息 -->
</el-descriptions>
<div style="margin-top: 20px;">
<h3>群成员列表</h3>
<div {% raw %}v-if="loadingMembers"{% endraw %} style="text-align: center; padding: 20px;">
<el-spinner></el-spinner>
<p>加载群成员中...</p>
</div>
<div {% raw %}v-else-if="groupMembers.length === 0"{% endraw %} style="text-align: center; padding: 20px;">
<p>暂无群成员信息</p>
</div>
<el-table
{% raw %}v-else
:data="groupMembers"{% endraw %}
style="width: 100%"
border>
<el-table-column type="index" width="50"></el-table-column>
<el-table-column prop="wxid" label="成员ID" width="220"></el-table-column>
<el-table-column prop="nickname" label="昵称"></el-table-column>
<el-table-column prop="displayname" label="群内显示名" width="150"></el-table-column>
</el-table>
</div>
</el-dialog>
<!-- 用户详情对话框 -->
@@ -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;

View File

@@ -77,7 +77,8 @@ def game_question_json(question):
3. 每个问题应独立,且问题之间无连贯性或延续性。
4. 避免重复提问或产生相似的问题,确保问题新颖。
5. 对于每个问题提供难度评分1-10分。在问题答对后用户可以根据难度给出相应的分数。
6. 答案控制长度在20字以内。
输出格式要求如下仅返回JSON格式确保不添加多余的符号
{
"category":"人文地理"