511 lines
16 KiB
Markdown
511 lines
16 KiB
Markdown
|
|
# 国语教育平台 - 架构文档
|
|||
|
|
|
|||
|
|
## 📐 整体架构
|
|||
|
|
|
|||
|
|
### 系统架构图
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────────────────────────┐
|
|||
|
|
│ 客户端层 │
|
|||
|
|
├──────────────────┬──────────────────┬──────────────────────┤
|
|||
|
|
│ 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智能化
|
|||
|
|
- 大数据分析
|
|||
|
|
- 云原生架构
|