群成员信息
This commit is contained in:
@@ -7,6 +7,7 @@ from loguru import logger
|
||||
# 创建联系人管理蓝图
|
||||
contacts_bp = Blueprint('contacts', __name__, url_prefix='/contacts')
|
||||
|
||||
|
||||
# 联系人管理页面
|
||||
@contacts_bp.route('/')
|
||||
@login_required
|
||||
@@ -14,6 +15,7 @@ def contacts_management():
|
||||
"""通讯录管理页面"""
|
||||
return render_template('contacts_management.html')
|
||||
|
||||
|
||||
# API路由
|
||||
@contacts_bp.route('/api/all', methods=['GET'])
|
||||
@login_required
|
||||
@@ -32,6 +34,7 @@ def api_contacts_all():
|
||||
logger.error(f"获取所有联系人信息失败: {e}")
|
||||
return jsonify({"success": False, "error": str(e)}), 500
|
||||
|
||||
|
||||
@contacts_bp.route('/api/statistics', methods=['GET'])
|
||||
@login_required
|
||||
def api_contacts_statistics():
|
||||
@@ -55,6 +58,7 @@ def api_contacts_statistics():
|
||||
logger.error(f"获取联系人统计信息失败: {e}")
|
||||
return jsonify({"success": False, "error": str(e)}), 500
|
||||
|
||||
|
||||
@contacts_bp.route('/api/groups', methods=['GET'])
|
||||
@login_required
|
||||
def api_contacts_groups():
|
||||
@@ -73,6 +77,7 @@ def api_contacts_groups():
|
||||
logger.error(f"获取群组联系人信息失败: {e}")
|
||||
return jsonify({"success": False, "error": str(e)}), 500
|
||||
|
||||
|
||||
@contacts_bp.route('/api/personal', methods=['GET'])
|
||||
@login_required
|
||||
def api_contacts_personal():
|
||||
@@ -91,6 +96,7 @@ def api_contacts_personal():
|
||||
logger.error(f"获取个人联系人信息失败: {e}")
|
||||
return jsonify({"success": False, "error": str(e)}), 500
|
||||
|
||||
|
||||
@contacts_bp.route('/api/official', methods=['GET'])
|
||||
@login_required
|
||||
def api_contacts_official():
|
||||
@@ -109,6 +115,7 @@ def api_contacts_official():
|
||||
logger.error(f"获取公众号联系人信息失败: {e}")
|
||||
return jsonify({"success": False, "error": str(e)}), 500
|
||||
|
||||
|
||||
@contacts_bp.route('/api/public', methods=['GET'])
|
||||
@login_required
|
||||
def api_contacts_public():
|
||||
@@ -127,6 +134,7 @@ def api_contacts_public():
|
||||
logger.error(f"获取公共好友信息失败: {e}")
|
||||
return jsonify({"success": False, "error": str(e)}), 500
|
||||
|
||||
|
||||
@contacts_bp.route('/api/head_images', methods=['GET'])
|
||||
@login_required
|
||||
def api_head_images():
|
||||
@@ -145,6 +153,7 @@ def api_head_images():
|
||||
logger.error(f"获取联系人头像信息失败: {e}")
|
||||
return jsonify({"success": False, "error": str(e)}), 500
|
||||
|
||||
|
||||
@contacts_bp.route('/api/group_members/<roomid>', methods=['GET'])
|
||||
@login_required
|
||||
def api_group_members(roomid):
|
||||
@@ -155,8 +164,7 @@ def api_group_members(roomid):
|
||||
"""
|
||||
try:
|
||||
server = current_app.dashboard_server
|
||||
group_members = server.contact_manager.get_group_members(roomid)
|
||||
|
||||
group_members = server.contact_db.get_chatroom_member_list(roomid)
|
||||
return jsonify({
|
||||
"success": True,
|
||||
"data": {
|
||||
|
||||
@@ -7,6 +7,7 @@ import sys
|
||||
import threading
|
||||
from loguru import logger
|
||||
|
||||
from db.contacts_db import ContactsDBOperator
|
||||
from db.message_storage import MessageStorageDB
|
||||
from db.stats_db import StatsDBOperator
|
||||
from flask import Flask, send_from_directory
|
||||
@@ -40,6 +41,7 @@ class DashboardServer:
|
||||
self.db_manager = robot_instance.db_manager
|
||||
self.stats_db = StatsDBOperator(self.db_manager)
|
||||
self.message_storage = MessageStorageDB(self.db_manager)
|
||||
self.contact_db: ContactsDBOperator = ContactsDBOperator(self.db_manager)
|
||||
# 获取联系人管理器实例
|
||||
self.contact_manager = robot_instance.contact_manager
|
||||
self.plugin_manager = robot_instance.plugin_manager
|
||||
|
||||
@@ -182,7 +182,8 @@
|
||||
</el-tabs>
|
||||
|
||||
<!-- 分页 -->
|
||||
<div class="pagination-container" {% raw %}v-if="activeTab === 'groups' && groupsList.length > 10"{% endraw %}>
|
||||
<div class="pagination-container" {% raw %}v-if="activeTab === 'groups' && groupsList.length > 10" {%
|
||||
endraw %}>
|
||||
<el-pagination
|
||||
{% raw %}@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
@@ -194,7 +195,8 @@
|
||||
</el-pagination>
|
||||
</div>
|
||||
|
||||
<div class="pagination-container" {% raw %}v-if="activeTab === 'personal' && personalList.length > 10"{% endraw %}>
|
||||
<div class="pagination-container" {% raw %}v-if="activeTab === 'personal' && personalList.length > 10"
|
||||
{% endraw %}>
|
||||
<el-pagination
|
||||
{% raw %}@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
@@ -206,7 +208,8 @@
|
||||
</el-pagination>
|
||||
</div>
|
||||
|
||||
<div class="pagination-container" {% raw %}v-if="activeTab === 'official' && officialList.length > 10"{% endraw %}>
|
||||
<div class="pagination-container" {% raw %}v-if="activeTab === 'official' && officialList.length > 10"
|
||||
{% endraw %}>
|
||||
<el-pagination
|
||||
{% raw %}@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
@@ -218,7 +221,8 @@
|
||||
</el-pagination>
|
||||
</div>
|
||||
|
||||
<div class="pagination-container" {% raw %}v-if="activeTab === 'public' && publicList.length > 10"{% endraw %}>
|
||||
<div class="pagination-container" {% raw %}v-if="activeTab === 'public' && publicList.length > 10" {%
|
||||
endraw %}>
|
||||
<el-pagination
|
||||
{% raw %}@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
@@ -318,8 +322,10 @@
|
||||
</el-avatar>
|
||||
</div>
|
||||
<el-descriptions {% raw %}:column="1" {% endraw %} border>
|
||||
<el-descriptions-item label="公众号ID">{% raw %}{{ currentOfficial.wxid }}{% endraw %}</el-descriptions-item>
|
||||
<el-descriptions-item label="公众号名称">{% raw %}{{ currentOfficial.name }}{% endraw %}</el-descriptions-item>
|
||||
<el-descriptions-item label="公众号ID">{% raw %}{{ currentOfficial.wxid }}{% endraw %}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="公众号名称">{% raw %}{{ currentOfficial.name }}{% endraw %}
|
||||
</el-descriptions-item>
|
||||
<!-- 可以添加更多公众号相关信息 -->
|
||||
</el-descriptions>
|
||||
</el-dialog>
|
||||
@@ -627,9 +633,9 @@
|
||||
const members = response.data.data.members;
|
||||
console.log('获取到的群成员数据:', members); // 添加调试日志
|
||||
|
||||
this.groupMembersList = Object.entries(members).map(([wxid, name]) => ({
|
||||
wxid,
|
||||
name: name || wxid // 确保name不为空
|
||||
this.groupMembersList = data.map(item => ({
|
||||
wxid: item.wxid,
|
||||
name: item.display_name || item.nick_name || item.wxid,
|
||||
}));
|
||||
console.log('处理后的群成员列表:', this.groupMembersList); // 添加调试日志
|
||||
} else {
|
||||
@@ -662,20 +668,24 @@
|
||||
text-align: center;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.stat-title {
|
||||
font-size: 16px;
|
||||
color: #606266;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.stat-value {
|
||||
font-size: 28px;
|
||||
font-weight: bold;
|
||||
color: #409EFF;
|
||||
}
|
||||
|
||||
.pagination-container {
|
||||
margin-top: 20px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
margin: 20px 0 15px 0;
|
||||
border-bottom: 1px solid #ebeef5;
|
||||
@@ -684,6 +694,7 @@
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.section-title h3 {
|
||||
margin: 0;
|
||||
font-size: 18px;
|
||||
|
||||
Reference in New Issue
Block a user