医生端小程序登录及绑定手机号流程

`mermaid
sequenceDiagram
title: 医生端小程序登录及绑定手机号流程
participant mini as 小程序
participant eagle as 医生端
participant beyond as 基础中心
participant wechat as 微信接口服务
note over mini: 首次登录
mini->>mini: wx.login()获取code
mini->>eagle: wx.request()发送code
eagle->>beyond: 调用登录凭证校验接口
beyond->>wechat: 发送登录凭证校验请求
wechat–>>beyond: 返回openid、session_key及unionid
beyond–>>eagle: 返回openid、session_key及unionid
eagle->>eagle: 根据unionid查询医生
note over eagle: 未绑定医生账号
eagle->>eagle: 若查询不到数据,则将session_key作为ticket,并记录ticket与unionid的映射关系
eagle–>>mini: 返回ticket
mini->>mini: 跳转到绑定手机号页面
note over eagle: 已绑定医生账号
eagle->>eagle: 判断该医生账号是否为审核号
note over eagle: 是审核号
eagle->>eagle: 生成token,并将token及医生信息保存到redis
eagle–>>mini: 返回token,登录成功
mini->>mini: 跳转至首页
note over eagle: 非审核号
eagle->>eagle: 判断是否关注小程序关联的公众号
note over eagle: 未关注
eagle–>>mini: 提示【未关注公众号】
mini->>mini: 跳转到引导关注公众号页面
note over eagle: 已关注
eagle->>eagle: 生成token,并将token及医生信息保存到redis
eagle–>>mini: 返回token,登录成功
mini->>mini: 跳转至首页

note over mini: 绑定手机号
mini->>eagle: wx.request()发送手机号、验证码及ticket
eagle->>eagle: 校验手机号及验证码是否有效
eagle–>>mini: 验证码无效,则提示【您输入的验证码有误】
eagle->>eagle: 校验ticket是否有效
eagle–>>mini: ticket无效,则提示【绑定手机号失败】
eagle->>eagle: ticket有效,则再根据手机号查询医生
eagle–>>mini: 若手机号不存在,则提示【手机号未注册】
eagle–>>mini: 若手机号存在,但已绑定微信则提示【该手机号已绑定其他微信】
eagle->>eagle: 拿到与ticket对应的unionid
eagle–>>mini: 校验unionid是否存在,若存在则提示【该微信已绑定其他手机号】
eagle->>eagle: 若不存在,则手机号及unionid绑定成功
eagle->>eagle: 生成token
eagle->>eagle: 将token及医生信息保存到redis
eagle–>>mini: 返回token
mini->>mini: 绑定并登录成功

note over mini: 二次登录
mini->>mini: wx.login()获取code
mini->>eagle: wx.request()发送code
eagle->>beyond: 调用登录凭证校验接口
beyond->>wechat: 发送登录凭证校验请求
wechat–>>beyond: 返回openid、session_key及unionid
beyond–>>eagle: 返回unionid
eagle->>eagle: 根据unionid查询医生信息
eagle->>eagle: 若查询到数据,则判断医生是否关注小程序关联的公众号
eagle->>eagle: 若已关注,生成token
eagle->>eagle: 查询到数据则生成token
eagle->>eagle: 将token及医生信息保存到redis
eagle–>>mini: 返回token,登录成功
mini->>mini: 跳转至首页

note over mini: 解绑微信
mini->>mini: 跳转到解绑微信页面
mini->>eagle: wx.request()发送解绑请求,请求头携带token
eagle->>eagle: 清空数据库中医生的openid及unionid
eagle->>eagle: 注销登录状态
eagle–>>mini: 返回解绑成功
mini->>mini: 解绑成功