Files
汉秋 49e997ddba 修复合作获客扫码绑定崩溃与 Toast 层级,并接入分成比例修改。
将扫码页提升到列表层弹出并补齐 AppDelegate.window,避免扫码时 UIKit 取主窗口崩溃;Toast 改用独立 UIWindow 显示在 sheet 之上;合作获客员支持短信验证修改分成比例,同时优化冷启动根视图创建时机并补充相关测试。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-03 20:37:24 +08:00

68 lines
3.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 合作订单模块
## 职责
合作订单模块面向摄影师/门店角色,管理合作获客业务:
- **获客员线索**:查看合作获客员上报的潜在客户线索(手机号、备注、图片)
- **获客订单**:查看通过合作渠道产生的订单,支持关键词搜索
- **合作获客员**:查看已绑定获客员列表,扫码绑定新获客员
权限 URI`cooperation_order`(与 Android `CooperationOrderFeature.URI` 一致)。
## 核心流程
### 首页入口
1. 用户点击首页「合作订单」菜单(`cooperation_order`
2. `CooperationOrderAccessView` 校验 `PermissionContext.canAccess("cooperation_order")`
3. 无权限时 Toast 提示并返回;有权限进入 `CooperationOrderListView`
### 双 Tab 列表
| Tab | API | 说明 |
| --- | --- | --- |
| 获客员线索 | `GET .../sale-user/referral-leads` | 分页 10 条,下拉刷新/加载更多 |
| 获客订单 | `GET .../sale-user/acquisition-orders` | 支持 `keyword` 搜索 |
### 获客员绑定
1. 列表页右上角「合作获客员」→ `CooperationAcquirerView`
2. 扫码页由 `CooperationOrderListView` 统一弹出(避免在 `navigationDestination` 子页内嵌 `fullScreenCover` 导致 SwiftUI 栈溢出崩溃)
3. 扫码或主 Tab 扫码识别 `{"method":"sale_user_bind","sale_user_id":N}`
4. `BindAcquirerView` 加载邀请信息 → 填写分账比例0100`POST .../sale-user/accept-bind?sale_user_id=&commission_rate=`
### 获客员备注名
1. 合作获客员列表每行右上角「修改备注」→ 弹窗编辑备注名
2. 备注名最多 20 个字符;点击保存时校验,超出则提示且不提交
3. 修改备注弹窗展示 `saler_real_name`:「为 {获客员真实姓名} 设置备注名」
4. 保存 → `POST .../sale-user/update-remark`Body`{ "sale_user_id": Int, "photog_remark_name": String }`
5. 展示规则:优先 `photog_remark_name`,为空时回退获客员原名(`name` / `saler_name` / `sale_user_name`
6. 绑定确认页(`BindAcquirerView`)仍展示真实获客员名,不使用备注名
## 与订单模块关系
订单管理(`orderType` 11 摄影师跟拍 / 14 线下扫码)在订单卡片展示「订单来源」:
- Sheet 内选择获客员 → 带客单 → `POST .../bind-referral-order`
- 全页流程见 `ReferralOrderSelectView`
- 订单退款成功后,若已绑定带客单,调用 `POST .../referral-orders/{id}/status`status=3
## 主要文件
| 文件 | 说明 |
| --- | --- |
| `API/CooperationOrderAPI.swift` | 9 个 sale-user / cooperative 接口 |
| `Models/CooperationOrderModels.swift` | 实体与解码 |
| `Services/CooperationOrderFeature.swift` | 权限 URI 常量 |
| `ViewModels/*` | 列表、获客员、绑定 ViewModel |
| `Views/*` | SwiftUI 页面与卡片组件 |
## 依赖
- `@Environment(\.cooperationOrderAPI)` 注入网络层
- `@EnvironmentObject PermissionContext` 权限校验
- `@EnvironmentObject ToastCenter` 用户提示
- Kingfisher 加载线索图片