@@ -124,28 +124,4 @@ def api_contacts_public():
|
|||||||
})
|
})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"获取公共好友信息失败: {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
|
return jsonify({"success": False, "error": str(e)}), 500
|
||||||
@@ -57,7 +57,7 @@ def api_wx_logs():
|
|||||||
else:
|
else:
|
||||||
log_file = os.path.join(project_root, 'wx_info.log')
|
log_file = os.path.join(project_root, 'wx_info.log')
|
||||||
|
|
||||||
# logger.info(f"尝试读取日志文件: {log_file}")
|
logger.info(f"尝试读取日志文件: {log_file}")
|
||||||
|
|
||||||
# 读取日志文件
|
# 读取日志文件
|
||||||
log_content = []
|
log_content = []
|
||||||
|
|||||||
@@ -197,33 +197,12 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<!-- 群组详情对话框 -->
|
<!-- 群组详情对话框 -->
|
||||||
<el-dialog title="群组详情" {% raw %}:visible.sync="groupDetailDialogVisible"{% endraw %} width="70%">
|
<el-dialog title="群组详情" {% raw %}:visible.sync="groupDetailDialogVisible"{% endraw %} width="50%">
|
||||||
<el-descriptions {% raw %}:column="1"{% endraw %} border>
|
<el-descriptions {% raw %}:column="1"{% endraw %} border>
|
||||||
<el-descriptions-item label="群ID">{% raw %}{{ currentGroup.wxid }}{% endraw %}</el-descriptions-item>
|
<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-item label="群名称">{% raw %}{{ currentGroup.name }}{% endraw %}</el-descriptions-item>
|
||||||
<!-- 可以添加更多群组相关信息 -->
|
<!-- 可以添加更多群组相关信息 -->
|
||||||
</el-descriptions>
|
</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>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 用户详情对话框 -->
|
<!-- 用户详情对话框 -->
|
||||||
@@ -284,9 +263,7 @@
|
|||||||
currentGroup: {},
|
currentGroup: {},
|
||||||
currentUser: {},
|
currentUser: {},
|
||||||
currentOfficial: {},
|
currentOfficial: {},
|
||||||
currentPublic: {},
|
currentPublic: {}
|
||||||
groupMembers: [],
|
|
||||||
loadingMembers: false
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -459,34 +436,6 @@
|
|||||||
viewGroupDetails(group) {
|
viewGroupDetails(group) {
|
||||||
this.currentGroup = group;
|
this.currentGroup = group;
|
||||||
this.groupDetailDialogVisible = true;
|
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) {
|
viewUserDetails(user) {
|
||||||
this.currentUser = user;
|
this.currentUser = user;
|
||||||
|
|||||||
@@ -77,8 +77,7 @@ def game_question_json(question):
|
|||||||
3. 每个问题应独立,且问题之间无连贯性或延续性。
|
3. 每个问题应独立,且问题之间无连贯性或延续性。
|
||||||
4. 避免重复提问或产生相似的问题,确保问题新颖。
|
4. 避免重复提问或产生相似的问题,确保问题新颖。
|
||||||
5. 对于每个问题,提供难度评分(1-10分)。在问题答对后,用户可以根据难度给出相应的分数。
|
5. 对于每个问题,提供难度评分(1-10分)。在问题答对后,用户可以根据难度给出相应的分数。
|
||||||
6. 答案控制长度在20字以内。
|
|
||||||
|
|
||||||
输出格式要求如下(仅返回JSON格式,确保不添加多余的符号):
|
输出格式要求如下(仅返回JSON格式,确保不添加多余的符号):
|
||||||
{
|
{
|
||||||
"category":"人文地理"
|
"category":"人文地理"
|
||||||
|
|||||||
Reference in New Issue
Block a user