# 国语教育平台 - 架构文档 ## 📐 整体架构 ### 系统架构图 ``` ┌─────────────────────────────────────────────────────────────┐ │ 客户端层 │ ├──────────────────┬──────────────────┬──────────────────────┤ │ Web管理端 │ 移动端App │ 微信小程序(规划) │ │ (Vue.js) │ (uni-app) │ │ └──────────────────┴──────────────────┴──────────────────────┘ ↓ HTTP/HTTPS ┌─────────────────────────────────────────────────────────────┐ │ 网关层 │ │ Nginx (反向代理) │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 应用服务层 │ │ Spring Boot (端口: 30091) │ ├──────────────────┬──────────────────┬──────────────────────┤ │ 系统管理模块 │ 学习管理模块 │ 语音评测模块 │ │ - 用户管理 │ - 课程管理 │ - 语音识别 │ │ - 权限管理 │ - 考试管理 │ - 发音评测 │ │ - 角色管理 │ - 题库管理 │ - 评测记录 │ │ - 菜单管理 │ - 学习记录 │ │ └──────────────────┴──────────────────┴──────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 数据访问层 │ │ MyBatis + Druid │ └─────────────────────────────────────────────────────────────┘ ↓ ┌──────────────────┬──────────────────┬──────────────────────┐ │ MySQL数据库 │ Redis缓存 │ 文件存储 │ │ (业务数据) │ (会话/缓存) │ (课件/录音) │ └──────────────────┴──────────────────┴──────────────────────┘ ``` --- ## 🏗️ 技术架构 ### 后端技术栈 #### 核心框架 - **Spring Boot 2.5.15**: 应用框架 - **Spring Security 5.7.14**: 安全框架 - **Spring Framework 5.3.39**: 基础框架 - **MyBatis**: ORM框架 - **Druid 1.2.23**: 数据库连接池 #### 中间件 - **Redis**: 缓存、会话管理 - **MySQL**: 关系型数据库 - **Nginx**: 反向代理、负载均衡 #### 工具库 - **JWT (jjwt 0.9.1)**: Token认证 - **FastJSON 2.0.58**: JSON处理 - **Apache POI 4.1.2**: Excel导入导出 - **PageHelper 1.4.7**: 分页插件 - **Swagger 3.0.0**: API文档 - **Kaptcha 2.3.3**: 验证码生成 - **Velocity 2.3**: 代码生成模板 ### 前端技术栈 #### Web管理端 - **Vue.js 2.x**: 前端框架 - **Element UI**: UI组件库 - **Axios**: HTTP客户端 - **Vuex**: 状态管理 - **Vue Router**: 路由管理 - **Webpack**: 构建工具 #### 移动端App - **uni-app**: 跨平台开发框架 - **Vue.js 3.2.47**: 前端框架 - **uView Plus 3.6.15**: UI组件库 - **Vuex 4.1.0**: 状态管理 - **Vite 5.2.8**: 构建工具 --- ## 📦 模块架构 ### 后端模块结构 ``` ry-study (父工程) ├── ry-study-admin # 主应用模块(启动入口) │ ├── controller # 控制器层 │ │ ├── system # 系统管理控制器 │ │ ├── study # 学习管理控制器 │ │ └── voice # 语音评测控制器 │ └── RyStudyApplication # 启动类 │ ├── ry-study-framework # 框架核心模块 │ ├── config # 配置类 │ ├── security # 安全配置 │ ├── interceptor # 拦截器 │ └── aspectj # AOP切面 │ ├── ry-study-system # 系统业务模块 │ ├── domain # 实体类 │ │ ├── study # 学习相关实体 │ │ └── vo # 视图对象 │ ├── mapper # 数据访问层 │ │ └── study # 学习相关Mapper │ └── service # 业务逻辑层 │ ├── impl # 业务实现 │ ├── study # 学习业务 │ └── voice # 语音业务 │ ├── ry-study-common # 通用工具模块 │ ├── annotation # 自定义注解 │ ├── constant # 常量定义 │ ├── core # 核心工具 │ ├── enums # 枚举类 │ ├── exception # 异常处理 │ └── utils # 工具类 │ ├── ry-study-quartz # 定时任务模块 │ ├── domain # 任务实体 │ ├── service # 任务服务 │ └── util # 任务工具 │ └── ry-study-generator # 代码生成模块 ├── domain # 生成配置 ├── service # 生成服务 └── util # 生成工具 ``` ### 前端模块结构 #### Web管理端 (ry-study-ui) ``` ry-study-ui ├── public # 静态资源 ├── src │ ├── api # API接口 │ │ ├── system # 系统接口 │ │ ├── study # 学习接口 │ │ └── monitor # 监控接口 │ ├── assets # 资源文件 │ ├── components # 公共组件 │ ├── directive # 自定义指令 │ ├── layout # 布局组件 │ ├── router # 路由配置 │ ├── store # Vuex状态 │ ├── utils # 工具函数 │ └── views # 页面视图 │ ├── system # 系统管理页面 │ ├── study # 学习管理页面 │ └── monitor # 监控页面 └── vue.config.js # Vue配置 ``` #### 移动端App (fronted_uniapp) ``` fronted_uniapp ├── api # API接口 │ └── study # 学习相关接口 ├── components # 公共组件 │ ├── custom-navbar # 自定义导航栏 │ └── custom-tabbar # 自定义标签栏 ├── config # 配置文件 ├── pages # 页面 │ ├── login # 登录页 │ ├── index # 首页 │ ├── course # 课程页面 │ ├── exam # 考试页面 │ ├── voice # 语音评测页面 │ ├── learning # 学习记录页面 │ ├── score # 成绩页面 │ └── profile # 个人中心 ├── static # 静态资源 ├── store # Vuex状态 │ └── modules # 状态模块 ├── utils # 工具函数 ├── App.vue # 应用入口 ├── main.js # 主入口文件 ├── manifest.json # 应用配置 └── pages.json # 页面配置 ``` --- ## 🔄 数据流架构 ### 请求处理流程 ``` 客户端请求 ↓ Nginx (反向代理) ↓ Spring Security (认证/授权) ↓ Controller (控制器) ↓ Service (业务逻辑) ↓ Mapper (数据访问) ↓ MySQL/Redis (数据存储) ↓ 返回响应 ``` ### 认证授权流程 ``` 1. 用户登录 ↓ 2. 验证用户名密码 ↓ 3. 生成JWT Token ↓ 4. 返回Token给客户端 ↓ 5. 客户端携带Token请求 ↓ 6. 验证Token有效性 ↓ 7. 解析用户权限 ↓ 8. 执行业务逻辑 ``` --- ## 💾 数据库设计 ### 核心数据表 #### 系统管理 - `sys_user`: 用户表 - `sys_role`: 角色表 - `sys_menu`: 菜单表 - `sys_dept`: 部门表 - `sys_dict_type`: 字典类型表 - `sys_dict_data`: 字典数据表 - `sys_config`: 系统配置表 - `sys_oper_log`: 操作日志表 - `sys_logininfor`: 登录日志表 #### 学习管理 - `study_class`: 班级表 - `study_class_user`: 班级学生关联表 - `study_course`: 课程表 - `study_courseware`: 课件表 - `study_course_assignment`: 课程分配表 - `study_learning_record`: 学习记录表 - `study_subject`: 学科表 #### 考试管理 - `study_question_bank`: 题库表 - `study_question_bank_item`: 题目表 - `study_exam`: 考试表 - `study_question`: 试题表 - `study_student_answer`: 学生答题表 - `study_score`: 成绩表 #### 语音评测 - `study_voice_evaluation`: 语音评测表 - `study_voice_evaluation_content`: 评测内容表 #### 监控管理 - `study_screen_monitor`: 屏幕监控表 - `study_student_change_log`: 学生变更日志表 --- ## 🔌 接口设计 ### RESTful API规范 #### 请求格式 ``` GET /api/resource # 查询列表 GET /api/resource/{id} # 查询详情 POST /api/resource # 新增 PUT /api/resource # 修改 DELETE /api/resource/{id} # 删除 ``` #### 响应格式 ```json { "code": 200, "msg": "操作成功", "data": {} } ``` ### 主要接口模块 #### 系统管理接口 - `/system/user/*`: 用户管理 - `/system/role/*`: 角色管理 - `/system/menu/*`: 菜单管理 - `/system/dept/*`: 部门管理 - `/system/dict/*`: 字典管理 #### 学习管理接口 - `/study/class/*`: 班级管理 - `/study/course/*`: 课程管理 - `/study/courseware/*`: 课件管理 - `/study/learning/*`: 学习记录 - `/study/subject/*`: 学科管理 #### 考试管理接口 - `/study/questionBank/*`: 题库管理 - `/study/exam/*`: 考试管理 - `/study/score/*`: 成绩管理 #### 语音评测接口 - `/voice/evaluate`: 语音评测 - `/voice/record/*`: 评测记录 --- ## 🔒 安全架构 ### 安全机制 1. **认证机制** - JWT Token认证 - Token自动刷新 - 单点登录支持 2. **授权机制** - RBAC权限模型 - 数据权限控制 - 接口权限控制 3. **数据安全** - 密码加密存储(BCrypt) - 敏感数据加密 - SQL注入防护 4. **传输安全** - HTTPS加密传输 - Token签名验证 - 请求防重放 5. **日志审计** - 操作日志记录 - 登录日志记录 - 异常日志记录 --- ## 🚀 部署架构 ### 单机部署 ``` ┌─────────────────────────────┐ │ 服务器 (192.168.0.106) │ ├─────────────────────────────┤ │ Nginx (80/443) │ │ Spring Boot (30091) │ │ MySQL (3306) │ │ Redis (6379) │ │ 文件存储 (/profile/upload) │ └─────────────────────────────┘ ``` ### 集群部署(推荐) ``` ┌──────────────┐ │ 负载均衡器 │ │ (Nginx) │ └──────────────┘ ↓ ┌──────────────┬──────────────┬──────────────┐ │ 应用服务器1 │ 应用服务器2 │ 应用服务器3 │ │ Spring Boot │ Spring Boot │ Spring Boot │ └──────────────┴──────────────┴──────────────┘ ↓ ↓ ↓ ┌──────────────┬──────────────┬──────────────┐ │ MySQL主库 │ MySQL从库 │ Redis集群 │ └──────────────┴──────────────┴──────────────┘ ↓ ┌──────────────┐ │ 文件存储 │ │ (NFS/OSS) │ └──────────────┘ ``` --- ## 📊 性能优化 ### 缓存策略 - **Redis缓存**: 用户信息、权限数据、字典数据 - **本地缓存**: 配置信息、静态数据 - **浏览器缓存**: 静态资源、图片 ### 数据库优化 - **索引优化**: 关键字段建立索引 - **查询优化**: 避免全表扫描 - **连接池**: Druid连接池配置 - **读写分离**: 主从复制 ### 前端优化 - **代码分割**: 按需加载 - **资源压缩**: Gzip压缩 - **图片优化**: 懒加载、WebP格式 - **CDN加速**: 静态资源CDN --- ## 🔧 扩展性设计 ### 模块化设计 - 各模块独立开发 - 低耦合高内聚 - 易于维护和扩展 ### 插件化架构 - 语音识别引擎可替换 - 支持自定义插件 - 灵活的配置机制 ### 微服务演进 - 当前为单体应用 - 可按模块拆分为微服务 - 支持Spring Cloud改造 --- ## 📈 监控运维 ### 系统监控 - **应用监控**: Spring Boot Actuator - **性能监控**: JVM监控、线程监控 - **日志监控**: 日志收集、分析 - **告警机制**: 异常告警、性能告警 ### 运维工具 - **部署工具**: Shell脚本、Docker - **备份工具**: 数据库备份、文件备份 - **监控工具**: Prometheus、Grafana(可选) --- ## 🎯 技术选型理由 ### 为什么选择Spring Boot? - 快速开发、约定优于配置 - 生态完善、社区活跃 - 易于部署、运维简单 ### 为什么选择uni-app? - 一次开发、多端运行 - Vue语法、学习成本低 - 性能优秀、生态丰富 ### 为什么选择MySQL? - 开源免费、成熟稳定 - 性能优秀、易于维护 - 支持事务、数据安全 ### 为什么选择Redis? - 高性能、低延迟 - 数据结构丰富 - 支持持久化 --- ## 📝 开发规范 ### 代码规范 - 遵循阿里巴巴Java开发手册 - 统一的命名规范 - 完善的注释文档 ### Git规范 - 分支管理策略 - 提交信息规范 - Code Review流程 ### 接口规范 - RESTful API设计 - 统一的响应格式 - 完善的接口文档 --- ## 🔮 技术演进路线 ### 短期(3-6个月) - 性能优化 - 功能完善 - Bug修复 ### 中期(6-12个月) - 微服务改造 - 容器化部署 - 自动化运维 ### 长期(1-2年) - AI智能化 - 大数据分析 - 云原生架构