64 lines
3.5 KiB
SQL
64 lines
3.5 KiB
SQL
-- ============================================================
|
||
-- 019_signage.sql (MySQL 5.7)
|
||
-- 电子班牌取数接口(/api/board/v1/signageService/*)所需补充表与字段
|
||
-- 配合 TrainBoardApiController + TrainSignageMapper 使用。
|
||
-- 说明:仅 ADD COLUMN / CREATE TABLE / 测试种子。
|
||
-- 前置:train_student / train_classroom_info / train_class_plan /
|
||
-- train_lesson / train_plan_course / train_course / train_enrollment /
|
||
-- train_teacher 已存在(V2 基线 000 / 002)。
|
||
-- 注意:MySQL 5.7 不支持 ALTER TABLE ADD COLUMN IF NOT EXISTS,
|
||
-- 下面用临时存储过程做幂等判断;CREATE TABLE 用 IF NOT EXISTS(5.7 支持)。
|
||
-- ============================================================
|
||
|
||
-- 1) 学员卡号(刷卡校验用,train_student 无此列,需补列)
|
||
DROP PROCEDURE IF EXISTS tmp_add_card_no;
|
||
DELIMITER $$
|
||
CREATE PROCEDURE tmp_add_card_no()
|
||
BEGIN
|
||
IF NOT EXISTS (
|
||
SELECT 1 FROM information_schema.columns
|
||
WHERE table_schema = DATABASE()
|
||
AND table_name = 'train_student'
|
||
AND column_name = 'card_no'
|
||
) THEN
|
||
ALTER TABLE train_student
|
||
ADD COLUMN card_no VARCHAR(32) DEFAULT NULL COMMENT '学员卡号(刷卡校验用)';
|
||
END IF;
|
||
END$$
|
||
DELIMITER ;
|
||
CALL tmp_add_card_no();
|
||
DROP PROCEDURE IF EXISTS tmp_add_card_no;
|
||
|
||
-- 2) 座位分配表(接口3 studentInClassroom 所需,原库无座位表)
|
||
CREATE TABLE IF NOT EXISTS train_class_seat (
|
||
seat_id BIGINT NOT NULL AUTO_INCREMENT,
|
||
plan_id VARCHAR(32) NOT NULL COMMENT '班级ID(train_class_plan.plan_id)',
|
||
classroom_id VARCHAR(32) NOT NULL COMMENT '教室ID(train_classroom_info.class_room_id)',
|
||
row_index INT NOT NULL COMMENT '行号,从1开始',
|
||
col_index INT NOT NULL COMMENT '列号,从1开始',
|
||
seat_code VARCHAR(32) DEFAULT NULL COMMENT '物理座位标识',
|
||
canceled SMALLINT NOT NULL DEFAULT 0 COMMENT '是否取消位置(0正常,1取消)',
|
||
student_id VARCHAR(32) DEFAULT NULL COMMENT '占用座位学员ID(train_student.s_id)',
|
||
zone_id BIGINT DEFAULT NULL COMMENT '区域ID',
|
||
dept_detail VARCHAR(100) DEFAULT NULL COMMENT '部门',
|
||
job VARCHAR(100) DEFAULT NULL COMMENT '职务',
|
||
create_by VARCHAR(64) DEFAULT NULL,
|
||
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
update_by VARCHAR(64) DEFAULT NULL,
|
||
update_time TIMESTAMP NULL DEFAULT NULL,
|
||
remark VARCHAR(500) DEFAULT NULL,
|
||
PRIMARY KEY (seat_id),
|
||
UNIQUE KEY uq_class_seat_pos (plan_id, classroom_id, row_index, col_index)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班级在指定教室的座位分配表(电子班牌座位网格来源)';
|
||
|
||
-- 3) 测试种子:为 018 的学员 S20260001 设置卡号(文档示例值)
|
||
UPDATE train_student SET card_no = '0514457515' WHERE s_id = 'S20260001';
|
||
|
||
-- 4) 测试种子:P2026001 在教室 CR-001 的座位布局
|
||
DELETE FROM train_class_seat WHERE plan_id = 'P2026001' AND classroom_id = 'CR-001';
|
||
INSERT INTO train_class_seat (plan_id, classroom_id, row_index, col_index, seat_code, canceled, student_id, zone_id, dept_detail, job)
|
||
VALUES
|
||
('P2026001', 'CR-001', 1, 1, '1-1', 0, 'S20260001', 100, '培训部', '学员'),
|
||
('P2026001', 'CR-001', 1, 2, '1-2', 0, NULL, 100, NULL, NULL),
|
||
('P2026001', 'CR-001', 2, 1, '2-1', 1, NULL, 100, NULL, NULL);
|