为了帮助大家理解整体架构,以下为文字描述的架构图:
lua
复制编辑
+-------------------------------+ | 用户端 (UniApp) | | - 学生注册/登录 | | - 查找家教 / 筛选 | | - 在线预约 / 支付 | +-------------------------------+ ↓ RESTful API 请求(HTTPS) ↓ +---------------------------------------------------------+ | 后端服务(Spring Boot) | | - 用户管理:注册、登录、实名认证 | | - 家教服务:课程管理、预约记录 | | - 消息服务:WebSocket实时通知 | | - 数据存储:MySQL + Redis缓存优化 | +---------------------------------------------------------+ ↓ 数据存储 & 管理 +---------------------------------------------------------+ | MySQL 数据库 | | - 用户表:学生、家教信息 | | - 课程表:课程名称、时间、价格 | | - 订单表:预约课程记录 | | - 操作日志表:记录用户与教师的操作行为 | +---------------------------------------------------------+
✅ 用户端功能模块
注册/登录:支持手机号验证码注册,并使用 JWT(JSON Web Token)实现无状态认证。
筛选教师:基于教师评分、距离、课程价格等条件筛选。
在线预约与支付:预约课程并使用微信或支付宝支付。
消息通知:WebSocket 实现课程提醒与预约状态推送。
✅ 师傅端功能模块
教师信息管理:完善个人信息、认证资质。
课程管理:添加、修改课程,设置课程价格。
订单管理:查看与确认学生预约信息。
✅ 管理后台模块
用户管理:查看与操作学生与教师信息。
订单管理:监控订单状态与数据统计。
权限与日志:分级权限与记录操作日志。
依赖引入(pom.xml
)
xml
复制编辑
用户表 user_info
sql
复制编辑
CREATE TABLE user_info ( id BIGINT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL, phone VARCHAR(15) NOT NULL, password VARCHAR(255) NOT NULL, role ENUM('STUDENT', 'TEACHER') NOT NULL, rating DECIMAL(2,1) DEFAULT 5.0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
课程表 course_info
sql
复制编辑
CREATE TABLE course_info ( id BIGINT PRIMARY KEY AUTO_INCREMENT, teacher_id BIGINT NOT NULL, title VARCHAR(100) NOT NULL, description TEXT, price DECIMAL(10,2) NOT NULL, start_time TIMESTAMP, end_time TIMESTAMP, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
java
复制编辑
@Service public class CourseService { @Autowired private CourseMapper courseMapper; /** * 按条件筛选家教课程 */ public List
html
复制编辑
优化项 | 常规方案 | 优化方案 | 效果对比 |
---|---|---|---|
数据查询 | 单表查询 | 增加索引、分库分表 | 查询速度提升 300% |
通信效率 | HTTP 短轮询 | WebSocket 实时推送 | 延迟降低 70% |
缓存机制 | 每次查询都请求数据库 | Redis 缓存热门课程数据 | 减少数据库压力 80% |
异步任务处理 | 同步预约处理 | 引入线程池异步任务 | 系统吞吐量提高 5 倍 |
⚠️ 未使用索引:查询效率低,数据量大时性能急剧下降。
⚠️ WebSocket 不正确关闭:连接未释放,导致内存泄漏。
⚠️ 缺乏 Redis 缓存过期策略:数据一致性问题,缓存穿透风险增加。
Spring Boot 官方文档
MyBatis-Plus GitHub 项目
UniApp 开发文档
开放性问题:你在开发家教系统时遇到过哪些性能瓶颈?欢迎在评论区交流!