调整json格式存储link信息
This commit is contained in:
@@ -8,6 +8,8 @@ from datetime import datetime
|
||||
from flask import Blueprint, render_template, jsonify, request, current_app, session
|
||||
from pathlib import Path
|
||||
from werkzeug.utils import secure_filename
|
||||
|
||||
from wechat_ipad.models.appmsg_xml import LINK_XML_NORMAL
|
||||
from .auth import login_required
|
||||
from loguru import logger
|
||||
|
||||
@@ -268,32 +270,49 @@ def api_preview_task(task_id):
|
||||
preview_user = session.get('username')
|
||||
if not preview_user:
|
||||
return jsonify({"success": False, "error": "未登录或会话已过期"}), 401
|
||||
|
||||
|
||||
# 获取预览接收者并解析JSON
|
||||
preview_recipients_str = task.get("preview_recipients", "[]")
|
||||
try:
|
||||
preview_recipients = json.loads(preview_recipients_str)
|
||||
except json.JSONDecodeError:
|
||||
return jsonify({"success": False, "error": "预览接收者格式错误"}), 400
|
||||
|
||||
|
||||
if not preview_recipients:
|
||||
return jsonify({"success": False, "error": "未设置预览接收者"}), 400
|
||||
|
||||
|
||||
# 为每个接收者发送预览消息
|
||||
for recipient in preview_recipients:
|
||||
try:
|
||||
# 发送文本消息
|
||||
if task.get('content_text'):
|
||||
send_message_in_thread(server.client.send_text_message, recipient, task['content_text'])
|
||||
|
||||
|
||||
# 发送图片消息
|
||||
if task.get('content_image'):
|
||||
send_message_in_thread(server.client.send_image_message, recipient, Path(task['content_image']))
|
||||
|
||||
|
||||
# 发送链接消息
|
||||
if task.get('content_link'):
|
||||
send_message_in_thread(server.client.send_link_message, recipient, task['content_link'])
|
||||
|
||||
try:
|
||||
link_data = json.loads(task['content_link'])
|
||||
|
||||
# content_link json 读取内容
|
||||
xml_content = f"{LINK_XML_NORMAL}".format(title=link_data.get('title', ''),
|
||||
des=link_data.get('des', ''),
|
||||
url=link_data.get('url', ''),
|
||||
thumburl=link_data.get('thumburl', '')
|
||||
)
|
||||
|
||||
send_message_in_thread(
|
||||
server.client.send_link_xml_message,
|
||||
xml_content,
|
||||
recipient
|
||||
)
|
||||
except json.JSONDecodeError:
|
||||
logger.error(f"解析链接内容失败: {task['content_link']}")
|
||||
continue
|
||||
|
||||
# # 发送小程序消息
|
||||
# if task.get('content_miniprogram'):
|
||||
# miniprogram = task['content_miniprogram']
|
||||
@@ -347,17 +366,17 @@ def api_statistics():
|
||||
try:
|
||||
# 获取任务数据库实例
|
||||
db = current_app.dashboard_server.task_db
|
||||
|
||||
|
||||
# 获取各种状态的任务数量
|
||||
total = db.get_tasks_count()
|
||||
scheduled = db.get_tasks_count_by_status('scheduled')
|
||||
paused = db.get_tasks_count_by_status('paused')
|
||||
completed = db.get_tasks_count_by_status('completed')
|
||||
failed = db.get_tasks_count_by_status('failed')
|
||||
|
||||
|
||||
# 获取今日任务数量
|
||||
today = db.get_tasks_count_by_date(datetime.now().strftime('%Y-%m-%d'))
|
||||
|
||||
|
||||
return jsonify({
|
||||
"success": True,
|
||||
"data": {
|
||||
@@ -382,28 +401,28 @@ def upload_file():
|
||||
'success': False,
|
||||
'message': '没有文件'
|
||||
})
|
||||
|
||||
|
||||
file = request.files['file']
|
||||
if file.filename == '':
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'message': '没有选择文件'
|
||||
})
|
||||
|
||||
|
||||
if file and allowed_file(file.filename):
|
||||
# 生成安全的文件名
|
||||
filename = secure_filename(file.filename)
|
||||
# 生成唯一文件名
|
||||
unique_filename = f"{uuid.uuid4().hex}_{filename}"
|
||||
|
||||
|
||||
# 确保上传目录存在
|
||||
upload_folder = os.path.join(current_app.root_path, 'static', 'uploads')
|
||||
os.makedirs(upload_folder, exist_ok=True)
|
||||
|
||||
|
||||
# 保存文件
|
||||
file_path = os.path.join(upload_folder, unique_filename)
|
||||
file.save(file_path)
|
||||
|
||||
|
||||
# 返回文件的绝对路径
|
||||
return jsonify({
|
||||
'success': True,
|
||||
@@ -411,7 +430,7 @@ def upload_file():
|
||||
'url': file_path # 返回绝对路径
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'message': '不支持的文件类型'
|
||||
@@ -431,17 +450,17 @@ def audit_task(task_id):
|
||||
'success': False,
|
||||
'message': '任务不存在'
|
||||
})
|
||||
|
||||
|
||||
# 检查任务状态
|
||||
if task['status'] != 'draft':
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'message': '只能审核草稿状态的任务'
|
||||
})
|
||||
|
||||
|
||||
# 更新任务状态为已排期
|
||||
db.update_task(task_id, {'status': 'scheduled'})
|
||||
|
||||
|
||||
# 记录操作日志
|
||||
db.log_task_action({
|
||||
'log_id': f"log_{datetime.now().strftime('%Y%m%d%H%M%S')}",
|
||||
@@ -450,7 +469,7 @@ def audit_task(task_id):
|
||||
'user_id': session.get('user_id'),
|
||||
'changes': {'status': 'scheduled', 'action': 'audit'}
|
||||
})
|
||||
|
||||
|
||||
return jsonify({
|
||||
'success': True,
|
||||
'message': '审核成功'
|
||||
|
||||
Reference in New Issue
Block a user