# 心理咨询系统(Psychological Counseling System)
## 项目简介
心理咨询系统是辅助线下心理咨询的线上平台。
学生可以在心理咨询系统中填写登记表,进行线上初访预约,并由管理员进行审核;审核通过后,初访员会对学生进行初访,了解大致情况;此后,咨询助理安排咨询师对学生进行心理咨询,由咨询师提交每次访问的记录,并在完成全部心理咨询后填写结案报告。
需求来源:http://wiki.suncaper.net/pages/viewpage.action?pageId=50369779
## 技术选型
| 技术 | 选型 | 备注 |
|-----------|--------------------------------------------------|------------------------------------------------------|
| 微服务注册中心 | Spring Cloud Alibaba Nacos ||
| 微服务配置管理中心 | Spring Cloud Alibaba Nacos ||
| 微服务网关 | Spring Cloud Gateway ||
| 负载均衡 | Spring Cloud Loadbalancer (ReactiveLoadBalancer) | 使用响应式负载均衡 ReactiveLoadBalancer(而非 Ribbon 提供的阻塞式负载均衡) |
| HTTP 客户端 | WebClient <br/> ~~(Spring Cloud OpenFeign)~~ | 使用响应式的 WebClient 作为 HTTP 客户端工具(并加以负载均衡) |
| 认证授权 | Spring Security + JWT | |
| Web 服务 | Spring WebFlux | |
| 数据存储 | MongoDB | 阿里云数据库(三节点副本集实例,价值 ¥9.99) |
| 服务器 | 阿里云轻量应用服务器、腾讯云轻量应用服务器 | 相对于本地服务器,网络上的云服务器更接近生产环境;为网关、授权、咨询等微服务提供了真实载体 |
| 短信发送 | 腾讯云 SMS | 高可靠性的短信发送服务,保证99%一秒内到达 |
| 缓存 | Redis Cluster ( 1 Master & 2 Salves ) | 基于 Docker Compose 的"一主二从"三节点 Redis 集群 |
| 消息队列 | 阿里云 AMQP ( RabbitMQ ) | 解耦上层服务;异步处理可以削弱流量洪峰 |
| 对象存储 | 阿里云对象存储 OSS | 使用云上存储服务,避免了在 HTTP 连接上直接传输文件所带来的传输开销,且方便了资源文件的管理 |
## 技术架构
## 业务流程
![业务流程图](https://tzq-oos-1.oss-cn-hangzhou.aliyuncs.com/img/image-20220227103201232.png)
### 用户登录
#### 用户根据账号密码进行登录
1. 【 客户端 】通过 `http:host:port/login/account/{account}/password/{password}` 向【 pcs-gateway 微服务 】发起登录请求
2. 【 pcs-gateway 微服务 】中的 JWT Filter 判断该请求是登录请求,放行
3. 【 pcs-gateway 微服务 】中的 Security Filter 判断该请求是登录请求,放行
4. 【 pcs-gateway 微服务 】向【pcs-auth 微服务】发起请求
1. 如果账号密码错误,则返回 401 UnAuthorization 错误
2. 如果正确,则继续执行
5. 【 pcs-gateway 微服务 】基于用户的 ID 与角色(role)生成 JWT
6. 【 pcs-gateway 微服务 】将生成的 JWT 发送到【 Redis 】中,并设置过期时间
7. 【 pcs-gateway 微服务 】向【客户端】进行响应
```mermaid
flowchart LR
client[Client] --> |1. Login Request| gateway[Gateway]
subgraph java [Spring Cloud Microservices]
gateway --> rabbit[Rabbit MQ]
rabbit --> message
subgraph message-microservice[Message Service]
message[Message]
end
gateway -->|2. Validate User| auth[Auth]
subgraph auth-microservice[Auth Service]
auth --> db-auth[(Database)]
end
gateway -->|3. Generate JWT & Send| redis[Redis]
end
```
#### 用户根据手机验证码进行登录
1. 【 客户端 】通过 `http:host:port/phone/{phone}/code` 向【 pcs-gateway 微服务 】发起发送短信验证码请求
2. 【 pcs-gateway 微服务 】中的 JWT Filter 判断该请求是申请短信验证码请求,放行
3. 【 pcs-gateway 微服务 】中的 Security Filter 判断该请求是申请短信验证码请求,放行
4. 【 pcs-gateway 微服务 】向【pcs-auth 微服务】发起请求
1. 如果手机号错误或者非用户手机号,则返回错误
2. 如果正确,则继续执行
5. 【 pcs-gateway 微服务 】将手机号发送至【 RabbitMQ 】
6. 【 pcs-message 微服务 】监听【 RabbitMQ 】中的指定队列,获取手机号,并生成验证码
7. 【 pcs-message 微服务 】使用【 腾讯云 SMS 服务 】向手机号发送验证码
8. 【 pcs-message 微服务 】将手机号与验证码作为键值对存放入【 Redis 】中,并设置过期时间
9. 【 客户端 】收到短信后,调用 `http:host:port/login/phone/{phone}/code/{code}` 向【 pcs-gateway 微服务 】发起登录请求
10. 【 pcs-gateway 微服务 】向【 Redis 】查看是否存在相应的键值对
1. 如果不存在,则返回 401 UnAuthorization 错误
2. 如果正确,则继续执行
11. 【 pcs-gateway 微服务 】基于用户的 ID 与角色(role)生成 JWT
12. 【 pcs-gateway 微服务 】将生成的 JWT 发送到【 Redis 】中,并设置过期时间
13. 【 pcs-gateway 微服务 】向【客户端】进行响应
```mermaid
flowchart LR
client[Client] --> |1. Login Request| gateway[Gateway]
subgraph java [Spring Cloud Microservices]
gateway -->|3. Send Phone Num| rabbit[Rabbit MQ]
rabbit -->|4. Receive Phone Num & Send Message| message
subgraph message-microservice[Message Service]
message[Message]
end
message -->|5. Send Phone & Code| redis
gateway -->|6. Valid Phone Num & Code| redis[Redis]
gateway -->|7. Generate JWT & Send| redis
gateway -->|2. Validate Phone Num| auth[Auth]
subgraph auth-microservice[Auth Service]
auth --> db-auth[(Database)]
end
end
```
## 业务功能
![心理资讯系统 v4](https://tzq-oos-1.oss-cn-hangzhou.aliyuncs.com/img/%E5%BF%83%E7%90%86%E8%B5%84%E8%AE%AF%E7%B3%BB%E7%BB%9F%20v4.png)
## 数据模型
![数据模型 v5](https://tzq-oos-1.oss-cn-hangzhou.aliyuncs.com/img/%E6%95%B0%E6%8D%AE%E6%A8%A1%E5%9E%8B%20v5.jpeg)
## 微服务管理
### 微服务通信
```mermaid
flowchart LR
client[Client] --> |Web Request| gateway[Gateway]
subgraph java [Spring Cloud Microservices]
gateway --> rabbit[Rabbit MQ]
rabbit --> message
subgraph message-microservice[Message Service]
message[Message]
end
gateway -->|PREFIX=/auth| auth[Auth]
subgraph auth-microservice[Auth Service]
auth --> db-auth[(Database)]
end
visit --> auth
gateway -->|PREFIX=/visit| visit[Visit]
subgraph visit-microservice[Visit Service]
visit --> db-visit[(Database)]
end
gateway -->|PREFIX=/general| general[General]
subgraph general-microservice[General Service]
general --> db-general[(Database)]
end
gateway -->|PREFIX=/duty| duty[Duty]
subgraph duty-microservice[Duty Service]
duty --> db-duty[(Database)]
end
gateway -->|PREFIX=/cons
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
毕业设计是高等教育阶段学生在完成学业前所进行的一项重要学术任务,旨在检验学生通过学习所获得的知识、技能以及对特定领域的深刻理解能力。这项任务通常要求学生运用所学专业知识,通过独立研究和创新,完成一个实际问题的解决方案或者开展一项有价值的项目。 首先,毕业设计的选择通常由学生根据个人兴趣、专业方向以及实际需求来确定。学生需要在导师的指导下明确研究目标、问题陈述,确立研究的范围和深度。毕业设计可以包括文献综述、需求分析、方案设计、实施与测试等多个阶段,以确保整个过程的科学性和系统性。 其次,毕业设计的完成通常需要学生具备一定的独立思考和解决问题的能力。在研究过程中,学生可能需要采用各种研究方法,如实验、调查、案例分析等,以获取必要的数据和信息。通过这些活动,学生能够培养扎实的专业技能,提升解决实际问题的实际能力。 第三,毕业设计的撰写是整个过程的重要组成部分。学生需要将研究过程、方法、结果以及结论等详细记录在毕业论文中,以展示其研究的全貌和成果。同时,撰写毕业设计还有助于提高学生的学术写作水平,培养清晰、逻辑的表达能力。 最后,毕业设计的评价通常由导师和相关专业人士进行。评价标准包括研究的创新性、实用性、方法的科学性以及论文的质量等方面。学生在毕业设计中获得的成绩也将直接影响其最终的学业成绩和学位授予。 总的来说,毕业设计是高等教育中的一项重要环节,通过此过程,学生不仅能够巩固所学知识,还能培养独立思考和解决问题的能力,为将来的职业发展奠定坚实的基础。
资源推荐
资源详情
资源评论
收起资源包目录
基于 Spring Cloud Alibaba 构建的心理咨询系统.zip (250个子文件)
mvnw.cmd 7KB
mvnw.cmd 7KB
Dockerfile 112B
.env 698B
.gitignore 395B
.gitignore 395B
handler_csv.go 5KB
parse.go 3KB
handler_pdf.go 3KB
handler_zip.go 2KB
main.go 2KB
parse_csv_test.go 1KB
oss.go 759B
maven-wrapper.jar 57KB
maven-wrapper.jar 57KB
DutyHandler.java 13KB
ApplyHandler.java 12KB
ConsultService.java 10KB
DutyService.java 10KB
UserHandler.java 9KB
ApplyService.java 8KB
ConsultHandler.java 7KB
WebFluxSecurityConfig.java 7KB
VisitHandler.java 7KB
Duty.java 7KB
StaticsHandler.java 6KB
LoginHandler.java 5KB
JWTUtils.java 5KB
UserService.java 4KB
RouterConfig.java 4KB
Users.java 4KB
DutyServiceTest.java 4KB
Consult.java 4KB
Applies.java 4KB
StaticsManager.java 4KB
RedisConfig.java 4KB
SmsUtils.java 3KB
UserServiceTest.java 3KB
AuthenticationManager.java 3KB
Apply.java 3KB
Work.java 3KB
ConsultManager.java 3KB
AddressHandler.java 3KB
UserRepositoryTest.java 3KB
VisitRecordService.java 3KB
JWTFilter.java 3KB
UserHandlerAOP.java 3KB
ApplyManager.java 3KB
Result.java 3KB
RabbitMQConfig.java 2KB
RabbitMQConfig.java 2KB
GeneralHandler.java 2KB
RedisConfig.java 2KB
VisitRecord.java 2KB
RouterConfig.java 2KB
VisitRecord.java 2KB
RedisConfig.java 2KB
RedisConfig.java 2KB
User.java 2KB
ApplyHandlerAOP.java 2KB
RouterConfig.java 2KB
PdfInfo.java 2KB
RouterConfig.java 2KB
PdfInfo.java 2KB
StaticsService.java 2KB
VisitRecordManager.java 2KB
SpareTime.java 2KB
DateUtils.java 2KB
RouterConfig.java 2KB
LoginServiceTest.java 2KB
PageUtils.java 2KB
UserServiceTest.java 2KB
ValidationCodeListenerAOP.java 2KB
UserInfoResponse.java 2KB
ApplyInfrastructure.java 2KB
AddressManager.java 2KB
DutyInfrastructure.java 2KB
SecurityContextRepository.java 2KB
Consults.java 2KB
ValidationCodeListener.java 2KB
DutyDetail.java 2KB
UserManager.java 1KB
ConsultInfrastructure.java 1KB
PcsUserManager.java 1KB
VisitRecordInfrastructure.java 1KB
LoginHandler.java 1KB
LogoutHandlerAOP.java 1KB
RecordsWithTotal.java 1KB
StudentConsultDetail.java 1KB
CorsConfig.java 1KB
DutyResponse.java 1KB
UserInfrastructure.java 1KB
RouterConfig.java 1KB
SmsTest.java 1KB
VisitRecords.java 1KB
UnHandledConsultApply.java 1KB
FirstRecord.java 1KB
PcsUserDetailsService.java 1KB
ConsultRecordForConsultor.java 1KB
LogoutHandler.java 1KB
共 250 条
- 1
- 2
- 3
资源评论
JJJ69
- 粉丝: 6262
- 资源: 5775
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功