81 lines
2.7 KiB
Markdown
81 lines
2.7 KiB
Markdown
# 知识付费平台说明
|
||
|
||
## Markdown 内容结构
|
||
|
||
内容统一放在 `public/markdown/` 目录,支持**文件引用**和**字符串**两种方式:
|
||
|
||
```
|
||
public/markdown/
|
||
├── README.md # 说明
|
||
├── course/ # 课程配套文章
|
||
│ ├── 1/1.md, 2.md, 3.md
|
||
│ └── 2/1.md, 2.md
|
||
└── ebook/ # 电子书章节
|
||
├── 1/1.md, 2.md, 3.md
|
||
└── 2/1.md, 2.md
|
||
```
|
||
|
||
**引用格式**(数据库 `article_markdown` / `content` 字段):
|
||
- `@file:course/1/1` → 加载 `course/1/1.md`
|
||
- `@file:ebook/2/3` → 加载 `ebook/2/3.md`
|
||
- 直接写 Markdown 字符串 → 内联渲染
|
||
|
||
**配置**:`src/markdown/config.js` 中维护 `MARKDOWN` 映射,新增章节时在此添加。
|
||
|
||
## 功能概览
|
||
|
||
- **首页(游客模式)**:无需登录即可浏览电子书专栏和课程专栏
|
||
- **电子书**:支持 Markdown 内容,免费章节可读,VIP 章节需开通
|
||
- **课程**:视频支持本地文件或 CDN 链接,免费试看 + VIP 全看
|
||
- **VIP**:月卡/年卡/终身卡,开通后可解锁全部内容
|
||
- **暗黑模式**:右上角灯泡切换
|
||
|
||
## Supabase 数据表
|
||
|
||
在 Supabase SQL Editor 中执行 `supabase/migrations/001_knowledge_tables.sql` 创建表结构。
|
||
|
||
### 表说明
|
||
|
||
| 表名 | 说明 |
|
||
|------|------|
|
||
| wxgzh_ebooks | 电子书专栏 |
|
||
| wxgzh_ebook_chapters | 电子书章节(content 存 Markdown) |
|
||
| wxgzh_courses | 课程专栏 |
|
||
| wxgzh_course_chapters | 课程章节(video_url 支持 /path 或 https://) |
|
||
| wxgzh_vip_users | VIP 用户(user_id, expire_at) |
|
||
|
||
### 添加 VIP 用户
|
||
|
||
```sql
|
||
INSERT INTO wxgzh_vip_users (user_id, expire_at)
|
||
VALUES ('用户UUID', '2026-12-31 23:59:59+00');
|
||
```
|
||
|
||
## 视频 URL 格式
|
||
|
||
- **CDN**:`https://your-cdn.com/video.mp4`
|
||
- **本地**:`/videos/lesson1.mp4`(放在 `public/videos/` 下)
|
||
|
||
## 支付接入
|
||
|
||
已接入 payjsapi 后端,支持 **PC / 手机浏览器 / 微信内** 三种场景,**zpay / xorpay** 两种渠道。
|
||
|
||
### 场景与渠道
|
||
|
||
| 场景 | 渠道 | 行为 |
|
||
|------|------|------|
|
||
| PC 浏览器 | zpay | 展示微信扫码二维码,轮询支付状态 |
|
||
| 手机浏览器 | zpay | 新窗口打开支付页 |
|
||
| 微信内 | xorpay(默认) | 当前页表单提交,收银台支付 |
|
||
|
||
### 配置
|
||
|
||
- **wxH5**:在 `.env` 中设置 `VITE_PAYMENT_API_URL`(payjsapi 地址,默认 `http://127.0.0.1:8700`)
|
||
- **payjsapi**:需为 wxH5 配置 `SUPABASE_URL`、`SUPABASE_SERVICE_KEY`,支付成功后同步 Supabase `wxgzh_vip_users`
|
||
|
||
### 支付流程
|
||
|
||
1. 用户登录后点击「开通 VIP」→ 选择套餐 → 发起支付
|
||
2. 返回地址 `/paid`,轮询订单状态,成功后刷新 VIP 状态
|
||
3. payjsapi 异步通知写入 PocketBase + Supabase
|