2.7 KiB
2.7 KiB
知识付费平台说明
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 用户
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,支付成功后同步 Supabasewxgzh_vip_users
支付流程
- 用户登录后点击「开通 VIP」→ 选择套餐 → 发起支付
- 返回地址
/paid,轮询订单状态,成功后刷新 VIP 状态 - payjsapi 异步通知写入 PocketBase + Supabase