5.3 KiB
5.3 KiB
Soul 小程序 - 资料完善引导流程
入口统一:仅
checkVipContactRequiredAndGuide被 onLaunch/onShow/登录 调度;非 VIP 时内部链式调用checkAvatarNicknameAndGuide。
〇、总览(全流程)
flowchart TD
Start([触发]) --> Trigger{触发来源}
Trigger -->|onLaunch/onShow/登录| Main
Trigger -->|登录返回 isNewUser| LoginBranch
Trigger -->|VIP支付成功| VipPay
LoginBranch[登录成功] --> NewUser{isNewUser?}
NewUser -->|否| Main
NewUser -->|是| NeedAN1{头像昵称未改?}
NeedAN1 -->|是| ForceA[redirectTo avatar-nickname<br/>无弹窗]
NeedAN1 -->|否| Main
VipPay[VIP支付成功] --> Sync[同步权益] --> ModalV[弹窗:请填写好资料] --> RedirV[redirectTo profile-edit?from=vip]
Main[checkVipContactRequiredAndGuide] --> Skip{在 profile-edit<br/>或 avatar-nickname?}
Skip -->|是| End1([结束])
Skip -->|否| Fetch[请求 VIP + profile]
Fetch --> IsVip{VIP?}
IsVip -->|否| AvatarFlow[checkAvatarNicknameAndGuide]
AvatarFlow --> A1{头像昵称已完善?}
A1 -->|是| End2([结束])
A1 -->|否| A2{今日已提示?}
A2 -->|是| End2
A2 -->|否| MA[弹窗:请设置头像和昵称] --> NavA[navigateTo avatar-nickname]
IsVip -->|是| B1{头像昵称未改?}
B1 -->|是| M1[弹窗:请完善资料] --> R1[redirectTo profile-edit]
B1 -->|否| B2{有手机号?}
B2 -->|否| M2[弹窗:VIP需完善手机号] --> R2[redirectTo profile-edit]
B2 -->|是| B3{有微信号?}
B3 -->|否| M3[弹窗:请完善微信号] --> N1[navigateTo profile-edit]
B3 -->|是| End3([结束])
触发时机:onLaunch 1.5s | onShow 0.5s(节流 5min)| 登录成功 1.2s | VIP 支付成功 即时
一、整体流程(冷启动 / onShow)
flowchart TD
Start([入口:onLaunch 1.5s / onShow 0.5s]) --> CheckLogin{已登录?}
CheckLogin -->|否| End1([结束])
CheckLogin -->|是| VIPCheck[checkVipContactRequiredAndGuide]
VIPCheck --> CoolDown{3秒内已执行过?}
CoolDown -->|是| End0([结束,防重复])
CoolDown -->|否| RouteSkip{当前在 profile-edit<br/>或 avatar-nickname?}
RouteSkip -->|是| End0
RouteSkip -->|否| FetchAPI
VIPCheck --> FetchAPI[请求 API:VIP 状态 + 用户资料]
FetchAPI --> UpdateIsVip[更新 globalData.isVip]
UpdateIsVip --> IsVip{VIP?}
IsVip -->|否| AvatarCheck[checkAvatarNicknameAndGuide]
AvatarCheck --> End2([结束])
IsVip -->|是| SkipProfile{当前在 profile-edit?}
SkipProfile -->|是| End3([结束])
SkipProfile -->|否| NeedAvatar{头像/昵称未改?}
NeedAvatar -->|是| Modal1[弹窗:为了更好为您服务,请完善资料]
Modal1 --> Redirect1[redirectTo profile-edit]
Redirect1 --> End4([结束])
NeedAvatar -->|否| HasPhone{有手机号?}
HasPhone -->|否| Modal2[弹窗:VIP会员需完善手机号...]
Modal2 --> Redirect2[redirectTo profile-edit]
Redirect2 --> End5([结束])
HasPhone -->|是| HasWechat{有微信号?}
HasWechat -->|是| End6([结束])
HasWechat -->|否| Modal3[弹窗:请到资料页完善微信号]
Modal3 --> Nav1[navigateTo profile-edit]
Nav1 --> End7([结束])
二、头像/昵称引导(非 VIP 用户)
flowchart TD
A([checkAvatarNicknameAndGuide]) --> B{globalData.isVip?}
B -->|是| X([跳过,由 VIP 检测处理])
B -->|否| C{头像/昵称已完善?}
C -->|是| Y([结束])
C -->|否| D{当前在 profile-edit<br/>或 avatar-nickname?}
D -->|是| Z([结束])
D -->|否| E{今日已提示过?}
E -->|是| W([结束])
E -->|否| F[弹窗:请设置头像和昵称]
F --> G{点击去完善?}
G -->|是| H[navigateTo avatar-nickname]
G -->|否 稍后| I([结束])
H --> I
三、首次登录(新注册用户)
flowchart TD
Login([登录成功]) --> NewUser{isNewUser?}
NewUser -->|否| VIPFlow[checkVipContactRequiredAndGuide]
VIPFlow --> Flow1([见流程图一])
NewUser -->|是| NeedAvatar{头像/昵称未改?}
NeedAvatar -->|否| VIPFlow
NeedAvatar -->|是| ForceRedirect[redirectTo avatar-nickname<br/>无弹窗,强制跳转]
ForceRedirect --> End([结束])
四、VIP 购买成功(超级个体)
flowchart TD
Pay([VIP 支付成功]) --> Sync[同步权益 / 拉取 VIP 状态]
Sync --> Modal[弹窗:为了更好为您服务,请填写好资料]
Modal --> Redirect[redirectTo profile-edit?from=vip]
Redirect --> End([结束])
五、页面职责
| 页面 | 用途 |
|---|---|
| avatar-nickname | 仅头像 + 昵称,专注引导新用户/非 VIP |
| profile-edit | 完整资料(手机号、微信号、MBTI、行业等),VIP 用户统一跳转 |
六、触发时机汇总
| 时机 | 执行的函数 | 延迟 |
|---|---|---|
| onLaunch | checkVipContactRequiredAndGuide | 1500ms |
| onShow | checkVipContactRequiredAndGuide | 500ms(节流 5min) |
| login 成功 | checkVipContactRequiredAndGuide | 1200ms |
| getOpenId 返回 user | checkVipContactRequiredAndGuide | 1200ms |
| loginWithPhone 成功 | checkVipContactRequiredAndGuide | 1200ms |
| VIP 支付成功 | _onVipPaymentSuccess | 即时 |
文档生成于资料完善引导逻辑调整后