调整json格式存储link信息

This commit is contained in:
liuwei
2025-06-10 15:13:37 +08:00
parent 1d61576ae7
commit 8ebe09eeb5
3 changed files with 80 additions and 26 deletions

View File

@@ -149,34 +149,53 @@ def api_create_task():
@message_push_bp.route('/api/tasks/<task_id>', methods=['PUT'])
@login_required
def api_update_task(task_id):
"""更新任务API"""
def update_task(task_id):
"""更新任务"""
try:
data = request.json
data = request.get_json()
if not data:
return jsonify({"success": False, "error": "无效的请求数据"}), 400
# 获取任务
return jsonify({
'success': False,
'message': '无效的请求数据'
})
# 获取任务信息
db = current_app.dashboard_server.task_db
task = db.get_task(task_id)
if not task:
return jsonify({"success": False, "error": "任务不存在"}), 404
return jsonify({
'success': False,
'message': '任务不存在'
})
# 检查任务状态
if task['status'] not in ['draft', 'paused']:
return jsonify({
'success': False,
'message': '只能编辑草稿或已暂停状态的任务'
})
# 更新任务
if not db.update_task(task_id, data):
return jsonify({"success": False, "error": "更新任务失败"}), 500
# 获取更新后的任务
updated_task = db.get_task(task_id)
db.update_task(task_id, data)
# 记录操作日志
db.log_task_action({
'log_id': f"log_{datetime.now().strftime('%Y%m%d%H%M%S')}",
'task_id': task_id,
'action': 'update',
'user_id': session.get('user_id'),
'changes': data
})
return jsonify({
"success": True,
"data": {
"task": updated_task
}
'success': True,
'message': '更新成功'
})
except Exception as e:
logger.error(f"更新任务失败: {e}")
return jsonify({"success": False, "error": str(e)}), 500
return jsonify({
'success': False,
'message': f'更新失败: {str(e)}'
})
@message_push_bp.route('/api/tasks/<task_id>', methods=['DELETE'])

View File

@@ -564,15 +564,23 @@ new Vue({
formData.content_link = JSON.stringify(formData.content_link);
}
const response = await axios.post('/message_push/api/tasks', formData);
let response;
if (formData.task_id) {
// 更新任务
response = await axios.put(`/message_push/api/tasks/${formData.task_id}`, formData);
} else {
// 创建新任务
response = await axios.post('/message_push/api/tasks', formData);
}
if (response.data.success) {
this.$message.success('保存任务成功');
this.$message.success(formData.task_id ? '更新任务成功' : '创建任务成功');
this.taskDialogVisible = false;
this.loadTasks();
this.loadStatistics();
}
} catch (error) {
this.$message.error('保存任务失败');
this.$message.error(formData.task_id ? '更新任务失败' : '创建任务失败');
}
}
});
@@ -844,7 +852,18 @@ new Vue({
return statusMap[status] || '';
},
formatDateTime(datetime) {
return new Date(datetime).toLocaleString();
if (!datetime) return '';
// 创建日期对象并转换为本地时间
const date = new Date(datetime);
// 使用 padStart 确保月份和日期是两位数
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
},
refreshTasks() {
this.loadTasks();

View File

@@ -69,9 +69,9 @@ class ToolMixin(WechatAPIClientBase):
return json_resp.get("Data").get("data").get("buffer")
else:
self.error_handler(json_resp)
async def download_attach_xml(self, xml_str: str) -> str:
#读取消息信息,进行处理
async def download_attach_xml(self, xml_str: str) -> str:
# 读取消息信息,进行处理
import xml.etree.ElementTree as ET
root = ET.fromstring(xml_str)
appmsg = root.find("appmsg")
@@ -146,6 +146,22 @@ class ToolMixin(WechatAPIClientBase):
else:
self.error_handler(json_resp)
async def friend_circle_upload(self, base64: str) -> str:
# / FriendCircle / Upload
if not self.wxid:
raise UserLoggedOut("请先登录")
async with aiohttp.ClientSession() as session:
json_param = {"Wxid": self.wxid, "Base64": base64}
response = await session.post(f'http://{self.ip}:{self.port}/api/FriendCircle/Upload', json=json_param)
json_resp = await response.json()
if json_resp.get("Success"):
return json_resp.get("Data").get("ThumbUrls")[0].get("Url")
else:
self.error_handler(json_resp)
async def set_step(self, count: int) -> bool:
"""设置步数。