58 lines
1.7 KiB
Markdown
58 lines
1.7 KiB
Markdown
# 邀请好友功能修复方案
|
|
|
|
## 问题分析
|
|
|
|
邀请好友页面(`/wallet/invite`)当前显示邀请码和链接,但当用户通过邀请链接注册时,系统未调用 `tasks.track` API 记录邀请行为,导致邀请任务无法完成和领取奖励。
|
|
|
|
---
|
|
|
|
## 当前状态
|
|
|
|
| 项目 | 状态 |
|
|
|------|------|
|
|
| 邀请页面 | `src/pages/Wallet/Invite.tsx` |
|
|
| 邀请 API | `api_request.invite.getCode()` / `getStats()` / `getRecords()` |
|
|
| 任务追踪 API | `api_request.tasks.track({ action_type, count })` |
|
|
| 注册流程 | `user_login_or_register` 未传递 `invite_code` |
|
|
|
|
---
|
|
|
|
## 问题根因
|
|
|
|
1. **注册时未传递 invite_code** - 新用户通过邀请链接注册时,前端未将邀请码传递给注册 API
|
|
2. **未调用 tasks.track** - 注册成功后未记录邀请行为到任务系统
|
|
|
|
---
|
|
|
|
## 实现方案
|
|
|
|
### 修改文件
|
|
|
|
| 文件 | 修改内容 |
|
|
|------|----------|
|
|
| `authSlice.tsx` | 登录/注册时传递 `invite_code` |
|
|
| `Invite.tsx` | 注册成功后调用 `tasks.track` |
|
|
|
|
### 详细步骤
|
|
|
|
#### 1. 从 URL 提取 invite_code
|
|
|
|
当用户通过邀请链接(如 `https://chunyu.dev/invite/CY123456` 或带 `?invite=CY123456`)访问时,从 URL 中提取邀请码并存储到 localStorage。
|
|
|
|
#### 2. 注册时传递 invite_code
|
|
|
|
在 `user_login_or_register` 请求中附加 `invite_code` 参数。
|
|
|
|
#### 3. 注册成功后调用 tasks.track
|
|
|
|
注册成功后,调用 `api_request.tasks.track({ action_type: 'invite', count: 1 })` 记录邀请行为。
|
|
|
|
---
|
|
|
|
## 验证步骤
|
|
|
|
1. 访问 `/invite/CY123456` 确认邀请码被正确提取
|
|
2. 使用新账号注册,确认注册请求包含 `invite_code`
|
|
3. 注册成功后确认 `tasks.track` 被调用
|
|
4. 在任务中心确认邀请任务进度更新
|