Files
zyt/server/database/migrations/20260326_doctor_roster_segments.sql
T
2026-03-27 18:06:12 +08:00

19 lines
1.3 KiB
SQL

-- 医生排班:一条记录 = 一段连续可挂号时间(支持同日多段、白班/夜班)
-- 表前缀默认 zyt_,与 config/database.php 中 prefix 一致
ALTER TABLE `zyt_doctor_roster`
ADD COLUMN `start_time` varchar(5) DEFAULT NULL COMMENT '接诊开始 HH:mm' AFTER `period`,
ADD COLUMN `end_time` varchar(5) DEFAULT NULL COMMENT '接诊结束 HH:mm' AFTER `start_time`,
ADD COLUMN `shift_type` varchar(20) DEFAULT NULL COMMENT 'day白班/night夜班' AFTER `end_time`,
ADD COLUMN `slot_minutes` smallint unsigned NOT NULL DEFAULT 15 COMMENT '号源间隔分钟' AFTER `shift_type`;
-- 历史数据:按原上午/下午补全时间
UPDATE `zyt_doctor_roster` SET `start_time`='09:00', `end_time`='12:00' WHERE `period`='morning' AND (`start_time` IS NULL OR `start_time`='');
UPDATE `zyt_doctor_roster` SET `start_time`='14:00', `end_time`='18:00' WHERE `period`='afternoon' AND (`start_time` IS NULL OR `start_time`='');
-- 原唯一键限制「每天仅上午+下午」,需改为按时段区分
ALTER TABLE `zyt_doctor_roster` DROP INDEX `uk_doctor_date_period`;
-- 防止同一天重复录入完全相同的时间段(含软删字段,与 ThinkPHP 软删一致)
ALTER TABLE `zyt_doctor_roster` ADD UNIQUE KEY `uk_doctor_date_segment` (`doctor_id`,`date`,`start_time`,`end_time`,`delete_time`);