from datetime import datetime from flask import Blueprint, jsonify, request # 导入数据库工具 from db_utils import get_db_connection, close_db_connection # 创建Flask蓝图 api_bp = Blueprint('api', __name__) # API函数1: 返回最新的参数配置记录 @api_bp.route('/api/parameters', methods=['GET']) def get_parameters(): try: # 连接数据库 conn = get_db_connection() cursor = conn.cursor() # 查询所有参数配置记录并只返回第一条(最新的一条) cursor.execute(""" SELECT id, param1, param2, param3, param4, param5, update_time FROM parameter_config ORDER BY update_time DESC LIMIT 1 """) # 获取第一条查询结果 row = cursor.fetchone() # 关闭数据库连接 close_db_connection(conn) # 如果没有查询到数据 if not row: return jsonify({ 'success': False, 'error': '未找到参数配置记录', 'data': None }), 404 # 格式化查询结果 parameter = { 'id': row[0], 'param1': row[1], 'param2': row[2], 'param3': row[3], 'param4': row[4], 'param5': row[5], 'update_time': row[6] } # 返回JSON格式的数据 return jsonify({ 'success': True, 'data': parameter }) except Exception as e: # 确保在异常情况下也关闭连接 if 'conn' in locals() and conn: close_db_connection(conn) return jsonify({ 'success': False, 'error': str(e), 'data': [] }), 500 # API函数2: 返回query_history表中所有results_count=-1的数据 @api_bp.route('/api/pending-queries', methods=['GET']) def get_pending_queries(): try: # 连接数据库 conn = get_db_connection() cursor = conn.cursor() # 查询query_history表中results_count=-1的所有数据 cursor.execute(""" SELECT id, query_date, plate_number, phone, results_count, query_ip, user_id FROM query_history WHERE results_count = -1 ORDER BY query_date DESC """) # 获取所有查询结果 rows = cursor.fetchall() # 关闭数据库连接 close_db_connection(conn) # 格式化查询结果 pending_queries = [] for row in rows: pending_query = { 'id': row['id'], 'query_date': row['query_date'], 'plate_number': row['plate_number'], 'phone': row['phone'], 'results_count': row['results_count'], 'query_ip': row['query_ip'], 'user_id': row['user_id'] if 'user_id' in row.keys() else None } pending_queries.append(pending_query) # 返回JSON格式的数据 return jsonify({ 'success': True, 'data': pending_queries, 'count': len(pending_queries) }) except Exception as e: # 确保在异常情况下也关闭连接 if 'conn' in locals() and conn: close_db_connection(conn) return jsonify({ 'success': False, 'error': str(e), 'data': [] }), 500 # API函数3: 更新query_history表中对应记录的results_count值 @api_bp.route('/api/update-query-result', methods=['POST']) def update_query_result(): try: # 获取前端提交的数据 data = request.json if not data: return jsonify({ 'success': False, 'error': '请求数据不能为空', 'data': None }), 400 # 检查必要的字段是否存在 if 'id' not in data or 'results_count' not in data: return jsonify({ 'success': False, 'error': '缺少必要的字段: id 或 results_count', 'data': None }), 400 # 获取id和results_count值 query_id = data['id'] results_count = data['results_count'] # 连接数据库 conn = get_db_connection() cursor = conn.cursor() # 更新query_history表中的对应记录 cursor.execute(""" UPDATE query_history SET results_count = ? WHERE id = ? """, (results_count, query_id)) # 提交更改 conn.commit() # 获取受影响的行数 affected_rows = cursor.rowcount # 关闭数据库连接 close_db_connection(conn) # 检查是否有记录被更新 if affected_rows == 0: return jsonify({ 'success': False, 'error': '未找到id为 {} 的记录'.format(query_id), 'data': None }), 404 # 返回成功响应 return jsonify({ 'success': True, 'message': '记录更新成功', 'data': { 'id': query_id, 'results_count': results_count } }) except Exception as e: # 确保在异常情况下也关闭连接 if 'conn' in locals() and conn: close_db_connection(conn) return jsonify({ 'success': False, 'error': str(e), 'data': None }), 500