系统原为单校部署,学校配置写死在代码里,百花库 373 张表中有 230 张没有 school_id。目标:不影响线上学校的前提下,让多所学校安全共用一套代码,且数据不越权。
- 多校数据隔离:设计 MyBatis 学校隔离拦截器(审计 / 强制两种模式、默认关闭、可灰度),对 15 张无学校字段的表用“父表间接规则”限定范围,无需改表结构;补齐手写 SQL、异步线程池、定时任务的上下文传递,并修复分页绕过隔离的缺陷。
- 可信身份与安全加固:/ws 接口“观察 → 策略矩阵 → 强制”三步渐进的身份校验,所有新能力默认关闭、可回退;移除配置里硬编码的数据库连接,签到不再信任客户端时间。
- 配置驱动:租户配置注册表驱动登录页、公众号菜单、班牌地址与门禁规则,新增学校从“改代码”变为“加配置”。
- 交付运维:测试 / 正式 / 百花三套隔离环境,每日备份保留 7 天,所有库变更配套 upgrade / rollback SQL,累计近 600 次提交。