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.
project/Src/command_center/web-command-center/database/init.sql

99 lines
4.0 KiB

-- 创建数据库
CREATE DATABASE IF NOT EXISTS command_center CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE command_center;
-- 创建用户表
CREATE TABLE IF NOT EXISTS users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
role ENUM('admin', 'operator') NOT NULL DEFAULT 'operator',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建无人机表
CREATE TABLE IF NOT EXISTS drones (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
type VARCHAR(50) NOT NULL,
status ENUM('active', 'idle', 'error') NOT NULL DEFAULT 'idle',
latitude DECIMAL(10, 8),
longitude DECIMAL(11, 8),
battery INT DEFAULT 100,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建路径规划记录表
CREATE TABLE IF NOT EXISTS path_plans (
id INT PRIMARY KEY AUTO_INCREMENT,
drone_id INT NOT NULL,
start_latitude DECIMAL(10, 8) NOT NULL,
start_longitude DECIMAL(11, 8) NOT NULL,
end_latitude DECIMAL(10, 8) NOT NULL,
end_longitude DECIMAL(11, 8) NOT NULL,
path_points JSON,
status ENUM('pending', 'executing', 'completed', 'failed') NOT NULL DEFAULT 'pending',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (drone_id) REFERENCES drones(id)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 删除现有威胁区表(如果存在)以确保结构正确
DROP TABLE IF EXISTS threat_zones;
-- 创建威胁区表
CREATE TABLE threat_zones (
id INT PRIMARY KEY AUTO_INCREMENT,
type ENUM('radar', 'missile', 'aircraft', 'ground', 'weather') NOT NULL,
level ENUM('low', 'medium', 'high', 'critical') NOT NULL,
description TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
geometry_type ENUM('circle', 'polygon', 'rectangle') NOT NULL,
geometry_data JSON NOT NULL COMMENT '存储几何形状数据',
time_start TIMESTAMP NULL COMMENT '威胁区开始时间',
time_end TIMESTAMP NULL COMMENT '威胁区结束时间',
status ENUM('active', 'inactive') NOT NULL DEFAULT 'active',
created_by INT DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (created_by) REFERENCES users(id),
INDEX idx_type (type),
INDEX idx_level (level),
INDEX idx_status (status)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建操作日志表
CREATE TABLE IF NOT EXISTS operation_logs (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
action VARCHAR(50) NOT NULL,
target_type VARCHAR(50) NOT NULL,
target_id INT NOT NULL,
details JSON,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 插入默认管理员用户
INSERT INTO users (username, password, role)
VALUES ('admin', '$2a$10$X7UrH5QxX5QxX5QxX5QxX.5QxX5QxX5QxX5QxX5QxX5QxX5QxX5Qx', 'admin')
ON DUPLICATE KEY UPDATE username = username;
-- 插入示例威胁区数据
INSERT INTO threat_zones (type, level, description, geometry_type, geometry_data, time_start, time_end, status)
VALUES
('radar', 'high', 'Enemy radar station', 'circle',
JSON_OBJECT('center', JSON_ARRAY(116.397428, 39.91), 'radius', 2000),
'2024-01-01 00:00:00', '2024-12-31 23:59:59', 'active'),
('missile', 'critical', 'Missile launch site', 'circle',
JSON_OBJECT('center', JSON_ARRAY(116.42, 39.89), 'radius', 3000),
'2024-01-01 00:00:00', '2024-12-31 23:59:59', 'active'),
('aircraft', 'medium', 'Air patrol zone', 'polygon',
JSON_OBJECT('path', JSON_ARRAY(
JSON_ARRAY(116.38, 39.92),
JSON_ARRAY(116.40, 39.92),
JSON_ARRAY(116.40, 39.90),
JSON_ARRAY(116.38, 39.90)
)),
'2024-01-01 06:00:00', '2024-01-01 18:00:00', 'active');