16 KiB
16 KiB
国语教育平台 - 架构文档
📐 整体架构
系统架构图
┌─────────────────────────────────────────────────────────────┐
│ 客户端层 │
├──────────────────┬──────────────────┬──────────────────────┤
│ 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} # 删除
响应格式
{
"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/*: 评测记录
🔒 安全架构
安全机制
-
认证机制
- JWT Token认证
- Token自动刷新
- 单点登录支持
-
授权机制
- RBAC权限模型
- 数据权限控制
- 接口权限控制
-
数据安全
- 密码加密存储(BCrypt)
- 敏感数据加密
- SQL注入防护
-
传输安全
- HTTPS加密传输
- Token签名验证
- 请求防重放
-
日志审计
- 操作日志记录
- 登录日志记录
- 异常日志记录
🚀 部署架构
单机部署
┌─────────────────────────────┐
│ 服务器 (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智能化
- 大数据分析
- 云原生架构