一、技术选型
| 层级 | 技术 | 选择理由 |
| 后端框架 | Spring Boot 2.7 | 生态成熟,约定优于配置,快速开发 |
| ORM | MyBatis-Plus 3.4 | 简化 CRUD,保留 SQL 灵活性 |
| 数据库 | MySQL 8.0 | 稳定可靠,社区支持好 |
| 前端框架 | Vue 2.5 | 学习曲线平缓,组件化开发 |
| UI 组件库 | Element UI 2.3 | 后台管理系统标配,组件丰富 |
| 图表 | ECharts 4.x | 百度出品,图表类型丰富 |
二、系统架构





三、数据库设计
1. 捐赠记录(record 表)
type="捐款"且status="通过"的记录才计入项目可用资金。2. 资金使用记录(usedrecord 表)
3. 角色权限(role 表)
四、核心业务实现
4.1 资金监管闭环
UsedrecordController中:4.2 三级权限体系
- 普通用户(role=1):只能访问前台页面,进行浏览、捐赠、互动等操作
- 管理员(role=2):可以访问后台管理功能,但菜单权限是动态配置的
- 超级管理员(role=3):拥有全部权限,包括用户管理和权限分配
[1,2,3,4])。前端的leftnav.vue组件会根据当前用户的权限列表过滤菜单项,实现动态菜单。4.3 统计分析仪表盘
ChatController提供了一个聚合接口/chat/list,一次性返回:五、遇到的问题与改进方向
1. 安全问题
- 密码是明文存储的,应该使用BCrypt 加密
- 没有Token 认证机制,所有 API 都是裸露的
- MyBatis 中使用了
${}做 LIKE 查询,存在SQL 注入风险
2. 架构问题
- Controller 中直接注入 Mapper,Service 层形同虚设
- Controller 使用了实例变量存储分页状态,单例模式下不安全
- 所有接口都是 POST 方法,RESTful 规范不够严格
3. 可扩展性
- 文件上传使用本地存储,生产环境应该用 OSS
- 没有消息通知机制,审核状态变更无法实时推送给用户
- 没有日志系统,排查问题不方便
六、写在最后
- 前后端分离架构
- 用户认证与权限控制
- CRUD 业务逻辑
- 数据校验与业务规则
- 数据可视化
夜雨聆风