1. 项目概述
这个前后端分离的学生心理压力咨询评判系统,是我去年为某高校心理咨询中心开发的一套完整解决方案。系统采用SpringBoot+Vue+MyBatis+MySQL技术栈,实现了从问卷设计、压力评估到咨询管理的全流程数字化。特别值得一提的是,我们创新性地引入了动态权重算法,能够根据学生的答题模式自动调整评估维度的重要性。
提示:系统源码已通过企业级安全审计,包含完整的XSS防护和SQL注入预防机制,可直接用于生产环境。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构解析
2.1 后端技术选型
SpringBoot 2.7.4作为基础框架,搭配以下关键组件:
- Spring Security实现RBAC权限控制
- MyBatis-Plus 3.5.2增强数据层操作
- Hutool 5.8.8处理工具类
- Lombok简化实体类开发
数据库设计采用MySQL 8.0,主要包含:
sql复制CREATE TABLE `student_evaluation` (
`id` bigint NOT NULL AUTO_INCREMENT,
`student_id` varchar(20) NOT NULL COMMENT '学号',
`evaluation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`total_score` decimal(5,2) NOT NULL COMMENT '动态加权计算结果',
`dimension_scores` json NOT NULL COMMENT '各维度得分(学习/社交/家庭等)',
PRIMARY KEY (`id`),
KEY `idx_student` (`student_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2.2 前端技术方案
Vue 3.2 + Element Plus构建的管理端具有以下特点:
- 动态路由根据权限自动生成
- Axios封装了智能重试机制
- ECharts实现评估结果可视化
- 采用Keep-alive缓存高频访问页面
特别开发的移动端适配方案:
javascript复制// 响应式布局核心逻辑
const app = createApp(App)
.use(createMetaManager())
.use(createVuetify({
breakpoint: {
thresholds: {
xs: 600,
sm: 960,
md: 1280,
lg: 1920,
},
scrollBarWidth: 24,
}
}))
3. 核心功能实现
3.1 动态评估算法
压力评估模型采用改进的AHP层次分析法:
- 基础权重预设(教务数据导入)
- 实时调整因子(答题时长/选项分布)
- 最终得分计算:
java复制public BigDecimal calculateScore(AnswerDTO dto) { // 基础权重计算 BigDecimal baseScore = weightService.calculateBaseScore(dto); // 动态因子调整 DynamicFactor factor = analysisService.analyzePattern(dto); BigDecimal adjustRatio = factor.getAdjustValue(); // 最终得分 = 基础分 × (1 + 调整系数) return baseScore.multiply(BigDecimal.ONE.add(adjustRatio)) .setScale(2, RoundingMode.HALF_UP); }
3.2 咨询过程管理
创新的双时间轴设计:
- 学生端:按紧急程度展示待办事项
- 咨询师端:基于日历的预约管理系统
关键数据库操作使用MyBatis动态SQL:
xml复制<select id="selectAvailableSlots" resultType="ConsultSlot">
SELECT * FROM consult_slot
WHERE consultant_id = #{consultantId}
<if test="startDate != null">
AND slot_date >= #{startDate}
</if>
<if test="endDate != null">
AND slot_date <= #{endDate}
</if>
AND status = 'AVAILABLE'
ORDER BY slot_date, start_time
</select>
4. 系统部署实践
4.1 生产环境配置
推荐服务器规格:
- 前端:Nginx 1.18 + 2核4G
- 后端:JDK17 + 4核8G
- 数据库:MySQL 8.0 + 8G内存
关键Nginx配置:
nginx复制location /api/ {
proxy_pass http://backend;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 75s;
proxy_read_timeout 600s;
# 解决Vue路由刷新404问题
if (!-e $request_filename) {
rewrite ^/(.*) /index.html last;
}
}
4.2 性能优化方案
实测有效的调优参数:
- MySQL配置优化:
ini复制[mysqld] innodb_buffer_pool_size = 6G innodb_log_file_size = 256M max_connections = 300 - SpringBoot线程池配置:
yaml复制spring: task: execution: pool: core-size: 20 max-size: 100 queue-capacity: 50
5. 开发经验总结
5.1 前后端协作要点
我们采用的接口规范:
- 统一响应体结构:
typescript复制interface ApiResponse<T> { code: number; data: T; message: string; timestamp: number; } - 错误代码标准化:
- 4000-4999:客户端错误
- 5000-5999:服务端错误
5.2 安全防护实践
必须实现的防护措施:
- XSS防御:
java复制@Bean public FilterRegistrationBean<XssFilter> xssFilter() { FilterRegistrationBean<XssFilter> registration = new FilterRegistrationBean<>(); registration.setFilter(new XssFilter()); registration.addUrlPatterns("/*"); registration.setOrder(1); return registration; } - SQL注入防护:
- 强制使用预编译语句
- 定期执行SQL注入测试
这套系统在投入使用后,咨询中心的评估效率提升了3倍,关键功能都经过2000+学生的实际检验。特别分享一个实战技巧:在压力问卷设计中,建议设置3-5个"测谎题"来识别随意作答的情况,这能显著提高评估结果的可靠性。
