Sync migrated iOS modules

This commit is contained in:
2026-06-22 15:35:12 +08:00
parent ace9c94359
commit 484566d27e
48 changed files with 4455 additions and 15 deletions

View File

@ -2,7 +2,7 @@
## 模块职责
Profile 模块负责“我的/个人信息”页面,包括用户资料展示、昵称编辑、密码修改、实名认证状态展示和退出登录。
Profile 模块负责“我的/个人信息”页面及其二级页面,包括用户资料展示、昵称编辑、账号切换、密码修改、实名认证、系统设置、协议页和退出登录。
该模块聚焦个人资料业务:
- 拉取用户基础资料。
@ -10,6 +10,9 @@ Profile 模块负责“我的/个人信息”页面,包括用户资料展示
- 展示头像、昵称、UID、手机号、账号状态和实名认证状态。
- 修改昵称。
- 修改密码。
- 切换当前景区/门店业务账号。
- 提交实名认证基础资料。
- 展示系统设置、版本号、下载链接和协议 H5 页面。
- 退出登录入口。
登录态清理和缓存清理由 App 模块的 `AuthSessionCoordinator` 统一处理。
@ -18,10 +21,15 @@ Profile 模块负责“我的/个人信息”页面,包括用户资料展示
- `ProfileView`:个人信息页 UI负责展示资料、编辑入口、密码弹窗和退出确认。
- `ProfileViewModel`:维护资料加载状态、编辑状态、保存状态和展示文案。
- `ProfileRoute`:个人中心二级页面路由。
- `AccountSwitchView` / `AccountSwitchViewModel`:账号切换页面和状态逻辑。
- `RealNameAuthView` / `RealNameAuthViewModel`:实名认证页面和表单逻辑。
- `SettingsCenterView` / `AgreementView`:设置中心和协议 H5 页面。
- `ProfileAPI`:封装用户资料、实名认证和资料更新接口。
- `UserInfoResponse`:用户基础资料。
- `RealNameInfoResponse` / `RealNameInfo`:实名认证信息。
- `UpdateInfoRequest`:昵称、密码或头像更新请求体。
- `RealNameAuthRequest`:实名认证提交请求体。
## 加载流程
@ -54,6 +62,33 @@ Profile 模块负责“我的/个人信息”页面,包括用户资料展示
密码不会写入本地缓存。
## 账号切换流程
1. 用户点击“当前账号”进入 `AccountSwitchView`
2. `AccountSwitchViewModel.load` 调用 `ProfileAPI.switchableAccounts`,读取 `/api/app/v9/accounts`
3. 页面展示景区账号和门店账号,优先选中后端标记的当前账号,否则选中第一项。
4. 用户确认后调用 `AuthAPI.setUser`,使用 `AccountSwitchAccount.toSetUserRequest()` 生成请求体。
5. 切换成功后调用 `AuthSessionCoordinator.completeLogin`,重新写入正式 token、账号快照、权限、景区和门店上下文。
6. `AppRouter.reset()` 清空旧路由栈并回到首页。
## 实名认证流程
1. 用户点击“认证状态”进入 `RealNameAuthView`
2. `RealNameAuthViewModel.load` 调用 `ProfileAPI.realNameInfo` 并回填姓名、身份证号、证件有效期、图片 URL 和审核状态。
3. 用户可发送短信验证码,接口为 `/api/yf-handset-app/photog/real-name/sms-verify-code`
4. 提交前校验姓名、身份证号、短信验证码、证件图片 URL 和有效期。
5. 校验通过后调用 `/api/yf-handset-app/photog/real-name/submit`
6. 提交成功后重新加载实名认证信息。
本轮证件图片先保留 URL 输入和网络预览,阿里云 OSS 图片选择上传后续接入时替换该输入区。
## 设置和协议流程
1. 用户点击“系统设置”进入 `SettingsCenterView`
2. 设置中心展示关于我们、系统版本、App 下载链接、用户协议和隐私政策。
3. App 下载点击后复制 `/h5/app/download` 链接到剪贴板。
4. 协议页使用 `AgreementView` 加载 `APIEnvironment.current.baseURL` 下的 H5 页面。
## 退出登录流程
1. 用户点击退出登录。
@ -72,4 +107,5 @@ Profile 模块负责“我的/个人信息”页面,包括用户资料展示
- `auditStatus == 3`:审核不通过。
- 其他状态:审核中。
- 无实名认证信息时:点击去实名认证。
- 账号切换失败只展示 Toast不清空登录态。
- 实名认证失败只影响实名认证页面,不影响登录态和账号上下文。