管理后台加入群权限管理功能
This commit is contained in:
@@ -8,7 +8,7 @@ from flask import Flask, render_template, request, jsonify, redirect, url_for, s
|
||||
from db.connection import DBConnectionManager
|
||||
from db.stats_db import StatsDBOperator
|
||||
from utils.wechat.contact_manager import ContactManager
|
||||
|
||||
from robot_cmd.robot_command import GroupBotManager, Feature, PermissionStatus
|
||||
|
||||
class DashboardServer:
|
||||
"""统计看板服务器"""
|
||||
@@ -69,6 +69,96 @@ class DashboardServer:
|
||||
def errors():
|
||||
return render_template('errors.html')
|
||||
|
||||
# 在_create_app方法中添加新的路由
|
||||
@app.route('/robot_management')
|
||||
def robot_management():
|
||||
return render_template('robot_management.html')
|
||||
|
||||
@app.route('/api/robot/groups')
|
||||
def api_robot_groups():
|
||||
# 获取所有群组列表
|
||||
|
||||
groups = GroupBotManager.get_group_list()
|
||||
group_data = []
|
||||
|
||||
for group_id in groups:
|
||||
group_name = self.contact_manager.get_nickname(group_id)
|
||||
robot_status = GroupBotManager.get_group_permission(group_id, Feature.ROBOT)
|
||||
group_data.append({
|
||||
"group_id": group_id,
|
||||
"group_name": group_name,
|
||||
"robot_status": robot_status.value
|
||||
})
|
||||
|
||||
return jsonify({"success": True, "data": group_data})
|
||||
|
||||
@app.route('/api/robot/group/<group_id>/permissions')
|
||||
def api_robot_group_permissions(group_id):
|
||||
|
||||
permissions = GroupBotManager.list_group_permissions(group_id)
|
||||
permission_data = []
|
||||
|
||||
for feature, status in permissions.items():
|
||||
permission_data.append({
|
||||
"feature_id": feature.value,
|
||||
"feature_name": feature.name,
|
||||
"feature_description": feature.description,
|
||||
"status": status.value
|
||||
})
|
||||
|
||||
return jsonify({"success": True, "data": permission_data})
|
||||
|
||||
@app.route('/api/robot/group/<group_id>/permissions', methods=['POST'])
|
||||
def api_update_robot_permissions(group_id):
|
||||
# 更新群组功能权限
|
||||
from robot_cmd.robot_command import GroupBotManager, Feature, PermissionStatus
|
||||
|
||||
data = request.json
|
||||
feature_id = data.get('feature_id')
|
||||
status = data.get('status')
|
||||
|
||||
try:
|
||||
feature = Feature(int(feature_id))
|
||||
new_status = PermissionStatus(status)
|
||||
|
||||
# 特殊处理ROBOT功能
|
||||
if feature == Feature.ROBOT:
|
||||
r = self.db_manager.get_redis_connection()
|
||||
if new_status == PermissionStatus.ENABLED:
|
||||
GroupBotManager.local_cache["group_list"].add(group_id)
|
||||
r.sadd("group:list", group_id)
|
||||
else:
|
||||
GroupBotManager.local_cache["group_list"].remove(group_id)
|
||||
r.srem("group:list", group_id)
|
||||
|
||||
GroupBotManager.set_group_permission(group_id, feature, new_status)
|
||||
return jsonify({"success": True})
|
||||
except Exception as e:
|
||||
self.logger.error(f"更新群组权限失败: {e}")
|
||||
return jsonify({"success": False, "error": str(e)}), 400
|
||||
|
||||
@app.route('/api/robot/batch_operation', methods=['POST'])
|
||||
def api_robot_batch_operation():
|
||||
# 批量操作接口
|
||||
data = request.json
|
||||
operation = data.get('operation')
|
||||
group_ids = data.get('group_ids', [])
|
||||
|
||||
results = {}
|
||||
|
||||
try:
|
||||
if operation == 'remove_groups':
|
||||
for group_id in group_ids:
|
||||
result = GroupBotManager.remove_group(group_id)
|
||||
results[group_id] = result
|
||||
|
||||
return jsonify({"success": True, "results": results})
|
||||
else:
|
||||
return jsonify({"success": False, "error": "不支持的操作类型"}), 400
|
||||
except Exception as e:
|
||||
self.logger.error(f"批量操作失败: {e}")
|
||||
return jsonify({"success": False, "error": str(e)}), 400
|
||||
|
||||
@app.route('/api/plugin_stats')
|
||||
def api_plugin_stats():
|
||||
days = request.args.get('days', 7, type=int)
|
||||
@@ -197,3 +287,4 @@ class DashboardServer:
|
||||
except Exception as e:
|
||||
if hasattr(self, 'logger'):
|
||||
self.logger.error(f"DashboardServer 析构时出错: {e}")
|
||||
|
||||
|
||||
@@ -103,6 +103,13 @@
|
||||
<i class="el-icon-warning"></i>
|
||||
<span slot="title">错误日志</span>
|
||||
</el-menu-item>
|
||||
|
||||
<!-- 在左侧菜单中添加群机器人管理选项 -->
|
||||
<!-- 找到el-menu标签内的菜单项列表,添加以下内容 -->
|
||||
<el-menu-item index="6">
|
||||
<i class="el-icon-setting"></i>
|
||||
<span slot="title">群机器人管理</span>
|
||||
</el-menu-item>
|
||||
</el-menu>
|
||||
</div>
|
||||
|
||||
@@ -153,7 +160,8 @@
|
||||
'2': '/plugins',
|
||||
'3': '/users',
|
||||
'4': '/groups',
|
||||
'5': '/errors'
|
||||
'5': '/errors',
|
||||
'6': '/robot_management'
|
||||
};
|
||||
|
||||
// 如果当前不在对应页面,则跳转
|
||||
|
||||
Reference in New Issue
Block a user