校园一体化管理系统 1、开发方案(试行) 校园一体化管理系统 私有化专属开发方案单MySQL架构文档说明适配场景私有化部署,学校内网断网运行、低配服务器、无外网依赖、满足教育等保2.0合规要求。具体而言学校内网断网运行系统设计为完全离线运行模式不依赖任何外部网络连接。所有功能模块包括用户认证、数据同步、文件上传下载、报表生成等均可在无互联网环境下正常工作。系统启动时自动检测网络状态并切换到纯离线模式避免因网络中断导致业务中断。低配服务器适配针对中小学常见的低配置服务器环境如4核CPU、8GB内存、500GB硬盘系统进行了全方位优化数据库层面采用MySQL单实例架构减少多数据库的资源消耗内存使用优化前端采用Blazor WebAssembly减少服务器渲染压力定时任务智能调度避免高峰时段集中执行提供Redis队列降级方案在内存不足时可切换为文件队列无外网依赖彻底移除所有对外部服务的强依赖前端资源全部本地打包无CDN引用关闭版本自动更新检测短信、邮件等通知组件可完全关闭或替换为站内消息所有API接口均为内网地址不调用任何外部API教育等保2.0合规要求系统从设计层面满足等保2.0三级安全要求身份鉴别支持密码复杂度策略、多因素认证、登录失败锁定访问控制基于角色的细粒度权限控制支持IP白名单限制安全审计完整操作日志记录关键操作二次确认日志留存3年数据完整性数据库字段级加密传输过程HTTPS加密数据保密性学生隐私数据脱敏展示敏感信息加密存储备份恢复自动定时备份支持一键恢复备份文件加密存储恶意代码防范文件上传安全扫描XSS/SQL注入全局过滤技术架构 MySQL8.0 作为唯一业务数据库Redis缓存、RabbitMQ可选轻量化降级部署模式双适配私有化单校独立实例 / 云端多租户SaaS配置开关切换两套逻辑业务模块教务(高优)、教学教研(次优)、轻量化德育(低优)跨模块交互同步Core抽象契约调用 异步领域事件总线本地内存/消息队列双模式一、项目整体概述1.1 项目目标全离线内网可用无强制外网依赖适配中小学私有化本地部署架构轻量化降低客户服务器硬件门槛运维简单单MySQL统一承载全部业务数据规避多数据库运维成本完善离线安装、离线升级、本地备份恢复售后交付成本低完整等保、学生隐私脱敏、操作审计满足教育局安全检查模块化低耦合支持后期按需增减业务功能。1.2 技术栈清单私有化优化版后端主框架ASP.NET Core 8 WebAPIORMSqlSuagrMySQL数据库MySQL 8.0唯一存储介质缓存/分布式锁/轻量队列Redis分布式消息队列RabbitMQ可选低配机器切换RedisQueue降级定时任务Quartz.NET任务持久化至MySQL认证授权JWT 本地离线License授权日志Serilog本地磁盘存储序列化System.Text.Json前端框架Blazor WebAssemblyUI组件Ant Design Blazor资源策略全部静态资源本地打包无CDN外网依赖文件存储默认本地磁盘目录可选拓展内网NAS共享文件夹弃用公有OSS强依赖仅作为可选配置部署交付Windows一键图形化安装程序Linux一键Shell离线部署脚本升级离线Zip增量升级包后台可视化执行二、解决方案项目分层结构第一版目录结构 项目、功能划分SaaSCampus.sln ├─ 01.Core 【核心底层所有项目依赖区分私有化/SaaS双模式】 │ ├─ DeploymentSwitch // 部署模式全局开关私有化单校 / SaaS多租户 │ ├─ SaaSTenant // 多租户上下文私有化模式自动屏蔽TenantId过滤逻辑 │ ├─ AuthPermission // JWT认证、RBAC权限、IP白名单、离线License校验 │ ├─ DomainEvent // 领域事件总线本地内存总线优先MQ可选 │ ├─ DataBase │ │ └─ MySqlBaseDbContext // 唯一数据库上下文统一实体基类 │ ├─ Repository // MySQL通用仓储、分页、事务、分表工具封装 │ ├─ ServiceContract // 跨模块同步查询抽象契约解耦核心 │ │ ├─ IEduQueryService.cs │ │ ├─ ITeachingQueryService.cs │ │ └─ IMoralQueryService.cs │ ├─ MessageQueue // MQ统一封装、Redis降级队列、消费幂等、失败重放表 │ ├─ GlobalFilter // 全局异常、参数校验、统一返回、XSS过滤 │ ├─ Security // 隐私数据加密、脱敏工具、审计日志基类 │ └─ EntityBase // 全局MySQL实体基类 │ ├─ SaaS模式TenantId、CreatorId、CreateTime、UpdateTime、IsDeleted │ └─ 私有化模式移除TenantId字段自动适配 ├─ 02.Common 【通用工具库离线私有化适配】 │ ├─ ExcelHelper // 离线导入导出脱敏开关 │ ├─ FileHelper // 本地/NAS文件管理、上传鉴权、自动清理临时文件 │ ├─ RedisCache // 缓存雪崩/击穿/穿透防护、分布式锁 │ ├─ QuartzTask // 定时任务持久化、断点续跑、并发互斥锁 │ ├─ BackupHelper // MySQL本地自动备份、加密、一键恢复 │ ├─ DeployHelper // 安装初始化、离线升级、数据库迁移回滚 │ ├─ SerializeHelper // 统一序列化工具 │ └─ NotifyHelper // 内网消息推送屏蔽外网短信强制依赖 ├─ 03.Module.Edu 【教务模块最高优先级】 │ ├─ Entity // MySQL实体大文本拆分附属表 │ ├─ Dto // 入参/出参DTO敏感字段自动脱敏 │ ├─ Repository // 数据仓储实现 │ ├─ Service │ │ ├─ BusinessService // 学籍、排课、考勤、考务、成绩业务 │ │ └─ QueryService // 实现Core IEduQueryService 对外查询契约 │ ├─ Event // 教务领域事件实体 │ └─ Controller // 模块API控制器 ├─ 04.Module.Teaching 【教学教研模块次优先级】 │ ├─ Entity、Dto、Repository、Service、Event、Controller 同教务结构 │ └─ QueryService 实现Core ITeachingQueryService ├─ 05.Module.Moral 【轻量化德育模块低优先级】 │ ├─ Entity、Dto、Repository、Service、Event、Controller 同教务结构 │ └─ QueryService 实现Core IMoralQueryService ├─ 06.Api.Host 【API启动入口一体化单进程】 │ ├─ Program.cs │ ├─ Extensions // 模块注册扩展、部署模式初始化 │ └─ Middleware // 内网IP拦截、租户、日志、跨域中间件 └─ 07.Client.Blazor 【前端全离线打包】 ├─ PlatformTool // 平台运营工具生成离线License、升级包 └─ SchoolAdmin // 校内管理端私有化客户唯一使用端 ├─ 系统管理员面板配置、备份、升级、监控、License导入 ├─ 教务/教研/德育主任面板 ├─ 班主任/任课教师面板 ├─ 学生独立端 └─ 家长端(更改目录结构 DDD?? 2026年7月14日 20:25:11)SchoolSaas.sln ├─ Client.Blazor # 前端项目外网独立部署Blazor‑WebAssembly非托管模式 .NET8 │ ├─ Pages # 业务页面组件按模块划分文件夹 │ │ ├── SystemManage # 系统管理员页面配置、备份、升级、监控、License导入 │ │ ├── EduPage # 教务/教研/德育主任页面 │ │ ├── TeacherPage # 班主任、任课教师页面 │ │ ├── StudentPage # 学生独立端页面 │ │ └─ ParentPage # 家长端页面 │ ├─ SharedComponents # 公共UI组件 │ │ ├── PermissionButton.razor # 权限受控按钮组件后端权限标识控制显示 │ │ ├── CommonTable.razor # 通用分页表格组件 │ │ ├── FileUpload.razor # 文件上传组件 │ │ └─ ModalDialog.razor # 弹窗公共组件 │ ├─ HttpServices # 统一封装HttpClient请求服务 │ │ ├── HttpInterceptor.cs # 请求拦截器自动附加Bearer‑Token、统一解析返回结果、Token过期跳转登录 │ │ ├── EduApiService.cs # 教务模块请求服务 │ │ ├── TeachingApiService.cs # 教研模块请求服务 │ │ └─ MoralApiService.cs # 德育模块请求服务 │ ├─ PlatformTool # 平台运营工具新增对应原有Core里版本校验 │ │ └── LicenseCheck.cs # 读取后端License校验私有化授权有效期 │ └─ wwwroot │ └─ appsettings.json # 配置外网API接口地址仅保存域名无密钥 │ ├─ SchoolSaas.Api # 后端API项目ASP.NET‑Core 8内网部署外网通过YarpIP白名单访问 │ ├─ Controllers # 控制器只返回DTO禁止返回数据库Entity实体 │ │ ├── SystemController.cs # 系统管理接口 │ │ ├── EduController.cs # 教务模块接口 │ │ ├── TeachingController.cs # 教研模块接口 │ │ └─ MoralController.cs # 德育模块接口 │ ├─ Filters # 全局过滤器对应Core层GlobalFilter、Security校验逻辑 │ │ ├── PermissionFilter.cs # JWT、RBAC权限校验、IP白名单校验内网放行、外网严格校验 │ │ ├── GlobalExceptionFilter.cs # 全局异常过滤器内网输出堆栈、外网屏蔽异常详情 │ │ ├── RequestAuditFilter.cs # 审计日志记录外网IP、操作账号、请求参数 │ │ └── ValidateFilter.cs # 参数校验、XSS过滤 │ ├─ Extensions # 新增服务注册扩展原Core模块初始化逻辑 │ │ ├── ServiceRegister.cs # 批量注入Repository、Service、SqlSugar、Redis、Hangfire │ │ └── DeployModeExtension.cs # 部署模式初始化私有化单校 / SaaS‑多租户模式切换 │ ├─ Middleware # 新增中间件原Core中间件逻辑 │ │ ├── YarpProxyMiddleware.cs # Yarp反向代理外网IP限流、https证书处理 │ │ └─ TenantMiddleware.cs # 解析当前租户信息 │ └─ Program.cs # 程序入口注册SqlSugar、JWT、CORS跨域、Hangfire定时任务、全局过滤器 │ ├─ SchoolSaas.Application # 应用服务层业务逻辑层 │ ├─ Services # 各个模块业务Service │ │ ├── BusinessService # 业务实现对应原有Module模块 │ │ │ ├── ISystemService.cs SystemService.cs │ │ │ ├── IEduService.cs EduService.cs # 学籍、排课、成绩业务 │ │ │ ├── ITeachingService.cs TeachingService.cs # 教研业务 │ │ │ └── IMoralService.cs MoralService.cs # 德育考勤业务 │ │ └─ QueryService # 跨模块查询服务契约实现对应Core里ServiceContract │ │ ├── IEduQueryService.cs │ │ ├── ITeachingQueryService.cs │ │ └─ IMoralQueryService.cs │ └─ Dtos # 入参DTO和返回DTO后续同步至Shared打包Nuget给前端使用 │ ├── InputDtos # 前端传入参数模型 │ └─ OutputDtos # 返回前端数据模型敏感字段自动脱敏 │ ├─ SchoolSaas.Domain # 领域层对应原01‑Core核心底层把核心定义全部移入Domain │ ├─ Entities # SqlSugar‑Entity实体类对应数据库表 │ │ ├── BaseEntity.cs # 全局实体基类CreatorId、CreateTime、UpdateTime、IsDeletedSqlSugar自动赋值 │ │ ├── ITenantEntity.cs # 租户接口TenantId私有化模式自动关闭TenantId过滤 │ │ ├── EduEntities # 教务相关实体Student、Class、Score │ │ ├── TeachingEntities # 教研相关实体 │ │ └─ MoralEntities # 德育相关实体 │ ├─ Enums # 系统枚举部署模式、角色类型、学籍状态、考勤状态 │ │ ├── DeployMode.cs // 枚举PrivateSingleSchool私有化模式 / SaaSMultiTenant多租户模式 │ │ └── BusinessEnums // 业务枚举 │ ├─ DomainEvents # 领域事件原Core.DomainEvent │ │ ├── IEventBus.cs │ │ ├── LocalEventBus.cs // 私有化默认本地内存事件总线 │ │ ├── MqEventBus.cs // 预留MQ模式多集群部署启用 │ │ └── EventModels // 事件实体成绩提交事件、新增学生事件 │ ├─ TenantContext # 新增原Core‑SaaSTenant租户逻辑 │ │ ├── CurrentTenant.cs // 获取当前租户ID、登录用户信息 │ │ └─ SqlSugarTenantFilter.cs // SqlSugar全局租户过滤器根据DeployMode自动启用/关闭TenantId条件 │ └─ AuthContract # 新增原Core‑AuthPermission │ ├── JwtModel.cs │ ├── PermissionModel.cs │ └── LicenseModel.cs // 私有化授权模型 │ ├─ SchoolSaas.Infrastructure # 基础设施层封装SqlSugar、Redis、工具类、定时任务 │ ├─ Repository # 基于SqlSugar实现仓储BaseRepository原Core.DataBase逻辑 │ │ ├── IBaseRepository.cs │ │ ├── BaseRepository.cs // 封装分页、联表查询、批量操作、Lambda查询 │ │ ├── UnitOfWork.cs // 工作单元统一事务提交回滚 │ │ └── DbSetup.cs // SqlSugar初始化Code‑First、读写分离配置、种子数据初始化 │ ├─ Cache # Redis缓存封装原Core.MessageQueue、Common.RedisCache │ │ ├── RedisHelper.cs // 缓存雪崩、击穿防护分布式锁 │ │ └── RedisMqProvider.cs // Redis降级消息队列、失败重试 │ └─ CommonTools # 文件操作、加解密、公共工具类对应02‑Common全部工具 │ ├── FileHelper.cs // 本地/NAS文件管理、自动清理临时文件 │ ├── ExcelHelper.cs // Excel导入导出 │ ├── BackupHelper.cs // MySQL定时备份、加密恢复 │ ├── SerializeHelper.cs // 序列化工具 │ ├── QuartzHelper.cs // Hangfire定时任务封装成绩统计、考勤汇总任务 │ ├── NotifyHelper.cs // 内网消息推送 │ └─ SecurityHelper.cs // 密码加密、数据脱敏、审计日志原Core‑Security │ └─ SchoolSaas.Shared # 公共类库打包私有Nuget包 ├─ ResultModel.cs // 统一返回模型 ResultT ├─ SharedDtos // 将Application.Dtos同步到此项目供前后端共用 ├─ CommonEnums // Domain里的枚举同步至此前端Blazor引用 └─ GlobalConsts.cs // 全局常量、正则、分页公共模型 规则Client.Blazor和API项目仅通过Nuget引用SchoolSaas.Shared前后端无项目引用彻底解耦项目引用强制约束Core无业务模块引用Common可被Core、所有业务模块、Api.Host引用业务模块(Edu/Teaching/Moral)仅依赖Core、Common禁止互相引用Api.Host引用全部底层与业务模块统一DI注册前端无任何外网静态资源、接口请求全部内网地址。三、数据库设计仅MySQL8.0私有化专项优化3.1 整体存储规划全部业务、文本、附件元数据、操作日志、统计快照统一存入MySQL本地磁盘/NAS仅存储真实文件教案附件、图片、微课数据库只存文件路径元数据。3.2 核心数据表分层系统基础表sys_前缀sys_user、sys_role、sys_menu、sys_permission账号权限sys_attachment全局附件元数据表全业务复用sys_operation_log_yyyyMM按月分表操作审计日志合规留存3年sys_task_record定时任务执行记录sys_message站内离线消息sys_upgrade_log系统升级、数据库迁移记录sys_backup_record数据库本地备份记录教务业务表edu_前缀年级、班级、学生、教师、学籍、排课、考勤、考试、成绩大文本拆分附属表edu_student_note学生长篇备注教研业务表teaching_前缀教研组、教案主表教案内容附属表、作业、听课记录、资源库元数据德育业务表moral_前缀德育配置、积分记录、违纪、班级量化、评优归档表定时统计快照表stat_前缀月度/年度汇总报表降低实时查询压力3.3 私有化专属优化点双模式字段自动适配SaaS多租户所有业务表联合索引IX_TenantId_Id强制过滤租户私有化单校自动移除TenantId字段索引简化大文本优化所有LONGTEXT类型单独拆分子表主列表查询不加载大文本详情页按需查询日志按月自动分表程序启动自动检测并创建当月日志分表后台提供一键归档旧日志功能学年数据归档毕业年级数据一键迁移至归档表日常查询过滤归档数据提升查询速度数据库备份机制后台可视化配置自动备份周期备份文件加密存储支持整库/单表一键恢复索引规范私有化单校统一索引主键ID、创建时间、班级/学生关联ID权限隔离MySQL账号仅本地127.0.0.1访问禁止外网连接。四、多模块数据交互方案4.1 同步实时查询高频基础数据读取适用场景教研读取班级学生、德育读取学籍、跨模块基础数据联动查询Core层定义无实现抽象契约接口IEduQueryService等对应业务模块实现契约接口其他模块仅注入抽象接口内存DI调用强类型DTO交互私有化强化行级数据权限班主任仅可查询本班学生接口内置数据过滤杜绝越权Redis缓存高频查询结果减少MySQL频繁查询压力。4.2 异步事件联动数据变更、批量统计、通知适用场景新增学生初始化德育积分、考试结束生成统计、班级删除联动清理作业/教案领域事件实体统一继承Core BaseDomainEvent双分发策略私有化默认本地内存总线无需启动RabbitMQ低配服务器内存总线本地消费零中间件依赖大数据量场景切换RabbitMQ消息持久化防断电丢失最低配降级Redis队列替代RabbitMQ减少部署组件消费失败数据存入mysql异常表后台可视化手动重放无需操作中间件内置幂等校验防止重复执行造成数据错乱。4.3 消息统一规范外层统一JSON消息头Body为强类型实体序列化禁止手写裸JSON私有化关闭MQ外网端口仅本地进程通信。五、私有化部署专属核心功能模块5.1 离线License授权模块P0必做平台运营工具导出离线授权文件加密私有化系统后台导入License管控可使用模块、在校学生上限、使用有效期完全断网运行无需联网校验到期自动切换只读模式仅支持查询禁止新增修改License操作全程记录审计日志。5.2 一键安装离线升级模块P0必做安装向导可视化配置数据库、文件存储路径、管理员账号、队列模式选择环境自检自动校验磁盘、内存、端口、数据库连通性拦截部署故障离线升级上传Zip增量升级包执行前自动备份数据库升级失败自动回滚数据库与程序版本兼容校验禁止跨大版本直接升级支持一键重置初始化仅新客户使用。5.3 本地文件存储管理P0必做双存储模式本地文件夹 / 内网NAS共享目录文件分层存储教案、作业图片、头像、临时导出文件分类隔离访问鉴权所有文件请求携带登录校验无永久直链防止隐私泄露定时清理临时文件、过期附件防止磁盘占满后台配置全局存储容量上限超量自动告警管理员。5.4 轻量化内置运维监控面板P1同步开发无第三方监控组件全部内置后台页面服务器资源监控CPU、内存、磁盘使用率数据库监控连接数、慢SQL、数据表容量预警定时任务执行记录、队列堆积、消费失败统计系统内置告警磁盘不足、数据库断开、授权即将到期站内消息通知管理员全量日志打包下载方便售后排查问题。5.5 等保安全学生隐私模块P0必做账号安全策略密码复杂度、90天强制改密、连续5次登录锁定内网IP白名单仅办公网段登录后台关键操作批量删除、清空成绩二次弹窗确认隐私数据处理数据库身份证、手机号AES加密存储页面展示自动脱敏Excel导出支持一键脱敏开关敏感数据导出、查看单独留存审计日志留存3年内网传输安全支持离线导入本地CA证书全站HTTPS加密接口防刷限流、IP黑名单自动封禁恶意访问全局XSS过滤拦截恶意脚本输入。5.6 离线无外网适配全功能内嵌前端所有JS、CSS、字体本地打包无CDN、外网资源依赖打印、成绩单、奖状模板全部内置本地断网正常导出打印关闭所有外网接口版本联网检测、在线短信、公有云资源库短信、推送组件可关闭无外网不抛出异常。六、定时任务私有化适配优化Quartz任务持久化存入MySQL服务器重启自动恢复未完成任务大统计任务全校月度德育/教学汇总凌晨低峰执行白天降低并发任务增加分布式锁多开服务不会重复执行后台可视化手动触发任意定时任务无需操作服务器命令内置任务执行日志失败标记并告警。七、开发实施顺序分五期适配私有化交付节奏一期底层基座阻塞所有业务开发优先完成Core核心层部署模式切换、MySQL上下文、权限、离线License、事件总线、队列封装、隐私加密工具Common通用工具一键备份、离线升级、文件管理、Redis缓存防护Api.Host启动项目、中间件、DI扩展基础系统表迁移脚本、安装初始化逻辑。二期核心业务模块最高优先级Module.Edu 教务全模块开发Blazor校内教务配套页面、系统管理员配置面板内置运维监控、数据库备份恢复功能。三期次核心业务模块Module.Teaching 教学教研模块开发前端教研资源库、作业、听课管理页面文件NAS存储适配、离线打印模板管理。四期次要业务模块 安全合规完善Module.Moral 轻量化德育模块完整等保安全功能IP白名单、数据脱敏、审计日志离线安装程序、离线升级包功能开发。五期交付配套工具PlatformTool平台运营工具生成离线License、制作升级包全套部署文档、客户使用手册、数据库运维手册全系统bug修复、性能优化、低配服务器适配调优。八、编码与部署约束规范开发编码约束所有实体继承Core统一EntityBase自动适配私有化/SaaS双模式禁止硬编码外网地址、第三方云服务所有外部依赖做成可关闭配置项跨模块查询仅允许使用Core抽象契约接口禁止模块间项目引用同步查询禁止使用消息队列仅数据异步联动使用事件总线敏感字段统一使用加密/脱敏工具禁止明文存储展示学生隐私大文本统一拆分附属表列表查询禁止加载LONGTEXT字段。私有化部署约束默认一体化单进程运行API定时任务队列消费简化客户部署提供双队列方案低配RedisQueue、标准RabbitMQ安装时可选所有配置文件本地化无远程配置中心后台可视化修改配置无需重启数据库禁止公网访问仅本地127.0.0.1连接所有日志、备份、文件路径可自定义支持映射本地移动硬盘、内网NAS。九、风险与优化兜底方案服务器硬件性能不足提供低配MySQL参数模板、队列降级、定时任务限流学校完全断网全功能离线可用无任何强制联网校验数据库误操作自动定时备份、一键恢复、毕业数据归档隔离学生隐私泄露全链路脱敏、数据库加密、文件访问鉴权、操作审计升级故障升级前强制备份失败自动回滚数据库与程序磁盘空间占满文件自动清理、存储容量预警、日志自动归档。