摘要
本文旨在设计与实现一个基于微信小程序和Spring Boot的心理测评与咨询系统。该系统结合了移动互联网技术的便捷性和后端框架的稳健性,为用户提供了一个方便、高效且安全的心理健康服务平台。系统采用微信小程序作为前端展示与交互界面,利用其即用即走、易于推广的特点,实现了心理测评的快速访问和便捷使用。后端则采用Spring Boot框架,通过其快速构建、易于扩展的特性,实现了心理测评数据的处理、存储以及咨询服务的提供。同时,系统还采用了数据加密、用户身份验证等安全措施,确保用户数据的安全性和隐私性。通过该系统,用户可以方便地进行心理测评,获取个性化的心理健康建议,并与专业心理咨询师进行在线交流,获得专业的心理咨询服务。本文详细介绍了系统的设计与实现过程,包括需求分析、系统设计、技术选型、功能实现等方面,并对系统的性能和安全性进行了评估。研究结果表明,该系统具有良好的用户体验和实用性,为心理健康服务的普及和推广提供了有力的技术支持。
关键词:心理测评与咨询系统;微信小程序;SpringBoot;系统设计与实现
Abstract
This article aims to design and implement a psychological assessment and counseling system based on WeChat mini programs and Spring Boot. The system combines the convenience of mobile Internet technology and the robustness of the back-end framework to provide users with a convenient, efficient and safe mental health service platform. The system uses WeChat mini programs as the front-end display and interaction interface, utilizing its features of being ready to use and easy to promote, to achieve fast access and convenient use of psychological assessment. The backend uses the Spring Boot framework, which enables the processing, storage, and provision of counseling services for psychological assessment data through its fast construction and easy scalability features. At the same time, the system also adopts security measures such as data encryption and user authentication to ensure the security and privacy of user data. Through this system, users can conveniently conduct psychological assessments, obtain personalized mental health advice, and communicate online with professional psychological counselors to obtain professional psychological counseling services. This article provides a detailed introduction to the design and implementation process of the system, including requirements analysis, system design, technology selection, functional implementation, and evaluates the performance and security of the system. The research results indicate that the system has a good user experience and practicality, providing strong technical support for the popularization and promotion of mental health services.
Keywords: psychological assessment and counseling system; WeChat Mini Program; SpringBoot; System Design and Implementation
目录
1 绪论
1.1 课题研究背景与意义
随着社会的快速发展和竞争的加剧,心理健康问题日益受到人们的关注。心理测评与咨询作为解决心理健康问题的重要手段,对于帮助个体了解自身心理状况、预防心理疾病、提高生活质量具有重要意义。然而,传统的心理测评与咨询通常需要专业人员在场,流程繁琐,且受到时间和地点的限制,不利于大规模推广和普及。
因此,利用移动互联网技术,开发一款基于微信小程序和Spring Boot的心理测评与咨询系统,具有重要的研究价值和实践意义。微信小程序作为一种轻量级应用,具有广泛的用户基础和便捷的使用体验,适合用于心理测评与咨询的普及和推广。而Spring Boot框架以其快速构建、易于扩展的特性,为系统提供了稳定、可靠的后端支持。
通过该系统的设计与实现,可以实现心理测评与咨询的线上化、移动化和普及化,打破时间和地点的限制,让更多的人能够方便、快捷地获取心理健康服务。同时,该系统还可以利用大数据技术进行数据挖掘与分析,为用户提供个性化的心理健康建议和资源推荐,提高心理健康问题的发现与解决效率。
综上所述,基于微信小程序和Spring Boot的心理测评与咨询系统的设计与实现,不仅具有理论价值,更具有实际应用价值,对于推动心理健康服务的普及和发展具有重要意义。
1.2国内外研究现状
国内研究现状:
近年来,随着移动互联网技术的快速发展,国内对于基于微信小程序的心理测评与咨询系统的研究逐渐增多。许多学者和机构开始探索将微信小程序应用于心理健康服务领域,通过开发心理测评与咨询小程序,为用户提供便捷、高效的心理健康服务。这些研究主要集中在系统的设计与实现、用户体验优化、数据安全与隐私保护等方面。同时,随着大数据和人工智能技术的发展,国内的研究也开始探索如何利用这些先进技术对心理测评与咨询系统进行智能化升级,提高服务的个性化和精准性。
国外研究现状:
在国外,心理健康服务领域对于移动应用的研究起步较早,已经形成了较为成熟的研究体系。许多国外学者和机构致力于开发基于移动应用的心理测评与咨询系统,为用户提供更加便捷、个性化的心理健康服务。这些系统通常结合了心理学、计算机科学、人工智能等多个学科的知识,采用了先进的技术手段,如自然语言处理、机器学习等,对用户的心理状态进行评估和预测,并提供专业的咨询建议和治疗方案。此外,国外的研究还注重保护用户的隐私和安全,采用了多种加密和安全认证技术,确保用户数据的安全性和保密性。
综上所述,国内外在基于微信小程序和Spring Boot的心理测评与咨询系统的设计与实现方面都已经取得了一定的研究成果。然而,随着技术的不断发展和用户需求的不断变化,该领域的研究仍然具有广阔的探索空间和应用前景。
1.3系统开发技术的特色
(1)系统采用前后端分离的开发模式,使得前端和后端可以独立开发和维护,提高了开发效率和系统的可维护性。
(2)系统采用微服务架构,将系统拆分成多个独立的服务,每个服务可以独立部署和扩展,提高了系统的灵活性和可扩展性。
(3)系统采用 Docker 容器化部署技术,使得系统可以快速部署和迁移,提高了系统的可靠性和可移植性。
(4)系统采用自动化测试技术,包括单元测试、接口测试和性能测试等,提高了系统的稳定性和可靠性。
(5)系统采用安全保障技术,包括用户认证、授权、数据加密等,保障了系统的安全性和用户的隐私。
这些技术特色使得基于微信小程序的心理测评与咨询系统具有高效、稳定、可靠、安全等优点,能够满足用户的需求和提高用户的体验。
2 基于微信小程序的心理测评与咨询系统分析
基于微信小程序的心理测评与咨询系统可在微信端实现登录注册、首页、心理测评、专家信息、网站公告、交流论坛、心理资讯、我的(基本信息、收藏、心理咨询、心理预约、心理档案、测评结果)等操作,相对于传统心理测评与咨询方式,基于微信小程序的心理测评与咨询系统提高了效率和便利性。在后台可对系统用户、专家信息、心理咨询、心理预约、心理档案、测评结果、轮播图、敏感词、通知公告、心理资讯、心理测评、交流论坛等进行管理,充分了解用户的需求,更有针对性的服务用户。
2.1可行性分析
2.1.1技术可行性分析
基于微信小程序的心理测评与咨询系统存储所使用的mysql数据库以及开发中所使用的IDEA、Tomcat这些开发工具的使用,能够给我们的编写工作带来许多的便利。系统使用springboot框架进行开发,使系统的可扩展性和维护性更佳,减少java配置代码,简化编程代码,目前springboot框架也是很多企业选择的框架之一。
2.1.2经济可行性分析
在开发基于微信小程序的心理测评与咨询系统中所使用的开发软件像IDEA开发工具、Tomcat8.0服务器、MySQL5.7数据库、Photoshop图片处理软件等,这些都是开源免费的,并且基于微信小程序的心理测评与咨询系统是自己设计并编码实现的,数据库是使用流行mysql进行数据的存储,开源的mysql等技术的使用,减少系统开发费用。
2.1.3操作可行性分析
在日常生活中,随着小程序的快速推广和使用,越来越多人掌握小程序的使用方法,基于微信小程序的心理测评与咨询系统在这种条件背景下是很容易被人们所接受和熟悉的,所以在操作上没任何问题。
2.2功能需求分析
基于微信小程序的心理测评与咨询系统中的web后台管理端采用了IntelliJ IDEA 2019.3.4 开发工具,配合了java开发语言中springboot开发框架以及tomcat8.0服务器、jdk1.8,微信端采用了微信开发者工具稳定版1.05.2111300,页面使用wxss和wxml进行布局,微信端和web后台管理端采用json接口通信。
登录注册: 提供普通用户注册和登录功能,确保用户身份的安全性和唯一性。
首页: 展示系统的主要功能入口和最新信息,包括心理测评、专家信息、网站公告、交流论坛等。
心理测评: 提供用户进行心理测评的功能,包括选择测评项目、填写问卷等。
专家信息: 提供心理专家的相关信息,方便用户选择合适的咨询对象。
网站公告: 提供系统发布的重要公告消息,包括活动通知、系统更新等。
交流论坛: 提供用户进行心理交流的平台,包括心理问题讨论、经验分享等。
心理资讯: 提供最新的心理资讯和心理健康知识,帮助用户了解心理健康相关信息。
我的: 用户个人中心,包括个人基本信息、收藏的内容、心理咨询、心理预约、心理档案、测评结果等。
2. 管理员功能:
后台首页: 提供管理员登录后的管理主页,展示系统的重要信息和功能入口。
系统用户: 管理系统内的用户信息,包括普通用户、心理专家和管理员的账户信息和权限设置。
专家信息管理: 管理心理专家的信息,包括添加、编辑和删除专家信息。
心理咨询管理: 管理用户的心理咨询请求,包括接受、安排和记录咨询过程等。
心理预约管理: 管理用户的心理预约服务,包括预约时间、安排咨询等。
心理档案管理: 管理用户的心理档案信息,包括存储、查看和更新用户档案。
测评结果管理: 管理用户的心理测评结果,包括分析、存档和提供反馈等。
系统管理: 管理系统的基本设置和运行状态,包括轮播图管理、敏感词管理等。
通知公告管理: 管理系统发布的公告消息,包括发布、编辑和删除等操作。
资源管理: 管理系统的心理资讯和资讯分类,包括发布、分类和管理等。
交流管理: 管理交流论坛的内容,包括帖子审核、评论管理等。
3. 心理专家功能:
后台首页: 提供心理专家登录后的管理主页,展示系统的重要信息和功能入口。
专家信息管理: 管理个人信息和服务内容,包括更新个人资料、修改服务时间等。
心理咨询管理: 处理用户的心理咨询请求,包括安排咨询时间、记录咨询内容等。
心理预约管理: 管理用户的心理预约服务,包括接受预约、安排咨询等。
心理档案管理: 管理用户的心理档案信息,包括查看、分析和更新档案内容。
测评结果管理: 查看和分析用户的心理测评结果,为咨询提供参考和建议。
资源管理: 管理心理咨询过程中需要使用的资源,包括心理测试工具、咨询指南等。
以上是基于微信小程序和SpringBoot的心理测评与咨询系统的功能需求分析,涵盖了普通用户、管理员和心理专家三个角色的功能设计与实现要求。
基于微信小程序的心理测评与咨询系统的完整UML用例图分别是图2-1,图2-2河图2-3。在参与者上包括普通用户、心理专家以及管理员。
普通用户角色的用例包括登录注册、首页、心理测评、专家信息、网站公告、交流论坛、心理资讯、我的(基本信息、收藏、心理咨询、心理预约、心理档案、测评结果)。

图2-1 基于微信小程序的心理测评与咨询系统普通用户角色用例图
心理专家角色的用例包括后台首页、专家信息管理、心理咨询管理、心理预约管理、心理档案管理、测评结果管理、资源管理(心理测评)。
图2-2基于微信小程序的心理测评与咨询系统心理专家角色用例图
管理员角色的用例包括后台首页、系统用户、专家信息管理、心理咨询管理、心理预约管理、心理档案管理、测评结果管理、系统管理(轮播图管理、敏感词管理)、通知公告管理、资源管理(心理资讯、资讯分类、心理测评)、交流管理(交流论坛、论坛分类)。
图2-3 基于微信小程序的心理测评与咨询系统管理员角色用例图
3基于微信小程序的心理测评与咨询系统总体设计
在上一章节中分析了基于微信小程序的心理测评与咨询系统的功能性需求,并且根据需求分析了基于微信小程序的心理测评与咨询系统中的用例。那么接下来就要开始对基于微信小程序的心理测评与咨询系统架构、主要功能和数据库开始进行设计。
3.1系统功能模块设计
通过对基于微信小程序的心理测评与咨询系统的功能需求分析以及用例分析,得出了基于微信小程序的心理测评与咨询系统的功能模块图如图3-1所示。
3.3数据库设计
3.3.1 数据库E-R模型
下面是整个基于微信小程序的心理测评与咨询系统的数据库表的E-R实体关系图,如图3-2所示:

图3-2 基于微信小程序的心理测评与咨询系统E-R实体关系图
3.3.2 数据库表设计
通过上一小节中基于微信小程序心理测评与咨询系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
表access_token (登陆访问时长)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | evaluation_results_id | int | 10 | 0 | N | Y | 测评结果ID | |
2 | title_of_evaluation_paper | varchar | 64 | 0 | Y | N | 测评卷名 | |
3 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
4 | expert_users | int | 10 | 0 | Y | N | 0 | 专家用户 |
5 | evaluation_score | int | 10 | 0 | Y | N | 0 | 测评分值 |
6 | evaluation_results | varchar | 64 | 0 | Y | N | 测评结果 | |
7 | evaluation_interpretation | text | 65535 | 0 | Y | N | 测评解读 | |
8 | expert_advice | text | 65535 | 0 | Y | N | 专家建议 | |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | exam_id | mediumint | 8 | 0 | N | Y | 考试id | |
2 | name | varchar | 32 | 0 | N | N | 考试名称:[2,32] | |
3 | duration | int | 10 | 0 | Y | N | 答题时长 | |
4 | score | double | 9 | 2 | Y | N | 总分 | |
5 | status | varchar | 10 | 0 | Y | N | 状态:启用、禁用 | |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | exam_question_id | mediumint | 8 | 0 | N | Y | ||
2 | type | varchar | 20 | 0 | Y | N | 类型 | |
3 | title | varchar | 255 | 0 | Y | N | 题目 | |
4 | question_item | varchar | 500 | 0 | Y | N | 选项 | |
5 | answer | varchar | 500 | 0 | Y | N | 参考答案 | |
6 | score | double | 9 | 2 | Y | N | 总分 | |
7 | question_order | int | 10 | 0 | Y | N | 排序 | |
8 | exam_id | mediumint | 7 | 0 | Y | N | 所属试卷 | |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | expert_information_id | int | 10 | 0 | N | Y | 专家信息ID | |
2 | expert_users | int | 10 | 0 | Y | N | 0 | 专家用户 |
3 | expert_name | varchar | 64 | 0 | N | N | 专家姓名 | |
4 | expert_gender | varchar | 64 | 0 | Y | N | 专家性别 | |
5 | professional_field | varchar | 64 | 0 | Y | N | 专业领域 | |
6 | accumulated_appointments | int | 10 | 0 | Y | N | 0 | 累计预约 |
7 | cover_photo | varchar | 255 | 0 | Y | N | 封面图片 | |
8 | expert_introduction | text | 65535 | 0 | Y | N | 专家简介 | |
9 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
10 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | forum_id | mediumint | 8 | 0 | N | Y | 论坛id | |
2 | display | smallint | 5 | 0 | N | N | 100 | 排序 |
3 | user_id | mediumint | 8 | 0 | N | N | 0 | 用户ID |
4 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
5 | praise_len | int | 10 | 0 | Y | N | 0 | 点赞数 |
6 | hits | int | 10 | 0 | N | N | 0 | 访问数 |
7 | title | varchar | 125 | 0 | N | N | 标题 | |
8 | keywords | varchar | 125 | 0 | Y | N | 关键词 | |
9 | description | varchar | 255 | 0 | Y | N | 描述 | |
10 | url | varchar | 255 | 0 | Y | N | 来源地址 | |
11 | tag | varchar | 255 | 0 | Y | N | 标签 | |
12 | img | text | 65535 | 0 | Y | N | 封面图 | |
13 | content | longtext | 2147483647 | 0 | Y | N | 正文 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
16 | avatar | varchar | 255 | 0 | Y | N | 发帖人头像: | |
17 | type | varchar | 64 | 0 | N | N | 0 | 论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
3 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
4 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
5 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
6 | icon | varchar | 255 | 0 | Y | N | 分类图标: | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
表psychological_appointment (心理预约)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | psychological_appointment_id | int | 10 | 0 | N | Y | 心理预约ID | |
2 | expert_users | int | 10 | 0 | Y | N | 0 | 专家用户 |
3 | expert_name | varchar | 64 | 0 | Y | N | 专家姓名 | |
4 | appointment_date | date | 10 | 0 | Y | N | 预约日期 | |
5 | appointment_period | varchar | 64 | 0 | Y | N | 预约时段 | |
6 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
7 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
8 | number_of_reservations | int | 10 | 0 | Y | N | 0 | 预约人数 |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表psychological_archives (心理档案)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | psychological_archives_id | int | 10 | 0 | N | Y | 心理档案ID | |
2 | expert_users | int | 10 | 0 | Y | N | 0 | 专家用户 |
3 | expert_name | varchar | 64 | 0 | Y | N | 专家姓名 | |
4 | diagnosis_date | date | 10 | 0 | Y | N | 诊断日期 | |
5 | regular_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
6 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
7 | health_index | int | 10 | 0 | Y | N | 0 | 健康指数 |
8 | health_status | varchar | 64 | 0 | Y | N | 健康状态 | |
9 | diagnostic_report | text | 65535 | 0 | Y | N | 诊断报告 | |
10 | crisis_intervention | text | 65535 | 0 | Y | N | 危机干预 | |
11 | expert_advice | text | 65535 | 0 | Y | N | 专家建议 | |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表psychological_counseling (心理咨询)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | psychological_counseling_id | int | 10 | 0 | N | Y | 心理咨询ID | |
2 | expert_users | int | 10 | 0 | Y | N | 0 | 专家用户 |
3 | expert_name | varchar | 64 | 0 | Y | N | 专家姓名 | |
4 | consulting_users | int | 10 | 0 | Y | N | 0 | 咨询用户 |
5 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
6 | reply_status | varchar | 64 | 0 | Y | N | 回复状态 | |
7 | consultation_questions | text | 65535 | 0 | Y | N | 咨询问题 | |
8 | expert_response | text | 65535 | 0 | Y | N | 专家回复 | |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | psychologists_id | int | 10 | 0 | N | Y | 心理专家ID | |
2 | expert_name | varchar | 64 | 0 | Y | N | 专家姓名 | |
3 | expert_gender | varchar | 64 | 0 | Y | N | 专家性别 | |
4 | professional_field | varchar | 64 | 0 | Y | N | 专业领域 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | sensitive_vocabulary_id | int | 10 | 0 | N | Y | 敏感词汇ID | |
2 | sensitive_vocabulary | varchar | 64 | 0 | Y | N | 敏感词汇 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_answer_id | mediumint | 8 | 0 | N | Y | ||
2 | user_id | mediumint | 7 | 0 | N | N | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
3 | exam_id | mediumint | 7 | 0 | N | N | 0 | 考试id |
4 | score | double | 9 | 2 | Y | N | 0.00 | 分数 |
5 | answers | text | 65535 | 0 | Y | N | 答案 | |
6 | score_detail | text | 65535 | 0 | Y | N | 评分详情 | |
7 | objective_score | double | 9 | 2 | Y | N | 0.00 | 客观题得分 |
8 | subjective_score | double | 9 | 2 | Y | N | 0.00 | 主观题得分 |
9 | score_state | tinyint | 4 | 0 | Y | N | 0 | 评分状态 |
10 | nickname | varchar | 255 | 0 | Y | N | 提交人 | |
11 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
4 基于微信小程序的心理测评与咨询系统实现
基于微信小程序的心理测评与咨询系统划分了微信小程序普通用户端和web后台心理专家、管理员端,微信端实现登录注册、首页、心理测评、专家信息、网站公告、交流论坛、心理资讯、我的(基本信息、收藏、心理咨询、心理预约、心理档案、测评结果)等功能,web端是为后台管理员、心理专家提供专家信息管理、心理咨询管理、心理预约管理、心理档案管理、测评结果管理、系统管理(轮播图管理、敏感词管理)、通知公告管理、资源管理(心理资讯、资讯分类、心理测评)、交流管理(交流论坛、论坛分类)的平台。
4.1 前台微信端
4.1.1 用户注册界面
不是基于微信小程序的心理测评与咨询系统的用户可以通过微信小程序在线进行注册,填写上自己的账号、密码、重复密码、昵称、邮箱登信息后点击“提交”按钮后将会验证是否有非空数据,再验证密码和重复密码是否一样,最后验证是否账号重复,都验证没问题后即可注册成功。注册实现了用户注册和发布者注册两部分,其用户注册界面展示如下图4-1所示。
图4-1用户注册界面图
注册页UserController.java,传入user对象,并将"user_id"、 "state"、 "user_group"、"login_time"、"phone"、"phone_state"、 "username"、"nickname"、"password"、"email"、"email_state"、"avatar"、"create_time"输入,重点是 "username"、"nickname"、"password"必须输入,通过获取username,数据库查询是否有该用户,如果存在,则提示“用户已存在”,否则执行将UserId置为空(数据库表中该字段已设置自动递增),代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
注册页password则使用了MD5加密,代码如下:
public String encryption(String plainText) {
String re_md5 = new String();
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
re_md5 = buf.toString();
} catch (Exception e) {
e.printStackTrace();
}
return re_md5;
}
4.1.2 用户登录界面
微信小程序上注册后的用户可以通过自己的用户名和密码进行登录,在用户填写好自己的用户名和密码信息并点击“登录”按钮后,将会先验证是否有非空数据,再验证填写的用户信息和数据库中保存的是否一致,一致后将会登录成功,登录成功后将会在左上角上显示用户信息;否则将会提示相应错误信息,用户登录界面如下图4-2所示。
图4-2用户登录界面图
登录页,首先传入"username"、"email"、"phone"、"password",用户可通过用户名、邮箱、手机号进行登陆,通过判断resultList来确定查询结果,然后执行查询用户组UserGroup,用户组里面不存在,依然报“用户不存在”,执行完以上代码,最后涉及到用户带有“审核”的,会查询examine_state(用户的审核状态),数据库表user_group中含有source_table和source_field进行查询,以上步骤完成,对输入的密码进行存储Token到数据库,匹对账号和密码,数据库中的AccessToken为令牌,用于身份认证,其代码如下:
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
Duration duration = Duration.ofSeconds(7200L);
redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
输入有效的用户名和密码信息,点击“登录”按钮,自动跳转到“首页”页面,首页界面如下图4-3所示。
图4-3首页界面图
4.1.3 心理资讯界面
用户点击心理资讯按钮,可以进入心理资讯列表,点击感兴趣的心理资讯,进入心理资讯详情页面,用户可以进行查看、点赞、收藏、评论等操作,界面如下图4-4所示。
图4-4心理资讯详情界面图
4.1.4 专家信息详情界面
用户点击专家信息可以进入专家信息列表,点击任意一个专家信息后将可以进入到该专家信息的详情界面中,用户可以查看专家信息的详细介绍,还可以进行心理咨询、心理预约、点赞、收藏、评论等,专家信息详情界面如下图4-5所示。
图4-5专家信息详情界面图
4.1.5 心理预约信息界面
在专家信息详情页面左下角点击“心理预约”后进入到心理预约界面,输入相关信息后,点击“提交”按钮后将会生成自己的心理预约信息,心理预约信息界面如下图4-6所示。
图4-6心理预约信息界面图
4.1.6心理咨询界面
在专家信息详情页面左下角点击“心理咨询”后进入到心理咨询界面,输入咨询信息后,点击“提交”按钮即可,心理咨询界面如下图4-7所示。
图4-7心理咨询界面图
4.1.7心理测评界面
点击基于微信小程序的心理测评与咨询系统端首页的“心理测评”菜单进入心理测评列表页面,用户点击答题即可进入答题界面进行测评,界面如下图4-8所示。
图4-8心理测评界面图
4.2 后台心理专家用户端
4.2.1 心理测评管理界面
心理专家点击“资源管理”这一菜单会显示“心理测评”菜单,点击“心理测评”可对心理测评的题库、答题、评分等进行管理,包括新增、删除、修改等。界面如下图4-9所示。

图4-9心理测评管理界面图
Controller用于spring控制请求的地址
新增一条数据,通过post传入一个json对象,然后经过request.getReader(),最后经过readBody()转成一个Map,含有String和Object,key用的是字段名,Object存放数据,最终得到Map,insert用拼装sql,读取body,组装成一个insert对象,runCountSql()语句,代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
修改一个数据,原理与add基本一致,不同点在于通过readConfig()读取关键字,以及通过readQuery()获取URL后面?指定位置的标识,转成Map对象后,执行update操作,同样通过拼接的sql语句执行,执行过程读取query,toWhereSql()语句完成数据库操作,body为修改对象的值,代码如下:
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
删除一条数据,通过readQuery(),获取URL后面的对象地址,删除FROM具体的table,query删除查询FindConfig语句,代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
}
通过请求的参数获取一条数据,通过readQuery(),获取URL后面的对象地址,查询FindConfig语句,select筛选Map对象,FIELD为查询字段,未传输的情况下传入“*”,代码如下:
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
通过请求的参数获取列表数据,代码如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
4.2.2 专家信息管理界面
心理专家点击“专家信息管理”这一菜单会显示专家信息列表、专家信息添加这两个子菜单,支持输入关键词对专家信息进行查询,如果想要添加新的专家信息,点击“专家信息添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条专家信息,点击“删除”进行删除。界面如下图4-10所示。

图4-10专家信息添加界面图
4.2.3 测评结果管理界面
心理专家点击后台左边的“测评结果管理”菜单后,心理专家可以查看和添加用户的心理测评结果,为咨询提供参考和建议。界面如下图4-11所示。

图4-11测评结果添加界面图
4.3后台管理员端
4.3.1 系统用户界面
管理员点击“系统用户”这一菜单会显示管理员、普通用户、心理专家用户这三个子菜单,管理员可以对这三个角色的信息进行增删改查操作。界面如下图4-12所示。

图4-12心理专家管理界面图
4.3.2专家信息管理界面
管理员点击后台左边的“专家信息管理”菜单后将可以对专家信息进行管理,包括添加、编辑和删除专家信息等,专家信息管理界面如下图4-13所示。

图4-13专家信息列表界面图
4.3.3系统管理界面
管理员点击“系统管理”这一菜单会显示轮播图这一个子菜单,管理员可以对前台展示的轮播图进行设置,界面如下图所示。

图片/文件/视频等的上传方法通过MultipartFile,代码如下:
@PostMapping("/upload")
public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {
log.info("进入方法");
if (file.isEmpty()) {
return error(30000, "没有选择文件");
}
try {
//判断有没路径,没有则创建
String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";
File targetDir = new File(filePath);
if (!targetDir.exists() && !targetDir.isDirectory()) {
if (targetDir.mkdirs()) {
log.info("创建目录成功");
} else {
log.error("创建目录失败");
}
}
String fileName = file.getOriginalFilename();
File dest = new File(filePath + fileName);
log.info("文件路径:{}", dest.getPath());
log.info("文件名:{}", dest.getName());
file.transferTo(dest);
JSONObject jsonObject = new JSONObject();
jsonObject.put("url", "/api/upload/" + fileName);
return success(jsonObject);
} catch (IOException e) {
log.info("上传失败:{}", e.getMessage());
}
return error(30000, "上传失败");
}
4.3.4通知公告管理界面
点击“通知公告管理”这个菜单,可以查看到系统中所有添加的通知公告,支持通过标题对通知公告进行查询,添加、删除等操作。通知公告管理界面如下图所示。

图4-15通知公告界面图
4.3.5资源管理界面
管理员点击“资源管理”这一菜单会显示心理资讯、资讯分类、心理测评这三个子菜单,管理员可以对这三部分涉及到的功能进行更新维护,更好的服务于前台用户。界面如下图所示。

5 基于微信小程序的心理测评与咨询系统测试
基于微信小程序的心理测评与咨询系统测试是为了检验软件是否达到设计要求,是否存在错误,通过测试的方法来检查基于微信小程序的心理测评与咨询系统,以便发现基于微信小程序的心理测评与咨询系统中的错误。测试工作是保证基于微信小程序的心理测评与咨询系统质量的关键。
微信端上用户在线心理预约功能测试:
表5-1微信端上用户在线心理预约功能测试用例表
测试名称 | 测试功能 | 操作 | 操作过程 | 预期结果 | 测试结果 |
在线心理预约功能模块测试 | 专家信息详情信息正常的显示 | 浏览专家信息详情信息 | 在小程序端上选择一个专家信息将会进入该专家信息的详情界面,同时可以心理预约、评论、收藏。 | 进入该专家信息的详情信息界面 | 正确 |
在线心理预约功能模块测试 | 专家信息详情信息正常的显示 | 浏览专家信息详情信息 | 点击“心理预约”填写心理预约信息,点击“提交”按钮。 | 生成自己的心理预约信息。 | 正确 |
微信端上评论功能测试:
表5-2微信端上评论功能测试用例表
测试名称 | 测试功能 | 操作 | 操作过程 | 预期结果 | 测试结果 |
评论功能模块测试 | 心理资讯正常的显示 | 浏览心理资讯详情信息 | 点击“心理资讯”进入心理资讯详情页面,点击“评论”输入自己的评论内容。 | 评论成功 | 正确 |
web后台端上心理专家发布专家信息功能测试:
表5-3web后台端上心理专家发布专家信息功能测试用例表
测试名称 | 测试功能 | 操作 | 操作过程 | 预期结果 | 测试结果 |
心理专家发布专家信息功能测试 | 添加专家信息的情况 | 输入新专家信息的基本信息 | 后台选择“专家信息管理”菜单后,填写新专家信息基本信息后点击“提交”按钮 | 新专家信息发布成功 | 正确 |
5.2测试结果
通过编写了基于微信小程序的心理测评与咨询系统的测试用例,已经检测完毕了5.1章节中的3大模块,它为基于微信小程序的心理测评与咨询系统系统的后期推广运营提供了强力的技术支撑。
总结与展望
本次基于微信小程序的心理测评与咨询系统的设计与实现,功能方面,通过功能模块图区分该程序的用户端与管理端各自的功能权限;数据库方面,数据库使用口碑较好的mysql进行数据的存储,开源的mysql等技术的使用,相对来说体积较小,服务稳定,减少系统开发成本费用,通过数据库表的E-R实体关系图建立了表单与表单之间的连接,区分不同的表单之间的关系,更好的完善数据库的内容;测试方面,通过测试用例检查基于微信小程序的心理测评与咨询系统的设计缺陷和程序存在的错误,在系统测试阶段的过程中,出现了一些问题,例如,注册信息,没有规范用户在注册页面填写信息时输入两次密码,而导致后期登录错误,最后通过多次修改程序和测试解决了问题。最终经过不断的检测、修改,实现项目的稳定,达到了预期的设计效果。
系统整体的功能到达预期的效果,但页面的美化方面还是存在一些不足,例如:小程序中的图标过于简洁;wxss页面的渲染布局方面不够完善,人们在使用软件过程中,对某些功能不易找寻,针对此次项目产生的问题,日后将不断改进,使该项目更加完善。
参考文献
[1]李论,唐瑞明,邹俊平等.“互联网+”背景下高职院校在线心理咨询管理系统的设计与实现[J].科技与创新,2024,(01):81-83.DOI:10.15913/j.cnki.kjycx.2024.01.023.
[2]袁琳琳.计算机软件Java编程特点及技术分析[J].数字通信世界,2023,(12):87-89.
[3]马庆.计算机软件开发中JAVA编程语言的应用[J].山西电子技术,2023,(06):84-86+98.
[4]何畅,谯炜骅,马跃.在校大学生在线心理咨询系统设计[J].现代信息科技,2023,7(21):36-39+43.DOI:10.19850/j.cnki.2096-4706.2023.21.009.
[5]Liang C .School Vehicle Management System Based on JAVA Language[J].Academic Journal of Computing Information Science,2023,6(9):
[6]陈志波.基于知识图谱的心理咨询问答系统分析与设计[D].阜阳师范大学,2023.DOI:10.27846/d.cnki.gfysf.2023.000209.
[7]闫笑.基于深度学习的心理咨询机器人软件系统的设计与实现[D].中北大学,2023.DOI:10.27470/d.cnki.ghbgc.2023.000280.
[8]Jessica E L ,Sanoussi M A Y ,Mehdi E C , et al.A comprehensive review of State-of-The-Art methods for Java code generation from Natural Language Text[J].Natural Language Processing Journal,2023,3
[9]易云恒.基于深度学习的心理咨询系统的研究与开发[D].广西民族大学,2023.DOI:10.27035/d.cnki.ggxmc.2023.000293.
[10]温正垚.面向心理咨询的智能对话系统研究[D].福建农林大学,2023.DOI:10.27018/d.cnki.gfjnu.2023.000359.
[11]吴伟红.学校系统合作式心理咨询实践研究[J].江苏教育,2022,(88):7-10.
[12]章亮,徐戈,陈芳.基于实体模糊识别的高校心理咨询对话系统[J].闽江学院学报,2022,43(02):33-42.DOI:10.19724/j.cnki.jmju.2022.02.005.
[13]李论.高校大学生心理咨询系统研究综述[J].电脑知识与技术,2021,17(28):271-272+275.DOI:10.14004/j.cnki.ckt.2021.3077.
[14]陈媛,刘英华,张涛.基于混合云模式的体验式心理咨询在线服务系统[J].现代电子技术,2021,44(14):114-118.DOI:10.16652/j.issn.1004-373x.2021.14.024.
[15]黄奔.基于可信度匹配的心理咨询预约系统的设计与实现[D].北京邮电大学,2021.DOI:10.26969/d.cnki.gbydu.2021.000977.
[16]卢杰,庄绪强.基于加权模糊正向推理算法的心理咨询系统设计[J].电子设计工程,2021,29(10):19-23.DOI:10.14022/j.issn1674-6236.2021.10.005.
[17]张鹤凝,马佳琳.基于seq2seq模型的心理咨询对话系统的研究[J].信息记录材料,2021,22(03):207-208.DOI:10.16009/j.cnki.cn13-1295/tq.2021.03.137.
[18]刁欣越,魏文博,李洁等.线上心理咨询平台商业生态系统与可持续发展方式——基于“AI+RPA”模式的互联网平台研究[J].现代商业,2021,(06):25-29.DOI:10.14097/j.cnki.5392/2021.06.008.
[19]姚晨.基于加权模糊推理的民办高校学生心理咨询管理系统设计与实现[D].贵州大学,2020.DOI:10.27047/d.cnki.ggudu.2020.001733.
[20]Zou Y ,Liu L ,Chen X , et al.Design of College Students’ Physique Monitoring and Disease Warning System Based on Hadoop[J].Academic Journal of Computing Information Science,2019,2(1):
致谢
至此论文结束,感谢您的阅读。首先,我要感谢我的父母对我的支持与理解,在两年的本科学习生活中,倾其所能的爱护我,使我能够心无旁骛,全心全意的投入到学习中;不断鼓励我,让我能够拥有不断前进的动力。其次还要感谢我的导师,感谢在这段时间给予我有效的建议,以至于我的毕设有了整体的设计思路,尽管我在实习期间很忙,论文撰写总是停停改改,但是导师依然十分负责,时不时的询问我的任务进展情况,跟进我的论文进度。在老师的帮助下,我逐步完成了自己的论文和程序,从导师身上也学习到很多知识,和经验,这些知识和经验令我受益匪浅。
此外,还要感谢我的同学,热心的解答了我在程序上遇到的问题,是他们在我编写程序过程中给了我很多的启发和感想,也帮助了我对于程序的调试和检测,让我受益良多。在这两年的时间里,我学会了许多专业的知识,还有老师们的谆谆教诲和同学们的帮助使我不断进步,能够做得更好;我也会不断给自己充电,不断突破,成为更好的自己。
最后向所有关心我、帮助我的老师及同学们表示衷心的感谢!
请关注点赞+私信博主,免费领取项目源码