Files
soul-yongping/.cursor/meeting/2026-03-05_超级个体解锁眼睛需求分析.md

79 lines
2.7 KiB
Markdown
Raw 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.

# 需求分析 - 超级个体解锁眼睛交互改造
## 基本信息
- **时间**2026-03-05
- **需求来源**:用户反馈
- **涉及页面**`miniprogram/pages/member-detail/member-detail`
---
## 一、需求描述
超级个体详情页点击「解锁眼睛」图标时,需调整交互逻辑:
| 原逻辑 | 新逻辑 |
|--------|--------|
| 弹窗「成为VIP会员并完成匹配后即可查看完整联系方式」→ 确认跳转**找伙伴/匹配页** | **不跳转匹配页**;未登录先登录;已登录按权益处理 |
### 新逻辑细则
1. **未登录**:弹窗「请先登录」→ 确认跳转「我的」页,用户登录后再返回操作
2. **已登录**
- **VIP 会员**`hasFullBook`):直接解锁,可无限次解锁任意超级个体
- **非 VIP**:每人 **1 次免费解锁**,第 2 次起弹窗「免费次数已用完,开通 VIP¥1980/年)可无限解锁」→ 确认跳转 **VIP 会员页**1980 付款页)
---
## 二、已实现修改(小程序端)
### 修改文件
- `miniprogram/pages/member-detail/member-detail.js`
### 实现要点
1. **解锁状态存储**(本地 `wx.setStorageSync`
- Key`member_unlocks_{userId}`
- 值:已解锁的 `memberId` 数组
- 用于判断是否已解锁、是否已用掉免费次数
2. **`unlockContact()` 流程**
```
点击眼睛
→ 未登录Modal「需要登录」→ 去登录 → switchTab 我的
→ 已登录 + VIP直接解锁并写入存储
→ 已登录 + 非VIP + 首次:免费解锁并写入存储
→ 已登录 + 非VIP + 非首次Modal「去开通」→ navigateTo VIP 页
```
3. **`enrichAndFormat` 中 `contactUnlocked` / `wechatUnlocked`**
- 原:仅 `isMatched`(匹配过的人)
- 现:`isMatched || localUnlocked`(本地解锁列表也视为已解锁)
---
## 三、后续可选优化(后端/管理端)
### 1. 后端持久化(可选)
当前免费次数与解锁记录存于**本地**,换设备或清缓存会丢失。若需跨设备、防作弊,可:
- 新增接口:`POST /api/miniprogram/member/unlock`
- 入参:`memberId`、`userId`
- 逻辑:校验免费次数 / VIP 权益,记录解锁关系
- 小程序改为调用该接口,成功后更新本地展示
### 2. 管理端统计(可选)
- 统计「超级个体联系方式解锁」次数
- 按用户、按超级个体维度统计
---
## 四、验收要点
- [ ] 未登录点击眼睛 → 弹窗「需要登录」→ 确认跳转「我的」
- [ ] 已登录 + 非 VIP + 首次 → 免费解锁,展示完整联系方式
- [ ] 已登录 + 非 VIP + 第 2 次起 → 弹窗「去开通」→ 确认跳转 VIP 页¥1980
- [ ] 已登录 + VIP → 直接解锁,不限次数
- [ ] 不跳转匹配页