管理后台 server 使用蓝图模式,降低维护成本,降低修改功能时对其他模块的影响

This commit is contained in:
liuwei
2025-04-03 12:18:59 +08:00
parent 343fc2060f
commit f2ec507ff7
4 changed files with 18 additions and 17 deletions

View File

@@ -32,7 +32,6 @@ def api_contacts_all():
return jsonify({"success": False, "error": str(e)}), 500
@contacts_bp.route('/api/statistics', methods=['GET'])
@login_required
def api_contacts_statistics():
"""获取联系人统计信息API"""
try:

View File

@@ -5,11 +5,11 @@ from robot_cmd.robot_command import GroupBotManager, Feature, PermissionStatus
from datetime import datetime
# 创建机器人管理蓝图
robot_bp = Blueprint('robot', __name__)
robot_bp = Blueprint('robot', __name__, url_prefix='/robot')
logger = logging.getLogger("RobotBlueprint")
# 机器人管理页面
@robot_bp.route('/robot_management')
@robot_bp.route('/')
@login_required
def robot_management():
return render_template('robot_management.html')

View File

@@ -342,8 +342,10 @@
},
methods: {
loadContactsData() {
// 修改API请求路径从 /api/contacts/ 改为 /contacts/api/
// 加载统计数据
axios.get('/api/contacts/statistics')
axios.get('/contacts/api/statistics')
.then(response => {
if (response.data.success) {
this.statistics = response.data.data;
@@ -355,7 +357,7 @@
});
// 加载群组数据
axios.get('/api/contacts/groups')
axios.get('/contacts/api/groups')
.then(response => {
if (response.data.success) {
const groups = response.data.data.groups;
@@ -371,7 +373,7 @@
});
// 加载个人联系人数据
axios.get('/api/contacts/personal')
axios.get('/contacts/api/personal')
.then(response => {
if (response.data.success) {
const personal = response.data.data.personal;
@@ -387,7 +389,7 @@
});
// 加载公众号数据
axios.get('/api/contacts/official')
axios.get('/contacts/api/official')
.then(response => {
if (response.data.success) {
const official = response.data.data.official;
@@ -403,7 +405,7 @@
});
// 加载公共好友数据
axios.get('/api/contacts/public')
axios.get('/contacts/api/public')
.then(response => {
if (response.data.success) {
const publicFriends = response.data.data.public;

View File

@@ -199,7 +199,7 @@
},
methods: {
loadGroups() {
axios.get('/api/robot/groups')
axios.get('/robot/api/groups')
.then(response => {
if (response.data.success) {
this.groups = response.data.data || [];
@@ -219,7 +219,7 @@
this.currentGroupId = group.group_id;
this.currentGroupName = group.group_name || group.group_id;
axios.get(`/api/robot/group/${group.group_id}/permissions`)
axios.get(`/robot/api/group/${group.group_id}/permissions`)
.then(response => {
if (response.data.success) {
// 添加布尔值属性用于switch组件
@@ -241,7 +241,7 @@
togglePermission(permission) {
const newStatus = permission.statusBool ? 'enabled' : 'disabled';
axios.post(`/api/robot/group/${this.currentGroupId}/permissions`, {
axios.post(`/robot/api/group/${this.currentGroupId}/permissions`, {
feature_id: permission.feature_id,
status: newStatus
})
@@ -269,7 +269,7 @@
this.updateAllPermissions('disabled');
},
updateAllPermissions(status) {
axios.post(`/api/robot/group/${this.currentGroupId}/permissions`, {
axios.post(`/robot/api/group/${this.currentGroupId}/permissions`, {
status: status
})
.then(response => {
@@ -292,7 +292,7 @@
toggleRobotStatus(group) {
const newStatus = group.robot_status === 'enabled' ? 'disabled' : 'enabled';
axios.post(`/api/robot/group/${group.group_id}/status`, {
axios.post(`/robot/api/group/${group.group_id}/status`, {
status: newStatus
})
.then(response => {
@@ -315,7 +315,7 @@
submitAddGroup() {
this.$refs.addGroupForm.validate(valid => {
if (valid) {
axios.post('/api/robot/group', {
axios.post('/robot/api/group', {
group_id: this.addGroupForm.groupId
})
.then(response => {
@@ -347,7 +347,7 @@
return;
}
axios.post('/api/robot/batch_operation', {
axios.post('/robot/api/batch_operation', {
operation: 'update_status',
group_ids: this.selectedGroups,
status: status
@@ -381,7 +381,7 @@
cancelButtonText: '取消',
type: 'danger'
}).then(() => {
axios.post('/api/robot/batch_operation', {
axios.post('/robot/api/batch_operation', {
operation: 'remove_groups',
group_ids: this.selectedGroups
})
@@ -408,7 +408,7 @@
// 获取消息趋势数据
const days = parseInt(this.timeRange || 7);
axios.get(`/api/robot/group/${group.group_id}/message_trend?days=${days}`)
axios.get(`/robot/api/group/${group.group_id}/message_trend?days=${days}`)
.then(response => {
if (response.data.success) {
this.messageTrendData = response.data.data || { dates: [], counts: [] };