actor 用户 as U
participant 客户端 as C
participant 服务器 as S
database 数据库 as D
U -> C: 点击发帖
C -> C: 校验登录
alt 已登录
C --> U : 客户端返回发帖类型选择界面
else 未登录
C --> U : 客户端返回登录页面
U -> U : 登录成功
note left: 登录时序略
U -> C : 再次点击发帖
C -->U : 客户端返回发帖类型选择界面
end
group 发讨论/长文
U -> C : 发讨论/长文
C --> U : 返回创建讨论/长文页面
U -> C : 填写内容,点击发布
C -> C : 校验内容
alt 校验通过
C -> S : 请求创建讨论/长文
S -> S : 创建讨论/长文
alt 创建成功
S -> D : 更新数据库
S --> C : 创建成功
C --> U : 发布成功
else 创建失败
S --> C : 内部错误,创建失败
C --> U : 出现内部错误,讨论/长文发布失败,请重试或联系客服
end
else 校验失败
C --> U : 内容填写有误,请检查后重新发布
end
actor user as U #yellow
entity client as C #green
collections server as S #red
database DB
autonumber
note over U:进入到发帖页面
U->C:点击【发贴】
alt 校验登录状态
S->C:登录中,进入发贴弹层
note left U:发哪种帖
alt 长文or非长文
note over U:非长文
autonumber “[000]”
U->C:输入表情、悬赏、问答等
note over U,C:发布
alt 前端校验
C-[#red]>C:校验不通过,请重输
else
alt 后端校验
S-[#red]>C:校验不通过
else
S-[#green]\DB:通过并存储
alt DB存储
DB-[#green]/S:存储成功
S-[#green]>C:发布成功
else
DB-[#red]/S:存储失败
S-[#red]>C:发布失败
end
end
end
autonumber stop
else
autonumber 3
note right U:长文
U->C:点击【长文】
C->U:跳转到长文页面
U->C:标题、正文、分类、标签……
note over U,C:发布保存预览
alt 前端校验
autonumber 01 “(##)”
C-[#red]>C:校验不通过,请重输
else
alt 后端校验
S-[#red]>C:校验不通过
else
S-[#green]\DB:通过,存储
alt DB存储
DB-[#green]/S:存储成功
S-[#green]>C:发布\保存\预览成功
else
DB-[#red]/S:存储失败
S-[#red]>C:发布\保存\预览失败
end
end
end
autonumber stop
end
else
autonumber 6
S->C:未登录:提示用户输入帐号密码登录
U->C:输入帐号密码点击登录
alt 前端检验
autonumber “[00]”
C-[#red]>C:输入不合法,重输
else
C-[#green]>S:输入合法,与DB校验是否正确
S-\DB:查询DB帐号密码
alt DB帐号密码校验
DB-[#green]/S:正确
S-[#green]>C:进入已登录页面
else
DB-[#red]/S:错误
S-[#red]>C:帐号或密码错误,请重输
end
end
autonumber stop
end
autonumber stop