home0923
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
from flask import Flask, render_template, request, redirect, url_for, session, jsonify
|
||||
from datetime import datetime, timedelta
|
||||
import os
|
||||
import random
|
||||
from flask import Flask, render_template, request, redirect, url_for, session
|
||||
|
||||
# 导入用户模块
|
||||
@@ -58,87 +57,6 @@ def init_db():
|
||||
)
|
||||
''')
|
||||
|
||||
# 插入一些测试车辆数据
|
||||
try:
|
||||
test_cars = [
|
||||
('京A12345', '13800138001', '110101199001011234', '张三', 'zhangsan@example.com', '北京市朝阳区'),
|
||||
('沪B54321', '13900139001', '310101199001012345', '李四', 'lisi@example.com', '上海市静安区'),
|
||||
('粤C67890', '13700137001', '440401199001013456', '王五', 'wangwu@example.com', '广东省珠海市'),
|
||||
('苏D12345', '13600136001', '320401199001014567', '赵六', 'zhaoliu@example.com', '江苏省常州市'),
|
||||
('浙E54321', '13500135001', '330501199001015678', '钱七', 'qianqi@example.com', '浙江省湖州市')
|
||||
]
|
||||
cursor.executemany("INSERT INTO car_owners (plate_number, phone, id_card, name, email, address) VALUES (?, ?, ?, ?, ?, ?)", test_cars)
|
||||
except Exception as e:
|
||||
# 数据已存在或其他错误,忽略
|
||||
print(f"插入测试数据时出错: {e}")
|
||||
|
||||
# 单独处理查询历史演示数据,确保每次都能插入20条记录
|
||||
try:
|
||||
# 先删除现有的演示数据
|
||||
cursor.execute("DELETE FROM query_history WHERE department IN ('IT部', '财务部', '人事部', '市场部', '行政部')")
|
||||
|
||||
# 生成最近20天的随机查询历史
|
||||
provinces = ['京', '沪', '粤', '苏', '浙', '鲁', '豫', '川', '湘', '鄂']
|
||||
cities = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K']
|
||||
departments = ['IT部', '财务部', '人事部', '市场部', '行政部']
|
||||
|
||||
# 获取现有的车辆信息,用于生成能匹配的查询历史
|
||||
cursor.execute("SELECT plate_number, phone FROM car_owners")
|
||||
existing_cars = cursor.fetchall()
|
||||
|
||||
for i in range(20):
|
||||
# 生成随机日期(最近20天内)
|
||||
days_ago = random.randint(0, 19)
|
||||
date = (datetime.now() - timedelta(days=days_ago)).strftime('%Y-%m-%d %H:%M:%S')
|
||||
|
||||
# 70%的概率使用已存在的车辆信息,30%的概率生成随机信息
|
||||
use_existing = random.random() < 0.7
|
||||
|
||||
if use_existing and existing_cars:
|
||||
# 使用已存在的车辆信息
|
||||
car_info = random.choice(existing_cars)
|
||||
if random.choice([True, False]):
|
||||
plate_number = car_info[0]
|
||||
phone = None
|
||||
else:
|
||||
plate_number = None
|
||||
phone = car_info[1]
|
||||
# 确保结果数量正确
|
||||
if plate_number:
|
||||
cursor.execute("SELECT COUNT(*) FROM car_owners WHERE plate_number = ?", (plate_number,))
|
||||
results_count = cursor.fetchone()[0]
|
||||
else:
|
||||
cursor.execute("SELECT COUNT(*) FROM car_owners WHERE phone = ?", (phone,))
|
||||
results_count = cursor.fetchone()[0]
|
||||
else:
|
||||
# 随机生成车牌号或手机号
|
||||
use_plate = random.choice([True, False])
|
||||
if use_plate:
|
||||
plate_number = f"{random.choice(provinces)}{random.choice(cities)}{random.randint(100000, 999999)}"
|
||||
phone = None
|
||||
else:
|
||||
plate_number = None
|
||||
phone = f"1{random.randint(3000000000, 9999999999)}"
|
||||
# 检查是否存在匹配结果
|
||||
if plate_number:
|
||||
cursor.execute("SELECT COUNT(*) FROM car_owners WHERE plate_number = ?", (plate_number,))
|
||||
results_count = cursor.fetchone()[0]
|
||||
else:
|
||||
cursor.execute("SELECT COUNT(*) FROM car_owners WHERE phone = ?", (phone,))
|
||||
results_count = cursor.fetchone()[0]
|
||||
|
||||
# 随机部门
|
||||
department = random.choice(departments)
|
||||
|
||||
# 生成随机IP地址
|
||||
query_ip = f"192.168.{random.randint(0, 255)}.{random.randint(1, 254)}"
|
||||
|
||||
cursor.execute(
|
||||
"INSERT INTO query_history (department, query_date, plate_number, phone, results_count, query_ip) VALUES (?, ?, ?, ?, ?, ?)",
|
||||
(department, date, plate_number, phone, results_count, query_ip)
|
||||
)
|
||||
except Exception as e:
|
||||
print(f"插入查询历史数据时出错: {e}")
|
||||
try:
|
||||
conn.commit()
|
||||
except Exception as e:
|
||||
@@ -184,15 +102,16 @@ def query():
|
||||
# 获取客户端IP地址
|
||||
query_ip = request.remote_addr
|
||||
|
||||
# 从用户信息表获取部门信息
|
||||
# 从用户信息表获取用户ID
|
||||
user_id = None
|
||||
try:
|
||||
# 可以复用同一个连接,不需要创建新连接
|
||||
cursor.execute("SELECT department FROM users WHERE username = ?", (session['username'],))
|
||||
user_dept = cursor.fetchone()
|
||||
if user_dept:
|
||||
department = user_dept[0]
|
||||
cursor.execute("SELECT id FROM users WHERE username = ?", (session['username'],))
|
||||
user_info = cursor.fetchone()
|
||||
if user_info:
|
||||
user_id = user_info[0]
|
||||
except Exception as e:
|
||||
print(f"获取部门信息时出错: {e}")
|
||||
print(f"获取用户信息时出错: {e}")
|
||||
|
||||
# 记录查询历史到数据库
|
||||
try:
|
||||
@@ -207,8 +126,8 @@ def query():
|
||||
results_count = len(results)
|
||||
|
||||
cursor.execute(
|
||||
"INSERT INTO query_history (department, query_date, plate_number, phone, results_count, query_ip) VALUES (?, ?, ?, ?, ?, ?)",
|
||||
(department, query_date, plate_number if plate_number else None, phone if phone else None, results_count, query_ip)
|
||||
"INSERT INTO query_history (query_date, plate_number, phone, results_count, query_ip, user_id) VALUES (?, ?, ?, ?, ?, ?)",
|
||||
(query_date, plate_number if plate_number else None, phone if phone else None, results_count, query_ip, user_id)
|
||||
)
|
||||
conn.commit()
|
||||
except Exception as e:
|
||||
@@ -300,7 +219,14 @@ def get_recent_queries():
|
||||
cursor = conn.cursor()
|
||||
|
||||
try:
|
||||
cursor.execute("SELECT id, department, query_date, plate_number, phone, results_count, query_ip FROM query_history ORDER BY query_date DESC LIMIT 20")
|
||||
# 使用JOIN操作获取用户姓名和部门信息
|
||||
cursor.execute("""
|
||||
SELECT qh.id, qh.query_date, qh.plate_number, qh.phone, qh.results_count, qh.query_ip, qh.user_id,
|
||||
u.name AS user_name, u.department AS user_department
|
||||
FROM query_history qh
|
||||
LEFT JOIN users u ON qh.user_id = u.id
|
||||
ORDER BY qh.query_date DESC LIMIT 20
|
||||
""")
|
||||
recent_queries = cursor.fetchall()
|
||||
|
||||
# 格式化查询历史数据
|
||||
@@ -308,12 +234,14 @@ def get_recent_queries():
|
||||
for q in recent_queries:
|
||||
formatted_recent_queries.append({
|
||||
'id': q[0],
|
||||
'department': q[1],
|
||||
'query_date': q[2],
|
||||
'plate_number': q[3] if q[3] else '未提供',
|
||||
'phone': q[4] if q[4] else '未提供',
|
||||
'results_count': q[5],
|
||||
'query_ip': q[6]
|
||||
'query_date': q[1],
|
||||
'plate_number': q[2] if q[2] else '未提供',
|
||||
'phone': q[3] if q[3] else '未提供',
|
||||
'results_count': q[4],
|
||||
'query_ip': q[5],
|
||||
'user_id': q[6] if len(q) > 6 else None,
|
||||
'user_name': q[7] if len(q) > 7 else '未知',
|
||||
'user_department': q[8] if len(q) > 8 else '未知'
|
||||
})
|
||||
|
||||
return formatted_recent_queries
|
||||
@@ -340,7 +268,7 @@ if __name__ == '__main__':
|
||||
|
||||
try:
|
||||
init_db()
|
||||
app.run(debug=True)
|
||||
app.run(debug=True,host="0.0.0.0",port=99)
|
||||
finally:
|
||||
# 确保在程序退出时关闭数据库连接
|
||||
close_global_connection()
|
||||
Reference in New Issue
Block a user