# 需求分析 - 超级个体解锁眼睛交互改造 ## 基本信息 - **时间**: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 → 直接解锁,不限次数 - [ ] 不跳转匹配页