You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.4 KiB

from . import api
from web.common.utils import login_required
from quart import jsonify, request
from core.DBManager import mDBM
@api.route('/warn/search_warn',methods=['POST'])
@login_required
async def warn_get(): #新增算法
#获取查询参数
json_data = await request.get_json()
s_count = json_data.get('s_count','')
e_count = json_data.get('e_count','')
model_name = json_data.get('model_name','')
channel_id = json_data.get('channel_id','')
start_time = json_data.get('start_time','')
end_time = json_data.get('end_time','')
# 动态拼接 SQL 语句
sql = "SELECT * FROM warn WHERE 1=1"
if model_name:
sql += f" AND model_name = {model_name}"
if channel_id:
sql += f" AND channel_id = {channel_id}"
if start_time and end_time:
sql += f" AND creat_time BETWEEN {start_time} AND {end_time}"
# 增加倒序排列和分页
sql += f" ORDER BY creat_time DESC LIMIT {e_count} OFFSET {s_count}"
# 使用SQLAlchemy执行查询
try:
print(sql)
data = mDBM.do_select(sql)
# 将数据转换为JSON格式返回给前端
warn_list = [{"ID": warn[0], "model_name": warn[1], "video_path": warn[2], "img_path": warn[3],
"creat_time": warn[4], "channel_id": warn[5]} for warn in data]
return jsonify(warn_list)
except Exception as e:
return jsonify({"error": str(e)}), 500