docker exec -i 1Panel-mariadb-ZOpD mysql -u tuanwei -p'TytQZsSW5m4wGh38' tuanwei <<'SQLPATCH' CREATE TABLE IF NOT EXISTS `gxmu_student` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID', `xh` varchar(32) NOT NULL COMMENT '学号(开放平台外部键)', `xm` varchar(64) DEFAULT NULL COMMENT '姓名', `xbm` varchar(8) DEFAULT NULL COMMENT '性别码(平台原始)', `sex` varchar(16) DEFAULT NULL COMMENT '性别名称', `mzm` varchar(8) DEFAULT NULL COMMENT '民族码(平台原始)', `nation` varchar(32) DEFAULT NULL COMMENT '民族名称', `zzmmm` varchar(8) DEFAULT NULL COMMENT '政治面貌码(平台原始)', `politics` varchar(64) DEFAULT NULL COMMENT '政治面貌名称', `sfzjh` varchar(32) DEFAULT NULL COMMENT '身份证件号', `sjh` varchar(32) DEFAULT NULL COMMENT '手机号(认领键)', `bjm` varchar(64) DEFAULT NULL COMMENT '平台班级码(原始)', `bh` varchar(64) DEFAULT NULL COMMENT '平台班号(学籍库原始)', `class_id` int DEFAULT NULL COMMENT '解析出的班级ID', `college_id` int DEFAULT NULL COMMENT '解析出的学院ID', `dwh` varchar(64) DEFAULT NULL COMMENT '单位号(平台原始)', `zyh` varchar(32) DEFAULT NULL COMMENT '专业号', `zymc` varchar(128) DEFAULT NULL COMMENT '专业名称', `pyccmc` varchar(32) DEFAULT NULL COMMENT '培养层次', `sfzx` varchar(8) DEFAULT NULL COMMENT '是否在校', `xjzt` varchar(32) DEFAULT NULL COMMENT '学籍状态', `xsdqzt` varchar(32) DEFAULT NULL COMMENT '学生当前状态', `csrq` varchar(20) DEFAULT NULL COMMENT '出生日期', `user_id` int DEFAULT NULL COMMENT '认领后的 sys_user.user_id', `claim_time` datetime DEFAULT NULL COMMENT '认领时间', `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:1在校 0毕业/结业/休学', `sync_time` datetime DEFAULT NULL COMMENT '最近同步时间', `tenant_id` int DEFAULT NULL COMMENT '租户ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` tinyint NOT NULL DEFAULT '0' COMMENT '删除标记:0未删 1已删', `row_hash` varchar(32) DEFAULT NULL COMMENT '平台权威字段指纹,用于跳过未变更行', PRIMARY KEY (`id`), UNIQUE KEY `uk_gxmu_student_xh` (`tenant_id`,`xh`), KEY `idx_gxmu_student_xh` (`xh`), KEY `idx_gxmu_student_sjh` (`sjh`), KEY `idx_gxmu_student_class` (`class_id`), KEY `idx_gxmu_student_college` (`college_id`), KEY `idx_gxmu_student_uid` (`user_id`), KEY `idx_gxmu_student_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生名册(开放平台同步)'; CREATE TABLE IF NOT EXISTS `gxmu_teacher` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID', `jgh` varchar(32) NOT NULL COMMENT '教工号(开放平台外部键)', `xm` varchar(64) DEFAULT NULL COMMENT '姓名', `xbm` varchar(8) DEFAULT NULL COMMENT '性别码(平台原始)', `sex` varchar(16) DEFAULT NULL COMMENT '性别名称', `dwh` varchar(64) DEFAULT NULL COMMENT '单位号(平台原始)', `college_id` int DEFAULT NULL COMMENT '解析出的学院ID', `ksjybh` varchar(64) DEFAULT NULL COMMENT '科室教研室编号', `sjh` varchar(32) DEFAULT NULL COMMENT '手机号(敏感字段, 不对外输出)', `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态:1启用 0停用', `sync_time` datetime DEFAULT NULL COMMENT '最近同步时间', `tenant_id` int DEFAULT NULL COMMENT '租户ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` tinyint NOT NULL DEFAULT '0' COMMENT '删除标记:0未删 1已删', PRIMARY KEY (`id`), UNIQUE KEY `uk_gxmu_teacher_jgh` (`tenant_id`,`jgh`), KEY `idx_gxmu_teacher_jgh` (`jgh`), KEY `idx_gxmu_teacher_college` (`college_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='教师名册(开放平台同步)'; CREATE TABLE IF NOT EXISTS `gxmu_sync_record` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `batch_id` varchar(64) DEFAULT NULL COMMENT '批次号(同一次触发的各段共享)', `sync_type` varchar(32) NOT NULL COMMENT '同步类型:dept/teacher/class/student', `trigger_type` varchar(16) NOT NULL COMMENT '触发方式:schedule/manual', `trigger_user` varchar(100) DEFAULT NULL COMMENT '触发人(手动触发时)', `start_time` datetime DEFAULT NULL COMMENT '开始时间', `end_time` datetime DEFAULT NULL COMMENT '结束时间', `success_count` int NOT NULL DEFAULT '0' COMMENT '成功条数', `fail_count` int NOT NULL DEFAULT '0' COMMENT '失败条数', `skip_count` int NOT NULL DEFAULT '0' COMMENT '跳过条数', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态:0成功 1失败', `error_msg` varchar(1000) DEFAULT NULL COMMENT '错误摘要(不含手机号/身份证)', `tenant_id` int DEFAULT NULL COMMENT '租户ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_gxmu_sync_record_batch` (`batch_id`), KEY `idx_gxmu_sync_record_start` (`start_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='开放平台同步记录'; UPDATE `gxmu_class` SET `class_code` = NULL WHERE `class_code` = ''; UPDATE `sys_organization` SET `organization_code` = NULL WHERE `organization_code` = ''; SET @exist := (SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'gxmu_class' AND INDEX_NAME = 'uk_gxmu_class_code'); SET @stmt := IF(@exist = 0, 'ALTER TABLE `gxmu_class` ADD UNIQUE KEY `uk_gxmu_class_code` (`tenant_id`, `class_code`)', 'SELECT 1'); PREPARE s FROM @stmt; EXECUTE s; DEALLOCATE PREPARE s; SET @exist := (SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sys_organization' AND INDEX_NAME = 'uk_sys_organization_code'); SET @stmt := IF(@exist = 0, 'ALTER TABLE `sys_organization` ADD UNIQUE KEY `uk_sys_organization_code` (`tenant_id`, `organization_code`)', 'SELECT 1'); PREPARE s FROM @stmt; EXECUTE s; DEALLOCATE PREPARE s; SQLPATCH