# miniprogram 功能还原分析报告 ## 一、对比结论 | 项目 | miniprogram(甲方) | miniprogram2(你写的) | |------|-------------------|------------------------| | 页面分享 | 仅 read、referral 有 | 几乎所有页面都有 | | scene 解析 | 无 | 有 utils/scene.js | | 推荐码获取 | 分散(userInfo?.referralCode 等) | 统一 app.getMyReferralCode() | | 书籍 API | /api/book/all-chapters | /api/miniprogram/book/all-chapters | | 特有页面 | vip、member-detail | scan、profile-edit | ## 二、已完成的还原项 ### 1. 基础能力(app.js + utils/scene.js) - **新增** `utils/scene.js`:扫码 scene 参数编解码,支持 `mid`、`id`、`ref` - **app.js**: - 引入 `parseScene`,`handleReferralCode` 支持 `options.scene` 解析 - 新增 `getMyReferralCode()`:统一获取邀请码 - 新增 `getSectionMid(sectionId)`:根据 id 查 mid - `loadBookData` 改为 `/api/miniprogram/book/all-chapters` ### 2. 页面分享(onShareAppMessage) 已为以下页面补充分享,路径统一带 `ref` 参数: - index、chapters、match、my - read、referral(原有,已统一用 getMyReferralCode) - search、settings、purchases、privacy - withdraw-records、addresses、addresses/edit - agreement、about、vip、member-detail ### 3. read.js 分享逻辑 - 使用 `app.getMyReferralCode()` 替代 `userInfo?.referralCode || wx.getStorageSync('referralCode')` - 保持 `onShareAppMessage`、`onShareTimeline` 行为不变 ### 4. API 路径修正 - `app.loadBookData`:`/api/book/all-chapters` → `/api/miniprogram/book/all-chapters` - `index.loadBookData`、`loadFeaturedFromServer`、`loadLatestChapters`:同上 - `chapters.loadDailyChapters`:同上 ## 三、未改动项(保留甲方逻辑) - **vip 相关接口**:`/api/vip/members`、`/api/vip/status`、`/api/vip/profile` 仍为原路径,未改为 `/api/miniprogram/*`(若 soul-api 无对应 miniprogram 接口,需后端补充) - **页面结构**:保留 vip、member-detail,未引入 scan、profile-edit ## 四、后续建议 1. **soul-api 路由**:确认 `/api/miniprogram/book/all-chapters` 已注册;若 vip 需在小程序使用,建议在 miniprogram 组下增加等价接口。 2. **referral.js**:检查是否已使用 `app.getMyReferralCode()`,若仍用旧方式可统一替换。 3. **read.js 的 mid 支持**:miniprogram2 的 read 支持 `mid` 参数(便于扫码直达),若需要可在 miniprogram 的 read 中补充 `sectionMid` 与 `getShareConfig` 的 mid 逻辑。