169 lines
8.3 KiB
Markdown
169 lines
8.3 KiB
Markdown
# 小程序功能与管理端配置补齐分析
|
||
|
||
> 基于 miniprogram 功能分析,梳理需管理端补齐的配置与功能。
|
||
> 更新日期:2026-02-25
|
||
> **2026-02-25 已补齐**:mp_config 管理端、网站配置持久化、支付/二维码 POST、小程序 config 读取
|
||
|
||
---
|
||
|
||
## 一、小程序配置来源总览
|
||
|
||
| 配置类型 | 来源 | 管理端入口 | 状态 |
|
||
|----------|------|------------|------|
|
||
| 免费章节 | system_config.free_chapters | 系统设置 | ✅ 已有 |
|
||
| 价格 (section/fullbook) | chapter_config / site_settings | 系统设置 | ✅ 已有 |
|
||
| 功能开关 (match/referral/search/about) | feature_config | 系统设置 | ✅ 已有 |
|
||
| 找伙伴配置 | match_config | 找伙伴配置页 | ✅ 已有 |
|
||
| 推广/分销 | referral_config | 推广设置 | ✅ 已有 |
|
||
| 小程序专用 (mp_config) | mp_config | 系统设置 → 小程序配置 | ✅ 已补齐 |
|
||
| 订阅消息模板 ID | mp_config 或 app.js 兜底 | 系统设置 → 小程序配置 | ✅ 已补齐 |
|
||
| 微信支付商户号 | mp_config 或 app.js 兜底 | 系统设置 → 小程序配置 | ✅ 已补齐 |
|
||
| API 地址 (baseUrl) | app.js 硬编码 | 发版时改 baseUrl | 已移除配置 |
|
||
| 网站/站点配置 | site_config, page_config | 网站配置 | ✅ 已持久化 |
|
||
|
||
---
|
||
|
||
## 二、小程序功能模块与配置依赖
|
||
|
||
### 2.1 核心配置接口:`GET /api/miniprogram/config`
|
||
|
||
**返回字段**(来自 GetPublicDBConfig):
|
||
|
||
| 字段 | 说明 | 管理端对应 |
|
||
|------|------|------------|
|
||
| freeChapters | 免费章节 ID 列表 | 系统设置 → 免费章节 |
|
||
| prices | { section, fullbook } | 系统设置 → 价格设置 |
|
||
| features | matchEnabled, referralEnabled, searchEnabled, aboutEnabled | 系统设置 → 功能开关 |
|
||
| mpConfig | appId, apiDomain, buyerDiscount, referralBindDays, minWithdraw | **无管理端** |
|
||
| userDiscount | 好友购买优惠 % | 推广设置 |
|
||
|
||
### 2.2 找伙伴配置:`GET /api/miniprogram/match/config`
|
||
|
||
| 字段 | 说明 | 管理端对应 |
|
||
|------|------|------------|
|
||
| matchTypes | 匹配类型列表 | 找伙伴配置页 |
|
||
| freeMatchLimit | 每日免费匹配次数 | 找伙伴配置页 |
|
||
| matchPrice | 单次匹配价格(元) | 找伙伴配置页 |
|
||
| settings | enableFreeMatches, enablePaidMatches, maxMatchesPerDay | 找伙伴配置页 |
|
||
|
||
### 2.3 小程序 app.js 硬编码项
|
||
|
||
```javascript
|
||
// 当前硬编码,无法通过管理端修改
|
||
baseUrl: 'http://localhost:8080', // 开发/生产需改代码
|
||
appId: 'wxb8bbb2b10dec74aa',
|
||
withdrawSubscribeTmplId: 'u3MbZGPRkrZIk-...', // 提现订阅消息模板
|
||
mchId: '1318592501', // 微信支付商户号
|
||
```
|
||
|
||
---
|
||
|
||
## 三、管理端需补齐项(按优先级)
|
||
|
||
### P0 - 必须补齐
|
||
|
||
| 项 | 说明 | 建议方案 |
|
||
|----|------|----------|
|
||
| **小程序专用配置 (mp_config)** | appId、apiDomain、minWithdraw 等,小程序从 config 读取 | 在「系统设置」或新建「小程序配置」卡片,支持编辑并写入 system_config.mp_config |
|
||
| **订阅消息模板 ID** | 提现申请需用户授权订阅,模板 ID 现硬编码 | 管理端增加「提现订阅模板 ID」配置,写入 mp_config 或单独 key;小程序启动时从 config 拉取 |
|
||
| **API 地址 (baseUrl)** | 开发/生产切换需改 app.js | 方案 A:从 mp_config.apiDomain 下发,小程序优先用接口返回值;方案 B:保留硬编码,仅文档说明切换方式 |
|
||
|
||
### P1 - 建议补齐
|
||
|
||
| 项 | 说明 | 建议方案 |
|
||
|----|------|----------|
|
||
| **微信支付商户号** | 支付回调、对账依赖 mchId,现硬编码 | 管理端「支付配置」或「小程序配置」增加 mchId 字段;后端从配置读取,小程序可不改(支付由后端发起) |
|
||
| **网站配置持久化** | SitePage 当前保存仅前端状态,未调用后端 | 对接 POST /api/db/config,按 key 保存 site_config、page_config、menu_config |
|
||
| **支付/二维码配置持久化** | PaymentPage、QRCodesPage 使用 POST /api/config | soul-api 无 POST /api/config,需新增或改为 POST /api/db/config { key, value } |
|
||
|
||
### P2 - 可选优化
|
||
|
||
| 项 | 说明 | 建议方案 |
|
||
|----|------|----------|
|
||
| **referral_config 的 withdrawFee** | 文档有提现手续费,ReferralSettingsPage 未展示 | 若业务需要,在推广设置页增加「提现手续费」字段 |
|
||
| **主题色/品牌色** | app.js theme 硬编码 | 若需多端统一,可从 site_config 或 mp_config 下发 |
|
||
|
||
---
|
||
|
||
## 四、配置与 system_config 键名映射
|
||
|
||
| system_config.config_key | 管理端页面 | 说明 |
|
||
|--------------------------|------------|------|
|
||
| free_chapters | 系统设置 | 免费章节 ID 数组 |
|
||
| feature_config | 系统设置 | 功能开关对象 |
|
||
| site_settings | 系统设置 | 价格、作者信息 |
|
||
| chapter_config | (可选) | 合并 freeChapters + prices,GetPublicDBConfig 优先用 |
|
||
| match_config | 找伙伴配置 | 匹配类型、免费次数、价格 |
|
||
| referral_config | 推广设置 | 分销比例、提现门槛、绑定期等 |
|
||
| mp_config | **待新增** | 小程序专用:appId, apiDomain, withdrawSubscribeTmplId, mchId 等 |
|
||
| site_config | 网站配置 | 站点名称、logo 等(需持久化) |
|
||
| page_config | 网站配置 | 页面标题(需持久化) |
|
||
| menu_config | 网站配置 | 菜单开关(需持久化) |
|
||
| payment_methods | 支付配置 | 微信/支付宝活码等(需确认 POST 接口) |
|
||
| live_qr_codes | 二维码管理 | 群活码(需确认 POST 接口) |
|
||
|
||
---
|
||
|
||
## 五、接口与数据流检查
|
||
|
||
### 5.1 管理端调用与后端支持
|
||
|
||
| 管理端页面 | 调用 | 后端支持 | 备注 |
|
||
|------------|------|----------|------|
|
||
| 系统设置 | GET/POST /api/admin/settings | ✅ | 写入 free_chapters, feature_config, site_settings |
|
||
| 推广设置 | GET/POST /api/admin/referral-settings | ✅ | 写入 referral_config |
|
||
| 找伙伴配置 | GET /api/db/config/full?key=match_config | ✅ | 需 AdminAuth |
|
||
| 找伙伴配置 | POST /api/db/config | ✅ | body: { key: 'match_config', value: {...} } |
|
||
| 支付配置 | GET/POST /api/config | ⚠️ | GET 有,POST 无;需新增或改用 db/config |
|
||
| 网站配置 | GET /api/config | ⚠️ | GET 有,保存未对接 |
|
||
| 二维码管理 | GET/POST /api/config | ⚠️ | 同上 |
|
||
|
||
### 5.2 小程序读取链
|
||
|
||
```
|
||
小程序 onLoad / custom-tab-bar
|
||
→ GET /api/miniprogram/config
|
||
→ GetPublicDBConfig
|
||
→ 读取 system_config: chapter_config, free_chapters, feature_config, mp_config, referral_config
|
||
→ 返回 freeChapters, prices, features, mpConfig, userDiscount
|
||
```
|
||
|
||
---
|
||
|
||
## 六、实施建议(管理端开发任务)
|
||
|
||
### 任务 1:新增「小程序配置」区块(P0)
|
||
|
||
- **位置**:系统设置页新增卡片,或独立「小程序配置」页
|
||
- **字段**:
|
||
- API 域名 (apiDomain):如 `https://soulapi.quwanzhi.com`
|
||
- 小程序 AppID (appId):如 `wxb8bbb2b10dec74aa`
|
||
- 提现订阅模板 ID (withdrawSubscribeTmplId)
|
||
- 微信支付商户号 (mchId)(可选,后端也可用 env)
|
||
- 最低提现金额 (minWithdraw)(可与 referral_config 同步)
|
||
- **存储**:POST /api/admin/settings 扩展,或 POST /api/db/config { key: 'mp_config', value: {...} }
|
||
- **小程序**:app.js 启动时请求 config,若 mp_config 存在则覆盖 baseUrl;withdrawSubscribeTmplId 从 config 取
|
||
|
||
### 任务 2:网站配置持久化(P1)
|
||
|
||
- SitePage 保存时调用 POST /api/db/config,按 key 分别保存 site_config、page_config、menu_config
|
||
- 或扩展 AdminSettingsPost 支持 site_config 等
|
||
|
||
### 任务 3:支付/二维码配置接口(P1)
|
||
|
||
- 方案 A:新增 POST /api/admin/config,支持 payment_methods、live_qr_codes 等 key
|
||
- 方案 B:PaymentPage、QRCodesPage 改为调用 POST /api/db/config,body: { key, value }
|
||
|
||
---
|
||
|
||
## 七、附录:小程序页面与配置使用
|
||
|
||
| 页面 | 使用的配置 | 接口 |
|
||
|------|------------|------|
|
||
| custom-tab-bar | features.matchEnabled | GET /api/miniprogram/config |
|
||
| 阅读 read | freeChapters, prices | GET /api/miniprogram/config (chapterAccessManager) |
|
||
| 找伙伴 match | matchTypes, freeMatchLimit, matchPrice | GET /api/miniprogram/match/config |
|
||
| 我的 my | features, 收益/提现规则 | GET /api/miniprogram/config, referral/data |
|
||
| 分销 referral | shareRate, minWithdraw, bindingDays | GET /api/miniprogram/referral/data |
|
||
| 支付流程 | mchId (后端), openId | app.js 硬编码 + 后端 env |
|