1. 项目概述
这个学生心理咨询评估系统是一个典型的校园心理健康管理解决方案,采用目前主流的SpringBoot+Vue前后端分离架构。作为一名参与过多个校园信息化项目的开发者,我发现这类系统正在成为高校数字化建设的标配模块。
系统核心功能覆盖心理咨询预约、评估量表管理、咨询记录跟踪等全流程。后端采用SpringBoot 2.7.x+MyBatis Plus技术栈,前端使用Vue 3+Element Plus,数据库选用MySQL 8.0。整套代码开箱即用,已经过完整测试并附带初始化SQL脚本。
2. 系统架构解析
2.1 技术选型考量
选择SpringBoot作为后端框架主要基于三点考虑:
- 快速开发特性:自动配置和起步依赖大幅减少XML配置
- 内嵌Tomcat:简化部署流程,适合学校IT部门维护
- 丰富的Starter生态:轻松整合Redis、RabbitMQ等中间件
前端选用Vue 3的组合式API写法,相比Options API更利于复杂业务逻辑组织。Element Plus组件库提供现成的表单、表格等UI元素,加速管理后台开发。
2.2 数据库设计要点
系统包含12张核心表,这里重点说明几个关键设计:
sql复制CREATE TABLE `student` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` varchar(20) NOT NULL,
`college` varchar(50) DEFAULT NULL COMMENT '学院',
`phone` varchar(20) DEFAULT NULL,
`risk_level` tinyint DEFAULT '0' COMMENT '0-正常 1-关注 2-高危',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `consultation` (
`id` int NOT NULL AUTO_INCREMENT,
`student_id` int NOT NULL,
`consultant_id` int NOT NULL COMMENT '咨询师ID',
`start_time` datetime NOT NULL,
`end_time` datetime DEFAULT NULL,
`status` tinyint DEFAULT '0' COMMENT '0-待处理 1-已完成 2-已取消',
`evaluation_id` int DEFAULT NULL COMMENT '关联的评估报告ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
风险评估等级(risk_level)采用字典值存储,方便后续统计高危学生比例。咨询记录表(consultation)与评估报告建立关联,实现咨询全流程追溯。
3. 核心功能实现
3.1 心理评估模块
系统集成SCL-90、SDS等标准量表,采用动态表单技术实现评估问卷渲染:
java复制// 评估问题加载接口
@GetMapping("/questions/{scaleId}")
public Result<List<QuestionVO>> getQuestions(
@PathVariable Integer scaleId) {
List<Question> questions = questionService
.lambdaQuery()
.eq(Question::getScaleId, scaleId)
.orderByAsc(Question::getSort)
.list();
return Result.success(BeanUtil.copyToList(questions, QuestionVO.class));
}
前端使用Vue的动态组件渲染不同类型题目(单选、多选、矩阵题等),通过v-for循环生成问题列表,配合Element UI的el-radio-group等组件实现交互。
3.2 咨询预约流程
学生端预约功能包含三个关键步骤:
- 咨询师可预约时间查询(使用MySQL窗口函数处理时间冲突)
- 预约表单提交(包含紧急程度等元数据)
- 微信模板消息通知(通过Spring Boot Starter集成微信公众号API)
java复制// 时间冲突检测SQL片段
SELECT id FROM consultant_schedule
WHERE consultant_id = #{consultantId}
AND NOT (
end_time <= #{startTime}
OR start_time >= #{endTime}
)
4. 部署与运维
4.1 环境准备
推荐使用Docker Compose编排服务:
yaml复制version: '3'
services:
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root
ports:
- "3306:3306"
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/init:/docker-entrypoint-initdb.d
redis:
image: redis:6
ports:
- "6379:6379"
初始化脚本包含基础数据:
- 管理员账号(admin/123456)
- 常用心理评估量表模板
- 学院专业基础数据
4.2 常见问题排查
- 前端跨域问题:确保后端配置了正确的CORS规则
java复制@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*")
.maxAge(3600);
}
}
-
微信通知发送失败:检查公众号配置的IP白名单是否包含服务器IP
-
评估报告生成缓慢:对scl90_result等大表添加student_id索引
5. 扩展建议
实际部署时可考虑以下优化:
- 接入学校统一认证(如CAS或OAuth2)
- 增加咨询师工作台视图(待办事项日历)
- 使用Elasticsearch实现评估报告全文检索
- 通过WebSocket实现紧急咨询实时通知
系统已预留扩展接口,例如在ConsultationService中定义了事件发布方法,可以方便地对接短信网关等第三方服务。我在某高校项目中的实践表明,这套基础架构可支撑日均200+咨询量的运行需求。
