From c765b03656f07036b5d9e99e2d649bf3d4414b29 Mon Sep 17 00:00:00 2001 From: liuwei Date: Tue, 10 Jun 2025 12:25:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E6=8E=A8=E9=80=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/dashboard/blueprints/message_push.py | 60 ++++++++++++---------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/admin/dashboard/blueprints/message_push.py b/admin/dashboard/blueprints/message_push.py index dc324ad..05af7ab 100644 --- a/admin/dashboard/blueprints/message_push.py +++ b/admin/dashboard/blueprints/message_push.py @@ -69,6 +69,7 @@ def message_push_management(): """消息推送管理页面""" return render_template('message_push_management.html') + # API路由 @message_push_bp.route('/api/tasks', methods=['GET']) @login_required @@ -81,11 +82,11 @@ def api_tasks_list(): end_time = request.args.get('end_time') page = int(request.args.get('page', 1)) limit = int(request.args.get('limit', 20)) - + # 获取任务列表 db = current_app.dashboard_server.task_db tasks, total = db.get_tasks_list(status, start_time, end_time, page, limit) - + return jsonify({ "success": True, "data": { @@ -99,6 +100,7 @@ def api_tasks_list(): logger.error(f"获取任务列表失败: {e}") return jsonify({"success": False, "error": str(e)}), 500 + @message_push_bp.route('/api/tasks', methods=['POST']) @login_required def api_create_task(): @@ -107,22 +109,22 @@ def api_create_task(): data = request.json if not data: return jsonify({"success": False, "error": "无效的请求数据"}), 400 - + # 获取用户名 username = session.get('username') if not username: return jsonify({"success": False, "error": "未登录或会话已过期"}), 401 - + # 生成任务ID data['task_id'] = str(uuid.uuid4()) data['creator_id'] = username - + # 创建任务 db = current_app.dashboard_server.task_db task = db.create_task(data) if not task: return jsonify({"success": False, "error": "创建任务失败"}), 500 - + return jsonify({ "success": True, "data": { @@ -133,6 +135,7 @@ def api_create_task(): logger.error(f"创建任务失败: {e}") return jsonify({"success": False, "error": str(e)}), 500 + @message_push_bp.route('/api/tasks/', methods=['PUT']) @login_required def api_update_task(task_id): @@ -141,17 +144,17 @@ def api_update_task(task_id): data = request.json if not data: return jsonify({"success": False, "error": "无效的请求数据"}), 400 - + # 获取任务 db = current_app.dashboard_server.task_db task = db.get_task(task_id) if not task: return jsonify({"success": False, "error": "任务不存在"}), 404 - + # 更新任务 if not db.update_task(task_id, data): return jsonify({"success": False, "error": "更新任务失败"}), 500 - + # 获取更新后的任务 updated_task = db.get_task(task_id) return jsonify({ @@ -164,6 +167,7 @@ def api_update_task(task_id): logger.error(f"更新任务失败: {e}") return jsonify({"success": False, "error": str(e)}), 500 + @message_push_bp.route('/api/tasks/', methods=['DELETE']) @login_required def api_delete_task(task_id): @@ -174,11 +178,11 @@ def api_delete_task(task_id): task = db.get_task(task_id) if not task: return jsonify({"success": False, "error": "任务不存在"}), 404 - + # 删除任务 if not db.delete_task(task_id): return jsonify({"success": False, "error": "删除任务失败"}), 500 - + return jsonify({ "success": True, "message": "任务已删除" @@ -187,6 +191,7 @@ def api_delete_task(task_id): logger.error(f"删除任务失败: {e}") return jsonify({"success": False, "error": str(e)}), 500 + @message_push_bp.route('/api/tasks//pause', methods=['POST']) @login_required def api_pause_task(task_id): @@ -197,11 +202,11 @@ def api_pause_task(task_id): task = db.get_task(task_id) if not task: return jsonify({"success": False, "error": "任务不存在"}), 404 - + # 暂停任务 if not db.update_task(task_id, {'status': 'paused'}): return jsonify({"success": False, "error": "暂停任务失败"}), 500 - + return jsonify({ "success": True, "message": "任务已暂停" @@ -210,6 +215,7 @@ def api_pause_task(task_id): logger.error(f"暂停任务失败: {e}") return jsonify({"success": False, "error": str(e)}), 500 + @message_push_bp.route('/api/tasks//resume', methods=['POST']) @login_required def api_resume_task(task_id): @@ -220,11 +226,11 @@ def api_resume_task(task_id): task = db.get_task(task_id) if not task: return jsonify({"success": False, "error": "任务不存在"}), 404 - + # 恢复任务 if not db.update_task(task_id, {'status': 'scheduled'}): return jsonify({"success": False, "error": "恢复任务失败"}), 500 - + return jsonify({ "success": True, "message": "任务已恢复" @@ -233,6 +239,7 @@ def api_resume_task(task_id): logger.error(f"恢复任务失败: {e}") return jsonify({"success": False, "error": str(e)}), 500 + @message_push_bp.route('/api/tasks//preview', methods=['POST']) @login_required def api_preview_task(task_id): @@ -243,28 +250,28 @@ def api_preview_task(task_id): task = db.get_task(task_id) if not task: return jsonify({"success": False, "error": "任务不存在"}), 404 - + # 获取机器人实例 server = current_app.dashboard_server if not server or not server.client: return jsonify({"success": False, "error": "机器人未初始化"}), 500 - - preview_user = session.get('user_id') + # 获取用户名 + preview_user = session.get('username') if not preview_user: return jsonify({"success": False, "error": "未登录或会话已过期"}), 401 - + # 发送文本消息 if task.get('content_text'): send_message_in_thread(server.client.send_text_message, preview_user, task['content_text']) - + # 发送图片消息 if task.get('content_image'): send_message_in_thread(server.client.send_image_message, preview_user, task['content_image']) - + # 发送链接消息 if task.get('content_link'): send_message_in_thread(server.client.send_link_message, preview_user, task['content_link']) - + # 发送小程序消息 if task.get('content_miniprogram'): miniprogram = task['content_miniprogram'] @@ -276,7 +283,7 @@ def api_preview_task(task_id): miniprogram.get('pagepath'), miniprogram.get('thumb_url') ) - + return jsonify({ "success": True, "message": "预览已发送" @@ -285,6 +292,7 @@ def api_preview_task(task_id): logger.error(f"发送预览失败: {e}") return jsonify({"success": False, "error": str(e)}), 500 + @message_push_bp.route('/api/tasks//logs', methods=['GET']) @login_required def api_task_logs(task_id): @@ -293,15 +301,15 @@ def api_task_logs(task_id): # 获取查询参数 page = int(request.args.get('page', 1)) limit = int(request.args.get('limit', 20)) - + # 查询日志 db = current_app.dashboard_server.task_db logs_data = db.get_task_logs_with_pagination(task_id, page, limit) - + return jsonify({ "success": True, "data": logs_data }) except Exception as e: logger.error(f"获取任务日志失败: {e}") - return jsonify({"success": False, "error": str(e)}), 500 \ No newline at end of file + return jsonify({"success": False, "error": str(e)}), 500