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

757 lines
53 KiB
SQL

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
Navicat Premium Dump SQL
Source Server : JavaProjects
Source Server Type : MySQL
Source Server Version : 80040 (8.0.40)
Source Host : localhost:3306
Source Schema : attendance_system
Target Server Type : MySQL
Target Server Version : 80040 (8.0.40)
File Encoding : 65001
Date: 04/06/2026 11:38:13
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for att_detail
-- ----------------------------
DROP TABLE IF EXISTS `att_detail`;
CREATE TABLE `att_detail` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`task_id` bigint UNSIGNED NOT NULL COMMENT '考勤任务ID',
`record_id` bigint UNSIGNED NOT NULL COMMENT '考勤记录ID',
`student_id` bigint UNSIGNED NOT NULL COMMENT '学生ID',
`student_no` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '学号',
`student_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '学生姓名',
`course_id` bigint UNSIGNED NOT NULL COMMENT '课程ID',
`classroom_id` bigint UNSIGNED NOT NULL COMMENT '教室ID',
`att_date` date NOT NULL COMMENT '考勤日期',
`check_in_time` datetime NULL DEFAULT NULL COMMENT '签到时间',
`check_out_time` datetime NULL DEFAULT NULL COMMENT '签退时间',
`att_status` tinyint NOT NULL DEFAULT 0 COMMENT '考勤状态0-未签到 1-正常 2-迟到 3-缺勤 4-早退 5-请假',
`check_type` tinyint NOT NULL DEFAULT 1 COMMENT '签到方式1-人脸识别 2-手动补签',
`face_similarity` decimal(5, 2) NULL DEFAULT NULL COMMENT '人脸相似度',
`face_image` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '抓拍人脸图片URL',
`device_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '签到设备ID',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注',
`school_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '所属学校ID',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_task_student`(`task_id` ASC, `student_id` ASC) USING BTREE,
INDEX `idx_record_id`(`record_id` ASC) USING BTREE,
INDEX `idx_student_id`(`student_id` ASC) USING BTREE,
INDEX `idx_att_status`(`att_status` ASC) USING BTREE,
INDEX `idx_att_date`(`att_date` ASC) USING BTREE,
INDEX `idx_course_id`(`course_id` ASC) USING BTREE,
INDEX `idx_school_id`(`school_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '考勤明细表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of att_detail
-- ----------------------------
-- ----------------------------
-- Table structure for att_record
-- ----------------------------
DROP TABLE IF EXISTS `att_record`;
CREATE TABLE `att_record` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`task_id` bigint UNSIGNED NOT NULL COMMENT '考勤任务ID',
`course_id` bigint UNSIGNED NOT NULL COMMENT '课程ID',
`classroom_id` bigint UNSIGNED NOT NULL COMMENT '教室ID',
`teacher_id` bigint UNSIGNED NOT NULL COMMENT '教师ID',
`att_date` date NOT NULL COMMENT '考勤日期',
`start_time` datetime NOT NULL COMMENT '开始时间',
`end_time` datetime NOT NULL COMMENT '结束时间',
`total_count` int NOT NULL DEFAULT 0 COMMENT '应到人数',
`actual_count` int NOT NULL DEFAULT 0 COMMENT '实到人数',
`absent_count` int NOT NULL DEFAULT 0 COMMENT '缺勤人数',
`late_count` int NOT NULL DEFAULT 0 COMMENT '迟到人数',
`leave_early_count` int NOT NULL DEFAULT 0 COMMENT '早退人数',
`attendance_rate` decimal(5, 2) NULL DEFAULT NULL COMMENT '出勤率%',
`absent_rate` decimal(5, 2) NULL DEFAULT NULL COMMENT '缺勤率%',
`record_status` tinyint NOT NULL DEFAULT 0 COMMENT '记录状态0-正常 1-异常',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '备注',
`school_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '所属学校ID',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_task_id`(`task_id` ASC) USING BTREE,
INDEX `idx_course_id`(`course_id` ASC) USING BTREE,
INDEX `idx_classroom_id`(`classroom_id` ASC) USING BTREE,
INDEX `idx_att_date`(`att_date` ASC) USING BTREE,
INDEX `idx_school_id`(`school_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '考勤记录汇总表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of att_record
-- ----------------------------
INSERT INTO `att_record` VALUES (1, 1, 1, 1, 4, '2024-06-01', '2024-06-01 08:00:00', '2024-06-01 09:40:00', 45, 44, 1, 0, 0, 97.78, 2.22, 0, NULL, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `att_record` VALUES (2, 2, 2, 2, 2, '2024-06-01', '2024-06-01 10:00:00', '2024-06-01 11:40:00', 38, 38, 0, 0, 0, 100.00, 0.00, 0, NULL, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `att_record` VALUES (3, 3, 3, 3, 3, '2024-06-01', '2024-06-01 14:00:00', '2024-06-01 15:40:00', 52, 49, 3, 0, 0, 94.23, 5.77, 0, NULL, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `att_record` VALUES (4, 4, 4, 4, 4, '2024-05-31', '2024-05-31 08:00:00', '2024-05-31 09:40:00', 40, 38, 2, 0, 0, 95.00, 5.00, 0, NULL, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `att_record` VALUES (5, 5, 5, 5, 5, '2024-05-31', '2024-05-31 10:00:00', '2024-05-31 11:40:00', 120, 108, 12, 0, 0, 90.00, 10.00, 0, NULL, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
-- ----------------------------
-- Table structure for att_rule
-- ----------------------------
DROP TABLE IF EXISTS `att_rule`;
CREATE TABLE `att_rule` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`rule_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '规则名称',
`rule_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '规则类型course-课程/room-教室/global-全局',
`target_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '关联目标ID',
`check_in_start` time NOT NULL COMMENT '签到开始时间课前N分钟',
`check_in_end` time NOT NULL COMMENT '签到截止时间课后N分钟',
`late_threshold` int NOT NULL DEFAULT 15 COMMENT '迟到阈值(分钟)',
`absent_threshold` int NOT NULL DEFAULT 30 COMMENT '缺勤阈值(分钟)',
`early_leave_threshold` int NOT NULL DEFAULT 15 COMMENT '早退阈值(分钟)',
`allow_make_up` tinyint NOT NULL DEFAULT 0 COMMENT '是否允许补签0-否 1-是',
`make_up_limit` int NULL DEFAULT NULL COMMENT '补签时限(小时)',
`school_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '所属学校ID',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_rule_type`(`rule_type` ASC) USING BTREE,
INDEX `idx_target_id`(`target_id` ASC) USING BTREE,
INDEX `idx_school_id`(`school_id` ASC) USING BTREE,
INDEX `idx_status`(`status` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '考勤规则表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of att_rule
-- ----------------------------
INSERT INTO `att_rule` VALUES (1, '默认考勤规则', 'global', NULL, '00:10:00', '00:15:00', 15, 30, 15, 1, 24, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `att_rule` VALUES (2, '严格考勤规则', 'global', NULL, '00:05:00', '00:10:00', 5, 15, 5, 0, NULL, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
-- ----------------------------
-- Table structure for att_task
-- ----------------------------
DROP TABLE IF EXISTS `att_task`;
CREATE TABLE `att_task` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`task_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '任务编号',
`schedule_id` bigint UNSIGNED NOT NULL COMMENT '课程安排ID',
`course_id` bigint UNSIGNED NOT NULL COMMENT '课程ID',
`course_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '课程名称',
`classroom_id` bigint UNSIGNED NOT NULL COMMENT '教室ID',
`classroom_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '教室名称',
`teacher_id` bigint UNSIGNED NOT NULL COMMENT '教师ID',
`teacher_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '教师姓名',
`class_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '班级ID',
`att_date` date NOT NULL COMMENT '考勤日期',
`start_time` datetime NOT NULL COMMENT '上课开始时间',
`end_time` datetime NOT NULL COMMENT '上课结束时间',
`total_count` int NOT NULL DEFAULT 0 COMMENT '应到人数',
`actual_count` int NOT NULL DEFAULT 0 COMMENT '实到人数',
`absent_count` int NOT NULL DEFAULT 0 COMMENT '缺勤人数',
`late_count` int NOT NULL DEFAULT 0 COMMENT '迟到人数',
`leave_early_count` int NOT NULL DEFAULT 0 COMMENT '早退人数',
`attendance_rate` decimal(5, 2) NULL DEFAULT NULL COMMENT '出勤率%',
`task_status` tinyint NOT NULL DEFAULT 0 COMMENT '任务状态0-未开始 1-进行中 2-已结束 3-已取消',
`school_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '所属学校ID',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_task_no`(`task_no` ASC) USING BTREE,
INDEX `idx_schedule_id`(`schedule_id` ASC) USING BTREE,
INDEX `idx_course_id`(`course_id` ASC) USING BTREE,
INDEX `idx_classroom_id`(`classroom_id` ASC) USING BTREE,
INDEX `idx_teacher_id`(`teacher_id` ASC) USING BTREE,
INDEX `idx_att_date`(`att_date` ASC) USING BTREE,
INDEX `idx_task_status`(`task_status` ASC) USING BTREE,
INDEX `idx_school_id`(`school_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '考勤任务表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of att_task
-- ----------------------------
INSERT INTO `att_task` VALUES (1, 'ATT202406010001', 1, 1, '高等数学A', 1, '301教室', 4, '赵教授', 3, '2026-06-01', '2026-06-01 08:00:00', '2024-06-01 09:40:00', 45, 44, 1, 0, 0, 97.78, 2, 1, '2026-06-01 17:11:42', '2026-06-03 14:35:40', 0);
INSERT INTO `att_task` VALUES (2, 'ATT202406010002', 2, 2, '大学英语B', 2, '205教室', 2, '李老师', 4, '2026-06-01', '2026-06-01 10:00:00', '2024-06-01 11:40:00', 38, 38, 0, 0, 0, 100.00, 2, 1, '2026-06-01 17:11:42', '2026-06-03 14:35:48', 0);
INSERT INTO `att_task` VALUES (3, 'ATT202406010003', 3, 3, '计算机导论', 3, '102实验室', 3, '张教授', 1, '2026-06-01', '2026-06-01 14:00:00', '2024-06-01 15:40:00', 52, 49, 3, 0, 0, 94.23, 2, 1, '2026-06-01 17:11:42', '2026-06-03 14:35:55', 0);
INSERT INTO `att_task` VALUES (4, 'ATT202405310001', 4, 4, '线性代数', 4, '408教室', 4, '赵教授', 3, '2026-06-01', '2026-06-01 08:00:00', '2024-05-31 09:40:00', 40, 38, 2, 0, 0, 95.00, 2, 1, '2026-06-01 17:11:42', '2026-06-03 14:38:03', 0);
INSERT INTO `att_task` VALUES (5, 'ATT202405310002', 5, 5, '马克思原理', 5, '大阶梯教室', 5, '刘老师', 5, '2026-06-01', '2026-06-01 10:00:00', '2024-05-31 11:40:00', 120, 108, 12, 0, 0, 90.00, 2, 1, '2026-06-01 17:11:42', '2026-06-03 14:38:10', 0);
-- ----------------------------
-- Table structure for behavior_record
-- ----------------------------
DROP TABLE IF EXISTS `behavior_record`;
CREATE TABLE `behavior_record` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`task_id` bigint UNSIGNED NOT NULL COMMENT '考勤任务ID',
`course_id` bigint UNSIGNED NOT NULL COMMENT '课程ID',
`classroom_id` bigint UNSIGNED NOT NULL COMMENT '教室ID',
`student_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '学生ID可为空表示整体统计',
`behavior_type_id` bigint UNSIGNED NOT NULL COMMENT '行为类型ID',
`behavior_time` datetime NOT NULL COMMENT '行为发生时间',
`duration` int NULL DEFAULT NULL COMMENT '持续时间(秒)',
`confidence` decimal(5, 2) NULL DEFAULT NULL COMMENT 'AI识别置信度',
`snapshot_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '行为抓拍图片',
`is_warning` tinyint NOT NULL DEFAULT 0 COMMENT '是否预警0-否 1-是',
`warning_level` tinyint NULL DEFAULT NULL COMMENT '预警级别1-低 2-中 3-高',
`handled` tinyint NOT NULL DEFAULT 0 COMMENT '是否已处理0-否 1-是',
`handler_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '处理人ID',
`handle_time` datetime NULL DEFAULT NULL COMMENT '处理时间',
`handle_remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '处理备注',
`school_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '所属学校ID',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_task_id`(`task_id` ASC) USING BTREE,
INDEX `idx_course_id`(`course_id` ASC) USING BTREE,
INDEX `idx_student_id`(`student_id` ASC) USING BTREE,
INDEX `idx_behavior_type_id`(`behavior_type_id` ASC) USING BTREE,
INDEX `idx_behavior_time`(`behavior_time` ASC) USING BTREE,
INDEX `idx_is_warning`(`is_warning` ASC) USING BTREE,
INDEX `idx_school_id`(`school_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '课堂行为记录表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of behavior_record
-- ----------------------------
INSERT INTO `behavior_record` VALUES (1, 1, 1, 1, NULL, 1, '2026-06-01 08:15:00', 600, 0.95, NULL, 0, NULL, 0, NULL, NULL, NULL, 1, '2026-06-01 17:11:42', 0, '2026-06-03 11:33:04');
INSERT INTO `behavior_record` VALUES (2, 1, 1, 1, NULL, 1, '2026-06-01 08:30:00', 900, 0.92, NULL, 0, NULL, 0, NULL, NULL, NULL, 1, '2026-06-01 17:11:42', 0, '2026-06-03 11:33:08');
INSERT INTO `behavior_record` VALUES (3, 1, 1, 1, NULL, 2, '2026-06-01 08:45:00', 120, 0.88, NULL, 0, NULL, 0, NULL, NULL, NULL, 1, '2026-06-01 17:11:42', 0, '2026-06-03 11:33:16');
INSERT INTO `behavior_record` VALUES (4, 1, 1, 1, NULL, 3, '2026-06-01 09:00:00', 300, 0.85, NULL, 0, NULL, 0, NULL, NULL, NULL, 1, '2026-06-01 17:11:42', 0, '2026-06-03 11:33:20');
INSERT INTO `behavior_record` VALUES (5, 1, 1, 1, NULL, 4, '2026-06-01 09:10:00', 180, 0.78, NULL, 1, 1, 0, NULL, NULL, NULL, 1, '2026-06-01 17:11:42', 0, '2026-06-03 11:33:23');
INSERT INTO `behavior_record` VALUES (6, 1, 1, 1, NULL, 7, '2026-06-01 09:20:00', 60, 0.65, NULL, 0, NULL, 0, NULL, NULL, NULL, 1, '2026-06-01 17:11:42', 0, '2026-06-03 11:33:27');
INSERT INTO `behavior_record` VALUES (7, 2, 2, 2, NULL, 1, '2026-06-01 10:15:00', 1200, 0.96, NULL, 0, NULL, 0, NULL, NULL, NULL, 1, '2026-06-01 17:11:42', 0, '2026-06-03 11:33:31');
INSERT INTO `behavior_record` VALUES (8, 2, 2, 2, NULL, 2, '2026-06-01 10:30:00', 180, 0.90, NULL, 0, NULL, 0, NULL, NULL, NULL, 1, '2026-06-01 17:11:42', 0, '2026-06-03 11:33:33');
INSERT INTO `behavior_record` VALUES (9, 2, 2, 2, NULL, 3, '2026-06-01 11:00:00', 600, 0.82, NULL, 0, NULL, 0, NULL, NULL, NULL, 1, '2026-06-01 17:11:42', 0, '2026-06-03 11:33:37');
INSERT INTO `behavior_record` VALUES (10, 3, 3, 3, NULL, 1, '2026-06-01 14:10:00', 800, 0.94, NULL, 0, NULL, 0, NULL, NULL, NULL, 1, '2026-06-01 17:11:42', 0, '2026-06-03 11:33:40');
INSERT INTO `behavior_record` VALUES (11, 3, 3, 3, NULL, 4, '2026-06-01 14:30:00', 240, 0.80, NULL, 1, 1, 0, NULL, NULL, NULL, 1, '2026-06-01 17:11:42', 0, '2026-06-03 11:33:43');
INSERT INTO `behavior_record` VALUES (12, 3, 3, 3, NULL, 5, '2026-06-01 14:50:00', 300, 0.75, NULL, 1, 2, 0, NULL, NULL, NULL, 1, '2026-06-01 17:11:42', 0, '2026-06-03 11:33:47');
-- ----------------------------
-- Table structure for behavior_type
-- ----------------------------
DROP TABLE IF EXISTS `behavior_type`;
CREATE TABLE `behavior_type` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`type_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '类型编码',
`type_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '类型名称',
`category` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '分类positive-积极/neutral-中性/negative-消极',
`color` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '图表颜色',
`sort_order` int NOT NULL DEFAULT 0 COMMENT '排序',
`description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '描述',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_type_code`(`type_code` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '行为类型表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of behavior_type
-- ----------------------------
INSERT INTO `behavior_type` VALUES (1, 'focus', '专注听讲', 'positive', '#52c41a', 1, '学生专注听课', 1, '2026-06-01 17:11:42', 0, '2026-06-02 17:16:38');
INSERT INTO `behavior_type` VALUES (2, 'raise_hand', '举手互动', 'positive', '#1890ff', 2, '学生举手发言或提问', 1, '2026-06-01 17:11:42', 0, '2026-06-02 17:16:38');
INSERT INTO `behavior_type` VALUES (3, 'writing', '低头书写', 'neutral', '#722ed1', 3, '学生低头做笔记或写作业', 1, '2026-06-01 17:11:42', 0, '2026-06-02 17:16:38');
INSERT INTO `behavior_type` VALUES (4, 'talking', '交谈讨论', 'neutral', '#faad14', 4, '学生与旁边同学交谈', 1, '2026-06-01 17:11:42', 0, '2026-06-02 17:16:38');
INSERT INTO `behavior_type` VALUES (5, 'sleeping', '趴桌睡觉', 'negative', '#f5222d', 5, '学生趴在桌上睡觉', 1, '2026-06-01 17:11:42', 0, '2026-06-02 17:16:38');
INSERT INTO `behavior_type` VALUES (6, 'phone', '使用手机', 'negative', '#ff4d4f', 6, '学生在课堂上使用手机', 1, '2026-06-01 17:11:42', 0, '2026-06-02 17:16:38');
INSERT INTO `behavior_type` VALUES (7, 'other', '其他', 'neutral', '#bfbfbf', 99, '其他未分类行为', 1, '2026-06-01 17:11:42', 0, '2026-06-02 17:16:38');
-- ----------------------------
-- Table structure for device
-- ----------------------------
DROP TABLE IF EXISTS `device`;
CREATE TABLE `device` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`device_no` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '设备编号',
`device_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '设备名称',
`device_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '设备类型camera-摄像头/face_recognition-人脸识别终端/nvr-NVR',
`brand` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '品牌',
`model` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '型号',
`serial_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '序列号',
`ip_address` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'IP地址',
`port` int NULL DEFAULT NULL COMMENT '端口',
`mac_address` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'MAC地址',
`classroom_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '安装教室ID',
`location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '安装位置描述',
`firmware_version` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '固件版本',
`last_heartbeat` datetime NULL DEFAULT NULL COMMENT '最后心跳时间',
`online_status` tinyint NOT NULL DEFAULT 0 COMMENT '在线状态0-离线 1-在线',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '使用状态0-停用 1-正常 2-维修中',
`school_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '所属学校ID',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_device_no`(`device_no` ASC) USING BTREE,
INDEX `idx_classroom_id`(`classroom_id` ASC) USING BTREE,
INDEX `idx_device_type`(`device_type` ASC) USING BTREE,
INDEX `idx_online_status`(`online_status` ASC) USING BTREE,
INDEX `idx_school_id`(`school_id` ASC) USING BTREE,
INDEX `idx_status`(`status` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '设备表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of device
-- ----------------------------
INSERT INTO `device` VALUES (1, 'CAM001', '301教室摄像头', 'camera', '海康威视', 'DS-2CD3T86FWDV2', NULL, '192.168.1.101', 80, NULL, 1, '301教室前方', NULL, NULL, 1, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `device` VALUES (2, 'CAM002', '205教室摄像头', 'camera', '海康威视', 'DS-2CD3T86FWDV2', NULL, '192.168.1.102', 80, NULL, 2, '205教室前方', NULL, NULL, 1, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `device` VALUES (3, 'CAM003', '102实验室摄像头', 'camera', '大华', 'DH-IPC-HFW4631M', NULL, '192.168.1.103', 80, NULL, 3, '102实验室后方', NULL, NULL, 1, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `device` VALUES (4, 'CAM004', '408教室摄像头', 'camera', '海康威视', 'DS-2CD3T86FWDV2', NULL, '192.168.1.104', 80, NULL, 4, '408教室前方', NULL, NULL, 0, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `device` VALUES (5, 'CAM005', '大阶梯教室摄像头', 'camera', '大华', 'DH-IPC-HFW4631M', NULL, '192.168.1.105', 80, NULL, 5, '大阶梯教室中央', NULL, NULL, 1, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `device` VALUES (6, 'FACE001', '301人脸识别终端', 'face_recognition', '旷视', 'FaceID-Pro', NULL, '192.168.1.201', 8080, NULL, 1, '301教室门口', NULL, NULL, 1, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `device` VALUES (7, 'FACE002', '205人脸识别终端', 'face_recognition', '旷视', 'FaceID-Pro', NULL, '192.168.1.202', 8080, NULL, 2, '205教室门口', NULL, NULL, 1, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
-- ----------------------------
-- Table structure for edu_class
-- ----------------------------
DROP TABLE IF EXISTS `edu_class`;
CREATE TABLE `edu_class` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`class_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '班级名称',
`class_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '班级编码',
`grade` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '年级',
`major` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '专业',
`school_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '所属学校ID',
`student_count` int NOT NULL DEFAULT 0 COMMENT '学生人数',
`headteacher_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '班主任ID教师',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_class_code`(`class_code` ASC) USING BTREE,
INDEX `idx_school_id`(`school_id` ASC) USING BTREE,
INDEX `idx_status`(`status` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '班级表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of edu_class
-- ----------------------------
INSERT INTO `edu_class` VALUES (1, '计算机科学与技术1班', 'CS202401', '2024级', '计算机科学与技术', 1, 52, NULL, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_class` VALUES (2, '软件工程2班', 'SE202402', '2024级', '软件工程', 1, 45, NULL, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_class` VALUES (3, '数学与应用数学1班', 'MA202401', '2024级', '数学与应用数学', 1, 40, NULL, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_class` VALUES (4, '英语师范1班', 'EN202401', '2024级', '英语', 1, 38, NULL, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_class` VALUES (5, '思想政治教育1班', 'PE202401', '2024级', '思想政治教育', 1, 120, NULL, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
-- ----------------------------
-- Table structure for edu_building
-- ----------------------------
DROP TABLE IF EXISTS `edu_building`;
CREATE TABLE `edu_building` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`building_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '教学楼名称',
`building_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '教学楼编码',
`floors` int NULL DEFAULT NULL COMMENT '楼层数',
`school_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '所属学校ID',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态0-停用 1-正常',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_school_id`(`school_id` ASC) USING BTREE,
INDEX `idx_status`(`status` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '教学楼表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of edu_building
-- ----------------------------
INSERT INTO `edu_building` VALUES (1, '第一教学楼', 'BLD-A', 5, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_building` VALUES (2, '第二教学楼', 'BLD-B', 6, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_building` VALUES (3, '实验楼', 'BLD-C', 3, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
-- ----------------------------
-- Table structure for edu_classroom
-- ----------------------------
DROP TABLE IF EXISTS `edu_classroom`;
CREATE TABLE `edu_classroom` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`room_no` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '教室编号',
`room_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '教室名称',
`building_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '所属教学楼ID',
`floor` int NULL DEFAULT NULL COMMENT '楼层',
`capacity` int NULL DEFAULT NULL COMMENT '容纳人数',
`room_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '普通教室' COMMENT '教室类型',
`camera_device_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '关联摄像头设备ID',
`school_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '所属学校ID',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态0-停用 1-正常',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_room_no`(`room_no` ASC) USING BTREE,
INDEX `idx_building_id`(`building_id` ASC) USING BTREE,
INDEX `idx_school_id`(`school_id` ASC) USING BTREE,
INDEX `idx_status`(`status` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '教室表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of edu_classroom
-- ----------------------------
INSERT INTO `edu_classroom` VALUES (1, '301', '301教室', 1, 3, 50, '普通教室', NULL, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_classroom` VALUES (2, '205', '205教室', 1, 2, 45, '普通教室', NULL, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_classroom` VALUES (3, '102', '102实验室', 3, 1, 55, '实验室', NULL, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_classroom` VALUES (4, '408', '408教室', 2, 4, 48, '普通教室', NULL, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_classroom` VALUES (5, 'DJT', '大阶梯教室', 1, 1, 150, '阶梯教室', NULL, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_classroom` VALUES (6, '302', '302教室', 1, 3, 50, '普通教室', NULL, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_classroom` VALUES (7, '303', '303教室', 1, 3, 50, '普通教室', NULL, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_classroom` VALUES (8, '304', '304教室', 1, 3, 50, '普通教室', NULL, 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
-- ----------------------------
-- Table structure for edu_course
-- ----------------------------
DROP TABLE IF EXISTS `edu_course`;
CREATE TABLE `edu_course` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`course_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '课程编码',
`course_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '课程名称',
`course_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '课程类型',
`credit` decimal(3, 1) NULL DEFAULT NULL COMMENT '学分',
`teacher_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '授课教师ID',
`school_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '所属学校ID',
`description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '课程描述',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_course_code`(`course_code` ASC) USING BTREE,
INDEX `idx_teacher_id`(`teacher_id` ASC) USING BTREE,
INDEX `idx_school_id`(`school_id` ASC) USING BTREE,
INDEX `idx_status`(`status` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '课程表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of edu_course
-- ----------------------------
INSERT INTO `edu_course` VALUES (1, 'CS101', '高等数学A', '必修课', 4.0, 4, 1, '高等数学基础课程', 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_course` VALUES (2, 'EN101', '大学英语B', '必修课', 3.0, 2, 1, '大学英语基础课程', 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_course` VALUES (3, 'CS102', '计算机导论', '必修课', 2.0, 3, 1, '计算机专业入门课程', 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_course` VALUES (4, 'MA101', '线性代数', '必修课', 3.0, 4, 1, '线性代数基础课程', 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_course` VALUES (5, 'PE101', '马克思原理', '必修课', 3.0, 5, 1, '马克思主义基本原理', 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
-- ----------------------------
-- Table structure for edu_course_schedule
-- ----------------------------
DROP TABLE IF EXISTS `edu_course_schedule`;
CREATE TABLE `edu_course_schedule` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`course_id` bigint UNSIGNED NOT NULL COMMENT '课程ID',
`classroom_id` bigint UNSIGNED NOT NULL COMMENT '教室ID',
`class_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '上课班级ID',
`teacher_id` bigint UNSIGNED NOT NULL COMMENT '授课教师ID',
`week_day` tinyint NOT NULL COMMENT '星期几1-7',
`start_section` tinyint NOT NULL COMMENT '开始节次',
`end_section` tinyint NOT NULL COMMENT '结束节次',
`start_week` int NOT NULL DEFAULT 1 COMMENT '开始周',
`end_week` int NOT NULL DEFAULT 16 COMMENT '结束周',
`semester` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '学期2024-2025-1',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_course_id`(`course_id` ASC) USING BTREE,
INDEX `idx_classroom_id`(`classroom_id` ASC) USING BTREE,
INDEX `idx_teacher_id`(`teacher_id` ASC) USING BTREE,
INDEX `idx_class_id`(`class_id` ASC) USING BTREE,
INDEX `idx_week_day`(`week_day` ASC) USING BTREE,
INDEX `idx_semester`(`semester` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '课程安排表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of edu_course_schedule
-- ----------------------------
-- ----------------------------
-- Table structure for edu_student
-- ----------------------------
DROP TABLE IF EXISTS `edu_student`;
CREATE TABLE `edu_student` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`student_no` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '学号',
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '姓名',
`gender` tinyint NULL DEFAULT NULL COMMENT '性别0-女 1-男',
`avatar` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '头像URL',
`face_feature` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '人脸特征值Base64',
`face_image` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '人脸照片URL',
`class_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '所属班级ID',
`school_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '所属学校ID',
`phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '手机号',
`email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱',
`user_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '关联系统用户ID',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态0-离校 1-在读',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_student_no`(`student_no` ASC) USING BTREE,
INDEX `idx_class_id`(`class_id` ASC) USING BTREE,
INDEX `idx_school_id`(`school_id` ASC) USING BTREE,
INDEX `idx_user_id`(`user_id` ASC) USING BTREE,
INDEX `idx_status`(`status` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '学生表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of edu_student
-- ----------------------------
-- ----------------------------
-- Table structure for edu_teacher
-- ----------------------------
DROP TABLE IF EXISTS `edu_teacher`;
CREATE TABLE `edu_teacher` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`teacher_no` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '工号',
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '姓名',
`gender` tinyint NULL DEFAULT NULL COMMENT '性别0-女 1-男',
`avatar` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '头像URL',
`title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '职称',
`department` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '所属院系',
`school_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '所属学校ID',
`phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '手机号',
`email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱',
`user_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '关联系统用户ID',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_teacher_no`(`teacher_no` ASC) USING BTREE,
INDEX `idx_school_id`(`school_id` ASC) USING BTREE,
INDEX `idx_user_id`(`user_id` ASC) USING BTREE,
INDEX `idx_status`(`status` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '教师表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of edu_teacher
-- ----------------------------
INSERT INTO `edu_teacher` VALUES (1, 'T001', '王教授', 1, NULL, '教授', '计算机学院', 1, '13900139001', 'wang@school.edu', NULL, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_teacher` VALUES (2, 'T002', '李老师', 0, NULL, '讲师', '外国语学院', 1, '13900139002', 'li@school.edu', NULL, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_teacher` VALUES (3, 'T003', '张教授', 1, NULL, '教授', '计算机学院', 1, '13900139003', 'zhang@school.edu', NULL, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_teacher` VALUES (4, 'T004', '赵教授', 1, NULL, '副教授', '数学学院', 1, '13900139004', 'zhao@school.edu', NULL, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `edu_teacher` VALUES (5, 'T005', '刘老师', 0, NULL, '讲师', '马克思主义学院', 1, '13900139005', 'liu@school.edu', NULL, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
-- ----------------------------
-- Table structure for monitor_record
-- ----------------------------
DROP TABLE IF EXISTS `monitor_record`;
CREATE TABLE `monitor_record` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`classroom_id` bigint UNSIGNED NOT NULL COMMENT '教室ID',
`device_id` bigint UNSIGNED NOT NULL COMMENT '监控设备ID',
`record_date` date NOT NULL COMMENT '记录日期',
`start_time` datetime NOT NULL COMMENT '开始时间',
`end_time` datetime NULL DEFAULT NULL COMMENT '结束时间',
`stream_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '直播流地址',
`record_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '录像地址',
`file_size` bigint NULL DEFAULT NULL COMMENT '录像文件大小(字节)',
`record_status` tinyint NOT NULL DEFAULT 1 COMMENT '记录状态0-失败 1-成功',
`school_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '所属学校ID',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_classroom_id`(`classroom_id` ASC) USING BTREE,
INDEX `idx_device_id`(`device_id` ASC) USING BTREE,
INDEX `idx_record_date`(`record_date` ASC) USING BTREE,
INDEX `idx_school_id`(`school_id` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '教室监控记录表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of monitor_record
-- ----------------------------
-- ----------------------------
-- Table structure for sys_operation_log
-- ----------------------------
DROP TABLE IF EXISTS `sys_operation_log`;
CREATE TABLE `sys_operation_log` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '操作用户ID',
`username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '操作用户名',
`module` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '操作模块',
`action` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '操作动作',
`method` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '请求方法',
`request_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '请求URL',
`request_params` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '请求参数',
`response_data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '响应数据',
`ip_address` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'IP地址',
`user_agent` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'User-Agent',
`duration` int NULL DEFAULT NULL COMMENT '执行时长(毫秒)',
`status` tinyint NULL DEFAULT NULL COMMENT '状态0-失败 1-成功',
`error_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '错误信息',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_user_id`(`user_id` ASC) USING BTREE,
INDEX `idx_module`(`module` ASC) USING BTREE,
INDEX `idx_created_at`(`created_at` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统操作日志表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_operation_log
-- ----------------------------
-- ----------------------------
-- Table structure for sys_permission
-- ----------------------------
DROP TABLE IF EXISTS `sys_permission`;
CREATE TABLE `sys_permission` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`perm_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '权限编码',
`perm_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '权限名称',
`perm_type` tinyint NOT NULL DEFAULT 1 COMMENT '权限类型1-菜单 2-按钮 3-接口',
`parent_id` bigint UNSIGNED NULL DEFAULT 0 COMMENT '父权限ID',
`path` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '前端路由路径',
`icon` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '图标',
`sort_order` int NOT NULL DEFAULT 0 COMMENT '排序',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_perm_code`(`perm_code` ASC) USING BTREE,
INDEX `idx_parent_id`(`parent_id` ASC) USING BTREE,
INDEX `idx_status`(`status` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '权限表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_permission
-- ----------------------------
INSERT INTO `sys_permission` VALUES (1, 'dashboard', '首页', 1, 0, '/dashboard', 'HomeFilled', 1, 1, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_permission` VALUES (2, 'behavior', '课堂行为分析', 1, 0, '/behavior', 'TrendCharts', 2, 1, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_permission` VALUES (3, 'history', '历史记录查询', 1, 0, '/history', 'Search', 3, 1, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_permission` VALUES (4, 'bigscreen', '数据展示大屏', 1, 0, '/bigscreen', 'DataAnalysis', 4, 1, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_permission` VALUES (5, 'settings', '系统设置', 1, 0, '/settings', 'Setting', 5, 1, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_permission` VALUES (6, 'settings.personnel', '人员管理', 1, 5, '/settings/personnel', 'User', 1, 1, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_permission` VALUES (7, 'settings.device', '设备管理', 1, 5, '/settings/device', 'Monitor', 2, 1, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_permission` VALUES (8, 'settings.rules', '考勤规则设置', 1, 5, '/settings/rules', 'Notebook', 3, 1, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_permission` VALUES (9, 'settings.permissions', '权限管理', 1, 5, '/settings/permissions', 'Lock', 4, 1, '2026-06-01 17:11:42', 0);
-- ----------------------------
-- Table structure for sys_role
-- ----------------------------
DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`role_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色编码admin/teacher/staff',
`role_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色名称',
`description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '角色描述',
`sort_order` int NOT NULL DEFAULT 0 COMMENT '排序',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态0-禁用 1-启用',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_role_code`(`role_code` ASC) USING BTREE,
INDEX `idx_status`(`status` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '角色表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_role
-- ----------------------------
INSERT INTO `sys_role` VALUES (1, 'admin', '管理员', '系统管理员,拥有全部权限', 1, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role` VALUES (2, 'teacher', '教师', '授课教师,可查看本班/本课程考勤', 2, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role` VALUES (3, 'staff', '教务员', '教务管理人员,可查看和管理考勤数据', 3, 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
-- ----------------------------
-- Table structure for sys_role_permission
-- ----------------------------
DROP TABLE IF EXISTS `sys_role_permission`;
CREATE TABLE `sys_role_permission` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
`role_id` bigint UNSIGNED NOT NULL COMMENT '角色ID',
`permission_id` bigint UNSIGNED NOT NULL COMMENT '权限ID',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_role_perm`(`role_id` ASC, `permission_id` ASC) USING BTREE,
INDEX `idx_permission_id`(`permission_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 24 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '角色权限关联表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_role_permission
-- ----------------------------
INSERT INTO `sys_role_permission` VALUES (1, 1, 1, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role_permission` VALUES (2, 1, 2, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role_permission` VALUES (3, 1, 3, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role_permission` VALUES (4, 1, 4, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role_permission` VALUES (5, 1, 5, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role_permission` VALUES (6, 1, 6, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role_permission` VALUES (7, 1, 7, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role_permission` VALUES (8, 1, 8, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role_permission` VALUES (9, 1, 9, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role_permission` VALUES (16, 3, 1, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role_permission` VALUES (17, 3, 2, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role_permission` VALUES (18, 3, 3, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role_permission` VALUES (19, 3, 6, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role_permission` VALUES (20, 3, 8, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role_permission` VALUES (21, 2, 1, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role_permission` VALUES (22, 2, 2, '2026-06-01 17:11:42', 0);
INSERT INTO `sys_role_permission` VALUES (23, 2, 3, '2026-06-01 17:11:42', 0);
-- ----------------------------
-- Table structure for sys_school
-- ----------------------------
DROP TABLE IF EXISTS `sys_school`;
CREATE TABLE `sys_school` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '学校名称',
`code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '学校编码',
`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '地址',
`contact_phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '联系电话',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态0-禁用 1-启用',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_school_code`(`code` ASC) USING BTREE,
INDEX `idx_status`(`status` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '学校/机构表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_school
-- ----------------------------
INSERT INTO `sys_school` VALUES (1, '阳光实验学校', 'SCHOOL_001', '阳光大道88号', '010-88888888', 1, '2026-06-01 17:11:42', '2026-06-01 17:11:42', 0);
-- ----------------------------
-- Table structure for sys_user
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '登录账号(工号/学号)',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '登录密码BCrypt加密',
`real_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '真实姓名',
`avatar` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '头像URL',
`role_id` bigint UNSIGNED NOT NULL COMMENT '角色ID',
`school_id` bigint UNSIGNED NULL DEFAULT NULL COMMENT '所属学校ID',
`phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '手机号',
`email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '邮箱',
`last_login_time` datetime NULL DEFAULT NULL COMMENT '最后登录时间',
`last_login_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '最后登录IP',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态0-禁用 1-启用',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted` tinyint NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_username`(`username` ASC) USING BTREE,
INDEX `idx_role_id`(`role_id` ASC) USING BTREE,
INDEX `idx_school_id`(`school_id` ASC) USING BTREE,
INDEX `idx_status`(`status` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '系统用户表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_user
-- ----------------------------
INSERT INTO `sys_user` VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', '管理员', NULL, 1, 1, '13800138001', 'admin@school.edu', '2026-06-03 10:13:06', '10.23.22.43', 1, '2026-06-01 17:11:42', '2026-06-02 17:26:20', 0);
SET FOREIGN_KEY_CHECKS = 1;