跳转至

时序图

登录逻辑

sequenceDiagram participant 用户 participant 微信小程序 participant 微信小程序缓存 participant 后端服务器 participant 数据库 用户->>微信小程序: 启动小程序 activate 微信小程序 微信小程序->>微信小程序缓存: 检查本地token alt token有效 微信小程序->>微信小程序缓存: 使用现有token else token无效 微信小程序->>后端服务器: POST /auth/token 后端服务器-->>微信小程序: 返回新token 微信小程序->>微信小程序缓存: 存储token end 微信小程序->>微信小程序缓存: 检查userinfo alt userinfo存在 微信小程序->>用户: 直接进入首页 else userinfo不存在 微信小程序->>用户: 跳转登录页面 用户->>微信小程序: 点击登录按钮 微信小程序->>后端服务器: GET /userinfo (携带token) 后端服务器->>数据库: 查询用户信息 alt 用户已注册 数据库-->>后端服务器: 返回userinfo 后端服务器-->>微信小程序: 200 返回用户数据 微信小程序->>微信小程序缓存: 存储userinfo 微信小程序->>用户: 跳转首页 else 用户未注册 后端服务器-->>微信小程序: 404 用户未注册 微信小程序->>用户: 显示注册引导弹窗 用户->>微信小程序: 填写注册信息 微信小程序->>后端服务器: POST /users (注册数据) 后端服务器->>数据库: 创建用户记录 数据库-->>后端服务器: 201 创建成功 后端服务器-->>微信小程序: 返回完整userinfo 微信小程序->>微信小程序缓存: 更新userinfo 微信小程序->>用户: 自动跳转首页 end end deactivate 微信小程序

注册

sequenceDiagram participant 用户 participant 微信小程序 participant 微信小程序缓存 participant 后端服务器 participant 数据库 用户->>微信小程序: 点击注册 activate 微信小程序 微信小程序-->>用户: 展示协议条款 用户-->>微信小程序: 勾选状态 alt 已勾选协议 微信小程序->>后端服务器: POST /registry_user activate 后端服务器 后端服务器->>数据库: 写入用户数据 activate 数据库 数据库-->>后端服务器: 写入成功 deactivate 数据库 后端服务器-->>微信小程序: 返回 userinfo deactivate 后端服务器 微信小程序->>微信小程序缓存: 存储 userinfo 微信小程序->>用户: 显示注册成功 微信小程序->>用户: 自动跳转至首页 else 未勾选协议 微信小程序-->>用户: 弹窗提示需勾选协议 end deactivate 微信小程序
graph TD A[开始] --> B[用户注册] B --> B0{输入UID?} B0 -->|是| H[正式用户替换临时用户] B0 -->|否| B1[生成唯一UID] %% 替换临时用户流程 H --> H1[验证临时UID有效性] H1 -->|有效| H2[创建正式用户] H2 --> H3[查询临时用户表] H3 --> H4[复制userinfo到正式用户] H4 --> H5[查询临时关系表] H5 --> H6[复制relationship到正式用户] H6 --> H7[删除临时用户] H7 --> H8[通知相关用户] H8 --> END[注册完成] H1 -->|无效| TERM1[终止流程] %% 正常注册流程 B1 --> B2[创建userinfo] B2 --> B3[创建relationship] B3 --> END[注册完成] %% 添加亲属流程 A --> C[添加亲属] C --> C00[查询原有关系] C00 --> C000{关系已存在?} C000 -->|是| C001[显示现有关系详情] C001 --> C002{确认继续?} C002 -->|是| C0{提供目标UID?} C002 -->|否| TERM4[终止流程] C000 -->|否| C0{提供目标UID?} C0 -->|是| C1[验证UID类型] C0 -->|否| C2[创建临时用户] C2 --> C2a[生成临时UID] C2a --> C2b[创建临时userinfo] C2b --> C2c[自动添加确认关系] C2c --> C2d[当前用户关系表添加] C1 --> C1a{UID类型} C1a -->|无效UID| TERM2[终止流程] C1a -->|正式用户| D[验证目标用户设置] C1a -->|临时用户| E[关联临时用户] D --> D1{允许他人添加?} D1 -->|是| D2[双方添加未确认关系] D1 -->|否| TERM3[终止流程] E --> E1[双方添加未确认关系] E1 --> E1c[获取临时用户创建者] E1c --> E1d[发送通知给创建者] %% 通知处理流程 A --> G[处理通知] G --> G1{通知类型} G1 -->|关系确认| G2[显示关系详情] G2 --> G3{用户选择} G3 -->|同意| G4[更新关系状态] G3 -->|拒绝| G5[删除关系] G1 -->|UID替换| G7[显示替换邀请] G7 --> G8{用户选择} G8 -->|接受| G9[执行UID替换] G8 -->|拒绝| G10[标记已读] %% 血缘查询 A --> I[血缘查询] I --> I1[递归查询关系] %% 样式定义 classDef process fill:#e6f7ff,stroke:#333; classDef decision fill:#ffe6e6,stroke:#333; classDef notification fill:#f0ffe6,stroke:#333; classDef terminate fill:#ffcccc,stroke:#333; classDef query fill:#e6ffe6,stroke:#333; class B1,B2,B3,H2,H4,H6,H7,G4,G5,G9,I1,C2a,C2b,C2d,C00,C001 process class B0,C0,C1a,D1,G3,G8,C000,C002 decision class H8,E1d,G2,G7 notification class TERM1,TERM2,TERM3,TERM4 terminate class H3,H5 query