博客系统自文档 · 附录 C / 19 篇
目录 · 上一篇:SEO、搜索与发现增强 · 系列完结
写在前面
连载主干偏「读写评 + RPG」;本篇补 商业化与运营支撑 能力:支付(含 RPG 充值)、邮件、数据大屏、定时任务。若你只做个人博客,可略读;若展示 全栈产品完整度,这是加分项。
功能与体验
RPG 钻石充值(C 端 · 2026-06)
| 步骤 | 说明 |
|---|---|
| 1 | 冒险页余额不足 → 打开 RpgRechargeDynamicModal |
| 2 | POST /rpg/recharge/create(金额元,需 JWT)→ 返回支付宝动态二维码 |
| 3 | 用户扫码支付(或 Admin 手工补钻) |
| 4 | 履约后 WS 推送 rechargeComplete → 客户端更新钻石并关弹窗 |
- 汇率:1 元 = 100 钻石(见
constants/rpg-economy.ts) - 兜底:
GET /rpg/recharge/status轮询 - Web 与 uni-app 均接入;Admin 在支付订单列表筛
bizType=rpg_recharge,或 RPG 用户页手工补钻 →POST /pay/order/mark-recharge-fulfilled
支付模块(通用)
| 能力 | 说明 |
|---|---|
| 下单 | POST /pay/trade/create(匿名)或 POST /pay/order/create(JWT) |
| 查询 / 关闭 / 退款 | admin ext-apps/pay-order |
| 支付宝 | 动态码、回调 URL 配置于 .env pay_alipayNotifyUrl |
| 微信 | 模块预留;小程序登录与 H5-open-mini 场景可扩展 |
模块:blog-server/src/modules/pay/。与 RPG 打赏(钻石转账)是不同业务线。
邮件
| 能力 | 说明 |
|---|---|
| 注册/找回验证码 | Nodemailer SMTP |
| 存储 | Redis email_verification_code:{type}:{email},TTL 5 分钟 |
模块:features/email。与 UserService 注册流程配合。
未实现:定时邮件摘要(feature-backlog.md 仍标记 backlog)。
admin 数据大屏
| 入口 | /datascreen |
|---|---|
| 技术 | Vue3 + ECharts + Arco |
| 内容 | 访问趋势、发文趋势、分类饼图、标签词云、TOP 文章、最近动态 |
详见 blog-admin/src/views/dashboard/datascreen/README.md。适合 开放日 / 汇报 展示站点健康度。
定时任务
| 能力 | 说明 |
|---|---|
| 定时发文 | scheduled-task 扫描 status=scheduled |
| 运维 | admin ops-tools 查看执行记录 |
| RBAC 缓存 | 可配置刷新任务 |
设计与实现
flowchart TB
subgraph ops [运营支撑]
Pay[pay 模块]
Recharge[RechargeService]
Email[email + Redis]
Cron[scheduled-task]
Screen[datascreen API]
end
subgraph clients [入口]
Admin[blog-admin]
Nuxt[blog-home-nuxt]
UniApp[blog-home-uniapp]
end
Nuxt --> Recharge
UniApp --> Recharge
Recharge --> Pay
Admin --> Pay
Admin --> Screen
Admin --> Cron
Nuxt --> Email
UniApp --> Email
Cron --> MySQL[(article 定时发布)]
Pay --> WS[/realtime rechargeComplete/]
WS --> Nuxt
WS --> UniApp
安全要点
- 支付回调 URL 需公网可达,验签失败拒绝入账
- 邮件验证码防刷可叠加 IP 限流(第 12 篇)
- 大屏接口走 RBAC,仅管理员角色
- 充值接口走
rpg_peripNginx 限流区(第 12 篇)
踩坑与取舍
- 充值钻石 vs 打赏钻石:充值走 pay 订单 +
RechargeService;打赏走 RPG 内部转账,勿混为一谈。 - 大屏数据实时性:多为统计聚合 API,非 WebSocket 推图。
- 定时发布依赖 cron 存活:PM2 只保 server 进程,任务逻辑在 Nest 内。
- 手工补钻顺序:Admin 须先
rechargeDiamonds再mark-recharge-fulfilled,否则 WS 可能找不到意向单。
系列导航
- 目录:博客系统分类
- 上一篇:17 SEO、搜索与发现增强
- 系列完结
- 导读:导读 · 第 0 篇
- 全系列 00–15 + 附录 16–18 构成完整站点说明书
延伸阅读
blog-server/src/modules/rpg/recharge/recharge.service.tsblog-server/src/modules/pay/blog-home-nuxt/components/rpg/RpgRechargeDynamicModal.vue

全部评论(4)