guoyu/项目介绍/架构文档.md
2026-01-30 15:08:32 +08:00

16 KiB
Raw Blame History

国语教育平台 - 架构文档

📐 整体架构

系统架构图

┌─────────────────────────────────────────────────────────────┐
│                         客户端层                              │
├──────────────────┬──────────────────┬──────────────────────┤
│   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/*: 评测记录

🔒 安全架构

安全机制

  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智能化
  • 大数据分析
  • 云原生架构