schema_20241228195942.md 13 KB

简单版类图

@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<User> 
    + chatpartner: Pointer<ChatPartner> 
}
class ChatEvaluate{
    + objectId:String
    + avater:String
    + content:String
    + rating:Number
    + user: Pointer<User> 
}

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

时序图

@startuml
actor 用户
participant "专业陪聊师" as 专业陪聊师
participant "普通陪聊师" as 普通陪聊师
participant "聊天记录" as 聊天记录
participant "报告" as 报告

用户 -> 用户: 选择陪聊师()
alt 选择专业陪聊师
    用户 -> 专业陪聊师: 提供聊天()
else 选择普通陪聊师
    用户 -> 普通陪聊师: 提供聊天()
end
用户 -> 用户: 开始聊天()
用户 -> 聊天记录: 总结聊天记录()
聊天记录 -> 聊天记录: 获取聊天记录()

聊天记录 -> 报告: 生成报告()
报告 -> 用户: 返回分析报告

@enduml

状态图

@startuml
[*] --> 选择陪聊师

选择陪聊师 -->  聊天中: 开始聊天
聊天中 --> 继续聊天 : 选择继续聊天
聊天中 --> 退出聊天 : 选择退出聊天
退出聊天 --> 总结中 : 总结聊天记录

总结中 --> 生成报告 : 生成分析报告
生成报告 --> 生成失败 : 报告生成失败
生成报告 --> 生成成功 : 报告生成成功

生成成功 --> [*] : 聊天结束
生成失败 --> 生成报告 : 重新生成
@enduml

活动图

@startuml
|用户|
start
:发送消息;
|专业陪聊机器人|
:回复消息;
|用户|
repeat
if (继续聊天?) then (是)
    |用户|
    :发送消息;
    |专业陪聊机器人|
    :回复消息;
else (否)
    |管理员|
    :记录消息;
    stop
endif
repeat while (回复消息)
@enduml

//社区部分

用例图

@startuml
actor 用户


rectangle "心理社区" {
    用户 -- (使用心理普查)
    用户 -- (使用漂流瓶)
}
rectangle "使用心理普查"{
    用户 -- (填写问卷)
    用户 -- (发布问卷)
}
rectangle "使用漂流瓶"{
    用户 -- (扔漂流瓶)
    用户 -- (捞漂流瓶)
}

@enduml

时序图

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
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

活动图

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[提示“权限不够”];

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;

状态图

stateDiagram-v2
    [*] --> 未登录
    未登录 --> 登录 : 用户尝试访问系统
    登录 --> 已登录 : 用户成功登录
    已登录 --> 查看问卷通知 : 用户选择查看问卷通知
    已登录 --> 发布问卷 : 用户选择发布问卷
    发布问卷 --> 权限不够 : 用户不是老师
    发布问卷 --> 问卷已成功发布 : 用户是老师
    
stateDiagram-v2
    [*] --> 未登录
    未登录 --> 登录 : 用户尝试访问系统
    登录 --> 已登录 : 用户成功登录
    已登录 --> 扔漂流瓶 : 用户选择扔漂流瓶
    已登录 --> 捞漂流瓶 : 用户选择捞漂流瓶
    已登录 --> 查看我的漂流瓶 : 用户选择查看我的漂流瓶
    扔漂流瓶 --> 编写内容 : 用户开始编写漂流瓶内容
    编写内容 --> 抛出漂流瓶 : 用户完成编写
    捞漂流瓶 --> 成功捞上 : 条件满足
    捞漂流瓶 --> 打捞失败 : 条件不满足
    查看我的漂流瓶 --> 查看扔出的漂流瓶 : 用户查看自己扔出的漂流瓶
    查看我的漂流瓶 --> 查看捞上的漂流瓶 : 用户查看捞上的漂流瓶
    查看捞上的漂流瓶 --> 扔回漂流瓶 : 用户选择扔回捞上的漂流瓶

登录业务

@startuml
left to right direction
[*] --> 输入用户名和密码

输入用户名和密码 --> 检查是否为空
检查是否为空 --> 执行登录 : 不为空
检查是否为空 --> 输入用户名和密码 : 为空
执行登录 --> 返回当前页面: 登录成功
执行登录 --> 输入用户名和密码 :登录失败

返回当前页面 --> [*]
@enduml

注册业务

@startuml
left to right direction

[*] --> 输入基本信息

输入基本信息 --> 检查是否为空
检查是否为空 --> 输入基本信息 : 为空
检查是否为空 --> 检查两次密码一致性 : 不为空

检查两次密码一致性 --> 执行注册 : 一致
检查两次密码一致性 --> 输入基本信息 : 不一致

执行注册 --> 返回登录页面 : 注册成功
执行注册 --> 输入基本信息 : 注册失败

返回登录页面 --> [*]
@enduml

用户编辑信息业务

@startuml
left to right direction

[*] --> 获取用户信息

获取用户信息 --> 弹出表单

弹出表单 --> 检查用户输入

检查用户输入 --> 执行修改

执行修改 --> 返回当前页面: 修改成功
执行修改 --> 弹出表单 : 修改失败
返回当前页面 --> [*] 
@enduml

智能陪聊业务

@startuml
left to right direction

[*] --> 检查用户是否登录注册

检查用户是否登录注册 --> 登录注册 : 未登录
检查用户是否登录注册 --> 选择陪聊师 : 已登录

登录注册 --> 选择陪聊师 : 登录/注册成功
登录注册 --> [*] : 登录/注册失败

选择陪聊师 --> 开始陪聊

开始陪聊 --> [*] : 结束陪聊
@enduml

普通聊天业务

@startuml
left to right direction

[*] --> 检查用户是否登录注册

检查用户是否登录注册 --> 登录注册 : 未登录
检查用户是否登录注册 --> 开始陪聊 : 已登录

登录注册 --> 开始陪聊 : 登录/注册成功
登录注册 --> [*] : 登录/注册失败

开始陪聊 --> [*] : 结束陪聊
@enduml

用户评价业务

@startuml
left to right direction

[*] --> 检查用户是否登录注册

检查用户是否登录注册 --> 登录注册 : 未登录
检查用户是否登录注册 --> 进入评价 : 已登录

登录注册 --> 进入评价 : 登录/注册成功
登录注册 --> [*] : 登录/注册失败

进入评价 --> 输入评价内容

输入评价内容 --> 保存退出

保存退出 --> 返回当前页面 : 保存成功
返回当前页面 --> [*]
@enduml

查看报告业务

@startuml
left to right direction
[*] --> 获取用户信息
获取用户信息 --> 点击我的报告
点击我的报告 --> 展示用户相关报告
展示用户相关报告 --> [*]
@enduml

发布问卷业务

@startuml
left to right direction
[*] -->检查登录状态
检查登录状态 --> 显示登录注册界面 : 用户未登录
显示登录注册界面 --> 输入用户名和密码
输入用户名和密码 --> 检查是否为空
检查是否为空 --> 执行登录 : 不为空
检查是否为空 --> 显示登录注册界面 : 为空
执行登录 --> 跳转到已登录页面 : 登录成功
执行登录 --> 显示登录注册界面 : 登录失败
跳转到已登录页面 --> 查看问卷通知
查看问卷通知 --> 显示问卷通知
显示问卷通知 --> 发布问卷
发布问卷 --> 检查用户身份
检查用户身份 --> 提示权限不够 : 用户不是老师
检查用户身份 --> 提示问卷已成功发布 : 用户是老师
提示权限不够 --> [*]
提示问卷已成功发布 --> [*]
@enduml

使用漂流瓶业务

@startuml
left to right direction
[*] -->检查登录状态
检查登录状态 --> 显示登录注册界面 : 用户未登录
显示登录注册界面 --> 输入用户名和密码
输入用户名和密码 --> 检查是否为空
检查是否为空 --> 执行登录 : 不为空
检查是否为空 --> 显示登录注册界面 : 为空
执行登录 --> 跳转到已登录页面 : 登录成功
执行登录 --> 显示登录注册界面 : 登录失败
跳转到已登录页面 --> 选择操作
选择操作 --> 扔漂流瓶 : 用户选择扔漂流瓶
扔漂流瓶 --> 提示输入内容
提示输入内容 --> 编写漂流瓶内容
编写漂流瓶内容 --> 抛出漂流瓶
抛出漂流瓶 --> 返回已登录页面
跳转到已登录页面 --> 捞漂流瓶 : 用户选择捞漂流瓶
捞漂流瓶 --> 检查条件
检查条件 --> 成功捞上 : 条件满足
检查条件 --> 打捞失败 : 条件不满足
成功捞上 --> 返回已登录页面
打捞失败 --> 返回已登录页面
跳转到已登录页面 --> 查看我的漂流瓶 : 用户选择查看我的漂流瓶
查看我的漂流瓶 --> 显示扔出的漂流瓶
显示扔出的漂流瓶 --> 显示捞上的漂流瓶
显示捞上的漂流瓶 --> 选择操作
选择操作 --> 扔回捞上的漂流瓶 : 用户选择扔回捞上的漂流瓶
扔回捞上的漂流瓶 --> 返回已登录页面
@enduml