# 简单版类图 ```plantuml @startuml class _User { + objectId: String + username: String + realname: String + password: String + gender: String + age: Number + email: String + avatar: String + teacherId: String + studentId: String + identity: String + school: String + department: String } class ChatPartner { + objectId: String + name: String + expertise: String + avatar: String + bio: String } class ChatCompanion { + objectId: String + name: String + avatar: String + bio: String } class ChatRecord { + objectId: String + title:String + content:Array + user: Pointer + chatpartner: Pointer } class ChatEvaluate{ + objectId:String + avater:String + content:String + rating:Number + user: Pointer } class Survey { + objectId: String + link: String + title: String + audience: String + publisher:String + publishtime: String + category: String } class DriftBottle { + bottleID: String + content: String + username: String + throwtime: String + catcher: String + catchtime: String + status: String } Survey "1" -- "0..*" _User _User "1" -- "0..*" DriftBottle _User "*" --> "*" ChatEvaluate _User "1" --> "*" ChatRecord ChatPartner "1" --> "*" ChatRecord ChatCompanion "1" --> "*" ChatRecord @enduml ``` # 时序图 ```plantuml @startuml actor 用户 participant "专业陪聊师" as 专业陪聊师 participant "普通陪聊师" as 普通陪聊师 participant "聊天记录" as 聊天记录 participant "报告" as 报告 用户 -> 用户: 选择陪聊师() alt 选择专业陪聊师 用户 -> 专业陪聊师: 提供聊天() else 选择普通陪聊师 用户 -> 普通陪聊师: 提供聊天() end 用户 -> 用户: 开始聊天() 用户 -> 聊天记录: 总结聊天记录() 聊天记录 -> 聊天记录: 获取聊天记录() 聊天记录 -> 报告: 生成报告() 报告 -> 用户: 返回分析报告 @enduml ``` # 活动图 ```plantuml @startuml |用户| start :发送消息; |专业陪聊机器人| :回复消息; |用户| repeat if (继续聊天?) then (是) |用户| :发送消息; |专业陪聊机器人| :回复消息; else (否) |管理员| :记录消息; stop endif repeat while (回复消息) @enduml ``` # //社区部分 # 用例图 ```plantuml @startuml actor 用户 rectangle "心理社区" { 用户 -- (使用心理普查) 用户 -- (使用漂流瓶) } rectangle "使用心理普查"{ 用户 -- (填写问卷) 用户 -- (发布问卷) } rectangle "使用漂流瓶"{ 用户 -- (扔漂流瓶) 用户 -- (捞漂流瓶) } @enduml ``` # 时序图 ```mermaid sequenceDiagram participant User participant System User->>System: 访问系统 alt 用户未登录 System->>User: 显示登录注册界面 User->>System: 输入用户名和密码 alt 登录成功 System->>User: 跳转到已登录页面 User->>System: 查看问卷通知 System->>User: 显示问卷通知 User->>System: 发布问卷 alt 用户是老师 System->>User: 提示“问卷已成功发布” else 用户不是老师 System->>User: 提示“权限不够” end else 登录失败 System->>User: 显示错误信息 end else 用户已登录 System->>User: 跳转到已登录页面 User->>System: 查看问卷通知 System->>User: 显示问卷通知 User->>System: 发布问卷 alt 用户是老师 System->>User: 提示“问卷已成功发布” else 用户不是老师 System->>User: 提示“权限不够” end end ``` ```mermaid sequenceDiagram participant User participant System User->>System: 访问系统 alt 用户未登录 System->>User: 显示登录注册界面 User->>System: 输入用户名和密码 alt 登录成功 System->>User: 跳转到已登录页面 User->>System: 扔漂流瓶 System->>User: 提示“请输入漂流瓶内容” User->>System: 编写漂流瓶内容 System->>User: 抛出漂流瓶 User->>System: 捞漂流瓶 alt 条件满足 System->>User: 成功捞上漂流瓶 else 条件不满足 System->>User: 打捞失败 end User->>System: 查看我的漂流瓶 System->>User: 显示扔出的漂流瓶 System->>User: 显示捞上的漂流瓶 User->>System: 扔回捞上的漂流瓶 System->>User: 扔回成功 else 登录失败 System->>User: 显示错误信息 end else 用户已登录 System->>User: 跳转到已登录页面 User->>System: 扔漂流瓶 System->>User: 提示“请输入漂流瓶内容” User->>System: 编写漂流瓶内容 System->>User: 抛出漂流瓶 User->>System: 捞漂流瓶 alt 条件满足 System->>User: 成功捞上漂流瓶 else 条件不满足 System->>User: 打捞失败 end User->>System: 查看我的漂流瓶 System->>User: 显示扔出的漂流瓶 System->>User: 显示捞上的漂流瓶 User->>System: 扔回捞上的漂流瓶 System->>User: 扔回成功 end ``` # 活动图 ```mermaid graph TD; A[开始] --> B{用户已登录?}; B -- 否 --> C[显示登录注册界面]; C --> D[输入用户名和密码]; D --> E{登录成功?}; E -- 是 --> N[跳转到已登录页面]; E -- 否 --> G[显示错误信息]; B -- 是 --> N[跳转到已登录页面]; N --> O[查看问卷通知]; O --> P[显示问卷通知]; P --> Q[发布问卷]; Q --> R{用户是老师?}; R -- 是 --> S[提示“问卷已成功发布”]; R -- 否 --> T[提示“权限不够”]; ``` ```mermaid graph TD; A[开始] --> B{用户已登录?}; B -- 否 --> C[显示登录注册界面]; C --> D[输入用户名和密码]; D --> E{登录成功?}; E -- 是 --> F[跳转到已登录页面]; E -- 否 --> G[显示错误信息]; F --> H[扔漂流瓶]; H --> I[提示“请输入漂流瓶内容”]; I --> J[编写漂流瓶内容]; J --> K[抛出漂流瓶]; K --> L[结束]; F --> M[捞漂流瓶]; M --> N{条件满足?}; N -- 是 --> O[成功捞上漂流瓶]; N -- 否 --> P[打捞失败]; O --> Q[结束]; P --> Q; F --> R[查看我的漂流瓶]; R --> S[显示扔出的漂流瓶]; S --> T[显示捞上的漂流瓶]; T --> U{扔回捞上的漂流瓶?}; U -- 是 --> V[扔回成功]; U -- 否 --> W[结束]; V --> W; ``` # 状态图 ```mermaid stateDiagram-v2 [*] --> 未登录 未登录 --> 登录 : 用户尝试访问系统 登录 --> 已登录 : 用户成功登录 已登录 --> 查看问卷通知 : 用户选择查看问卷通知 已登录 --> 发布问卷 : 用户选择发布问卷 发布问卷 --> 权限不够 : 用户不是老师 发布问卷 --> 问卷已成功发布 : 用户是老师 ``` ```mermaid stateDiagram-v2 [*] --> 未登录 未登录 --> 登录 : 用户尝试访问系统 登录 --> 已登录 : 用户成功登录 已登录 --> 扔漂流瓶 : 用户选择扔漂流瓶 已登录 --> 捞漂流瓶 : 用户选择捞漂流瓶 已登录 --> 查看我的漂流瓶 : 用户选择查看我的漂流瓶 扔漂流瓶 --> 编写内容 : 用户开始编写漂流瓶内容 编写内容 --> 抛出漂流瓶 : 用户完成编写 捞漂流瓶 --> 成功捞上 : 条件满足 捞漂流瓶 --> 打捞失败 : 条件不满足 查看我的漂流瓶 --> 查看扔出的漂流瓶 : 用户查看自己扔出的漂流瓶 查看我的漂流瓶 --> 查看捞上的漂流瓶 : 用户查看捞上的漂流瓶 查看捞上的漂流瓶 --> 扔回漂流瓶 : 用户选择扔回捞上的漂流瓶 ``` # 状态图 ## 登录业务 ```plantuml @startuml left to right direction [*] --> 输入用户名和密码 输入用户名和密码 --> 检查是否为空 检查是否为空 --> 执行登录 : 不为空 检查是否为空 --> 输入用户名和密码 : 为空 执行登录 --> 返回当前页面: 登录成功 执行登录 --> 输入用户名和密码 :登录失败 返回当前页面 --> [*] @enduml ``` ## 注册业务 ```plantuml @startuml left to right direction [*] --> 输入基本信息 输入基本信息 --> 检查是否为空 检查是否为空 --> 输入基本信息 : 为空 检查是否为空 --> 检查两次密码一致性 : 不为空 检查两次密码一致性 --> 执行注册 : 一致 检查两次密码一致性 --> 输入基本信息 : 不一致 执行注册 --> 返回登录页面 : 注册成功 执行注册 --> 输入基本信息 : 注册失败 返回登录页面 --> [*] @enduml ``` ## 用户编辑信息业务 ```plantuml @startuml left to right direction [*] --> 获取用户信息 获取用户信息 --> 弹出表单 弹出表单 --> 检查用户输入 检查用户输入 --> 执行修改 执行修改 --> 返回当前页面: 修改成功 执行修改 --> 弹出表单 : 修改失败 返回当前页面 --> [*] @enduml ``` ## 智能陪聊业务 ```plantuml @startuml left to right direction [*] --> 检查用户是否登录注册 检查用户是否登录注册 --> 登录注册 : 未登录 检查用户是否登录注册 --> 选择陪聊师 : 已登录 登录注册 --> 选择陪聊师 : 登录/注册成功 登录注册 --> [*] : 登录/注册失败 选择陪聊师 --> 开始陪聊 开始陪聊 --> [*] : 结束陪聊 @enduml ``` ## 普通聊天业务 ```plantuml @startuml left to right direction [*] --> 检查用户是否登录注册 检查用户是否登录注册 --> 登录注册 : 未登录 检查用户是否登录注册 --> 开始陪聊 : 已登录 登录注册 --> 开始陪聊 : 登录/注册成功 登录注册 --> [*] : 登录/注册失败 开始陪聊 --> [*] : 结束陪聊 @enduml ``` ## 用户评价业务 ```plantuml @startuml left to right direction [*] --> 检查用户是否登录注册 检查用户是否登录注册 --> 登录注册 : 未登录 检查用户是否登录注册 --> 进入评价 : 已登录 登录注册 --> 进入评价 : 登录/注册成功 登录注册 --> [*] : 登录/注册失败 进入评价 --> 输入评价内容 输入评价内容 --> 保存退出 保存退出 --> [*]:保存成功 保存退出 --> 输入评价内容: 保存失败 @enduml ``` ## 查看报告业务 ```plantuml @startuml left to right direction [*] --> 获取用户信息 获取用户信息 --> 点击我的报告 点击我的报告 --> 展示用户相关报告 展示用户相关报告 --> [*] @enduml ``` ## 发布问卷业务 ```plantuml @startuml left to right direction [*] -->检查登录状态 检查登录状态 --> 显示登录注册界面 : 用户未登录 显示登录注册界面 --> 输入用户名和密码 输入用户名和密码 --> 检查是否为空 检查是否为空 --> 执行登录 : 不为空 检查是否为空 --> 显示登录注册界面 : 为空 执行登录 --> 跳转到已登录页面 : 登录成功 执行登录 --> 显示登录注册界面 : 登录失败 跳转到已登录页面 --> 查看问卷通知 查看问卷通知 --> 显示问卷通知 显示问卷通知 --> 发布问卷 发布问卷 --> 检查用户身份 检查用户身份 --> 提示权限不够 : 用户不是老师 检查用户身份 --> 提示问卷已成功发布 : 用户是老师 提示权限不够 --> [*] 提示问卷已成功发布 --> [*] @enduml ``` ## 使用漂流瓶业务 ```plantuml @startuml left to right direction [*] -->检查登录状态 检查登录状态 --> 显示登录注册界面 : 用户未登录 显示登录注册界面 --> 输入用户名和密码 输入用户名和密码 --> 检查是否为空 检查是否为空 --> 执行登录 : 不为空 检查是否为空 --> 显示登录注册界面 : 为空 执行登录 --> 跳转到已登录页面 : 登录成功 执行登录 --> 显示登录注册界面 : 登录失败 跳转到已登录页面 --> 选择操作 选择操作 --> 扔漂流瓶 : 用户选择扔漂流瓶 扔漂流瓶 --> 提示输入内容 提示输入内容 --> 编写漂流瓶内容 编写漂流瓶内容 --> 抛出漂流瓶 抛出漂流瓶 --> 返回已登录页面 跳转到已登录页面 --> 捞漂流瓶 : 用户选择捞漂流瓶 捞漂流瓶 --> 检查条件 检查条件 --> 成功捞上 : 条件满足 检查条件 --> 打捞失败 : 条件不满足 成功捞上 --> 返回已登录页面 打捞失败 --> 返回已登录页面 跳转到已登录页面 --> 查看我的漂流瓶 : 用户选择查看我的漂流瓶 查看我的漂流瓶 --> 显示扔出的漂流瓶 显示扔出的漂流瓶 --> 显示捞上的漂流瓶 显示捞上的漂流瓶 --> 选择操作 选择操作 --> 扔回捞上的漂流瓶 : 用户选择扔回捞上的漂流瓶 扔回捞上的漂流瓶 --> 返回已登录页面 @enduml ```