💖💖作者:计算机编程小咖 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目
@TOC
基于WEB的大学生心理互助社区系统介绍
《基于WEB的大学生心理互助社区》是一个专门为大学生群体打造的综合性心理健康服务平台,该系统采用B/S架构设计,支持Java+SpringBoot和Python+Django两种主流技术栈实现,前端采用Vue框架结合ElementUI组件库构建用户界面,后端通过SpringMVC+Mybatis实现业务逻辑处理,数据存储基于MySQL数据库。系统围绕大学生心理健康需求,构建了完整的服务生态:用户可以通过系统首页浏览心理资讯和轮播图信息,通过用户信息管理模块完善个人档案;专业心理咨询师入驻平台提供在线预约服务,学生可以便捷地进行咨询预约和取消预约操作,并在服务结束后进行服务评价;系统内置丰富的心理文章和心理资讯模块,支持分类管理和浏览,帮助学生获取专业的心理健康知识;特色功能包括心理测试系统,通过试题内容管理和试题内容库管理实现标准化测评,结合分数判定功能为用户提供科学的心理健康评估;交流论坛模块支持论坛分类管理,为学生提供同伴互助交流平台,配备举报记录功能维护社区环境;系统还集成了个人信息管理、密码修改、系统日志记录等基础功能,确保平台安全稳定运行,为大学生提供全方位的心理健康支持服务。
基于WEB的大学生心理互助社区系统演示视频
基于WEB的大学生心理互助社区系统演示图片
基于WEB的大学生心理互助社区系统代码展示
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
@RequestMapping("/api")
public class PsychologyCommunityController {
private SparkSession spark = SparkSession.builder().appName("PsychologyDataAnalysis").master("local[*]").getOrCreate();
@Autowired
private UserService userService;
@Autowired
private AppointmentService appointmentService;
@Autowired
private TestService testService;
@PostMapping("/appointment/book")
public Map<String, Object> bookAppointment(@RequestBody Map<String, Object> request) {
Map<String, Object> response = new HashMap<>();
Integer userId = (Integer) request.get("userId");
Integer counselorId = (Integer) request.get("counselorId");
String appointmentDate = (String) request.get("appointmentDate");
String timeSlot = (String) request.get("timeSlot");
if (userId == null || counselorId == null || appointmentDate == null || timeSlot == null) {
response.put("success", false);
response.put("message", "预约信息不完整");
return response;
}
List<Appointment> existingAppointments = appointmentService.getAppointmentsByCounselorAndDate(counselorId, appointmentDate);
boolean isTimeSlotAvailable = existingAppointments.stream().noneMatch(apt -> apt.getTimeSlot().equals(timeSlot));
if (!isTimeSlotAvailable) {
response.put("success", false);
response.put("message", "该时间段已被预约");
return response;
}
User user = userService.getUserById(userId);
User counselor = userService.getUserById(counselorId);
if (user == null || counselor == null || !counselor.getRole().equals("COUNSELOR")) {
response.put("success", false);
response.put("message", "用户或心理咨询师信息无效");
return response;
}
Appointment appointment = new Appointment();
appointment.setUserId(userId);
appointment.setCounselorId(counselorId);
appointment.setAppointmentDate(appointmentDate);
appointment.setTimeSlot(timeSlot);
appointment.setStatus("PENDING");
appointment.setCreateTime(new Date());
appointmentService.saveAppointment(appointment);
Dataset<Row> appointmentData = spark.sql("SELECT counselor_id, COUNT(*) as appointment_count FROM appointments WHERE appointment_date >= date_sub(current_date(), 30) GROUP BY counselor_id ORDER BY appointment_count DESC");
appointmentData.show();
response.put("success", true);
response.put("message", "预约成功");
response.put("appointmentId", appointment.getId());
return response;
}
@PostMapping("/test/submit")
public Map<String, Object> submitPsychTest(@RequestBody Map<String, Object> request) {
Map<String, Object> response = new HashMap<>();
Integer userId = (Integer) request.get("userId");
Integer testId = (Integer) request.get("testId");
List<Map<String, Object>> answers = (List<Map<String, Object>>) request.get("answers");
if (userId == null || testId == null || answers == null || answers.isEmpty()) {
response.put("success", false);
response.put("message", "测试数据不完整");
return response;
}
Test test = testService.getTestById(testId);
if (test == null) {
response.put("success", false);
response.put("message", "测试不存在");
return response;
}
int totalScore = 0;
List<TestQuestion> questions = testService.getQuestionsByTestId(testId);
for (Map<String, Object> answer : answers) {
Integer questionId = (Integer) answer.get("questionId");
Integer selectedOption = (Integer) answer.get("selectedOption");
TestQuestion question = questions.stream().filter(q -> q.getId().equals(questionId)).findFirst().orElse(null);
if (question != null) {
totalScore += question.getOptionScores().get(selectedOption);
}
}
String resultLevel = determineTestResult(totalScore, test.getScoreRanges());
TestResult testResult = new TestResult();
testResult.setUserId(userId);
testResult.setTestId(testId);
testResult.setTotalScore(totalScore);
testResult.setResultLevel(resultLevel);
testResult.setAnswers(answers.toString());
testResult.setSubmitTime(new Date());
testService.saveTestResult(testResult);
Dataset<Row> testAnalysis = spark.sql("SELECT test_id, AVG(total_score) as avg_score, COUNT(*) as participant_count FROM test_results WHERE submit_time >= date_sub(current_date(), 30) GROUP BY test_id");
testAnalysis.show();
response.put("success", true);
response.put("message", "测试提交成功");
response.put("totalScore", totalScore);
response.put("resultLevel", resultLevel);
response.put("resultId", testResult.getId());
return response;
}
@PostMapping("/forum/post")
public Map<String, Object> createForumPost(@RequestBody Map<String, Object> request) {
Map<String, Object> response = new HashMap<>();
Integer userId = (Integer) request.get("userId");
Integer categoryId = (Integer) request.get("categoryId");
String title = (String) request.get("title");
String content = (String) request.get("content");
if (userId == null || categoryId == null || title == null || content == null) {
response.put("success", false);
response.put("message", "帖子信息不完整");
return response;
}
if (title.length() < 5 || title.length() > 100) {
response.put("success", false);
response.put("message", "标题长度应在5-100字符之间");
return response;
}
if (content.length() < 10 || content.length() > 5000) {
response.put("success", false);
response.put("message", "内容长度应在10-5000字符之间");
return response;
}
User user = userService.getUserById(userId);
ForumCategory category = forumService.getCategoryById(categoryId);
if (user == null || category == null) {
response.put("success", false);
response.put("message", "用户或分类信息无效");
return response;
}
List<String> sensitiveWords = Arrays.asList("自杀", "死亡", "伤害");
boolean containsSensitive = sensitiveWords.stream().anyMatch(word -> title.contains(word) || content.contains(word));
if (containsSensitive) {
response.put("success", false);
response.put("message", "内容包含敏感词汇,请修改后重新发布");
return response;
}
ForumPost post = new ForumPost();
post.setUserId(userId);
post.setCategoryId(categoryId);
post.setTitle(title);
post.setContent(content);
post.setStatus("PUBLISHED");
post.setCreateTime(new Date());
post.setViewCount(0);
post.setReplyCount(0);
forumService.savePost(post);
Dataset<Row> forumActivity = spark.sql("SELECT category_id, COUNT(*) as post_count FROM forum_posts WHERE create_time >= date_sub(current_date(), 7) GROUP BY category_id ORDER BY post_count DESC");
forumActivity.show();
response.put("success", true);
response.put("message", "帖子发布成功");
response.put("postId", post.getId());
return response;
}
private String determineTestResult(int score, Map<String, Integer> scoreRanges) {
if (score >= scoreRanges.get("severe")) return "重度";
if (score >= scoreRanges.get("moderate")) return "中度";
if (score >= scoreRanges.get("mild")) return "轻度";
return "正常";
}
}
基于WEB的大学生心理互助社区系统文档展示
💖💖作者:计算机编程小咖 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目