搭建个人知识付费应用系统整体需求及详细设计

2年前 (2022) 程序员胖胖胖虎阿
317 0 0

系统整体需求

收益模型

  • 广告

    • 访客及普通用户展现广告
  • 付费内容

    • 访客及普通用户无法查看付费内容的全部内容
    • 付费内容免费浏览
    • 付费内容可单篇付费
    • 付费资源附件需要付费购买(普通用户原价,VIP 会员 X 折)
  • 会员

    • VIP 会员免广告
    • 付费内容免费浏览

系统架构图

graph LR
    app[知识付费系统]
    app --- user[用户中心]
    app --- content[内容]
    app --- ad[广告]
    
    user --- 注册/登录
    user --- 会员中心
    user --- 支付历史

    content --- 文章 --- 收费附件
    content --- 页面 --- 收费附件
    content --- 代码片段 --- 收费附件
    content --- comp1[禁止文本选中复制组件]
    content --- comp2[代码复制组件]
    
    ad --- 会员免广告组件
    ad --- comp3[AntiAdBlock 插件]

模块说明

用户中心

注册、登录
  • Github 账号登录
  • 微信扫码登录
  • 短信验证码登录
  • 账号密码登录
会员中心
  • 非会员:提示开通
  • 会员:显示到期时间和提示续费
支付历史

主要可以查询以下三类支付数据:

  • 会员开通记录
  • 内容付费记录
  • 资源购买记录

内容

文章、页面、代码片段
字段 说明 必填 文章 页面 代码片段
slug 链接
title 标题
content 内容
paid 是否为付费
price 售价
tags 标签
标签
  • slug: string
  • name: i18nObj
  • desc: i18nObj
附件
  • slug: string
  • title: i18nObj
  • desc: i18nObj
  • path: string
  • tags: Tag[]
付费内容核心业务流程
graph TB
    Start([Start]) --访问付费内容-->
    check1{是否登录} --F--> free[仅免费内容可见]
    check1 --T--> check2{是否为 VIP 会员} --F-->
    check3{是否购买该内容} --F--> free
    check2 --T--> paid[可见全部内容]
    check3 --T--> paid
    paid --下载付费资源--> check4{是否购买付费资源}
    free --下载付费资源--> check4
    check4 --F--> payment[购买支付页面]
    check4 --T--> download[下载]

    download --> Stop([Stop])
    payment --> Stop

广告

暂定为两类广告:

  • 默认展示 Google Adsense
  • 广告位可付费预定(分阶段完成)
要求

对浏览器广告屏蔽插件进行检测,如果访客(非 VIP 用户)开启了广告拦截插件,则禁止显示文章内容正文,改为提示关闭广告拦截插件。

系统详细设计

待完善。

系统结构设计

  • 用户模块

    • 注册登录
    • 个人信息补全
    • 会员模块
  • 支付模块

    • Prisma Schema
    • 支付宝二维码订单预创建
    • 支付回调处理
    • 手动查询更新订单状态
  • 内容模块

    • Sanity Schema
  • 广告模块

项目代码结构

.
├── app            # 核心应用代码,下属目录酌情添加
│   ├── components    # 前端组件
│   ├── i18n    # 翻译
│   ├── layout    # 布局页面(可省,算组件也行)
│   ├── routes    # Nested 路由
│   ├── services # 后端服务,如 Cache、Prisma 等
│   └── types    # 类型定义 (不一定需要)
├── prisma        # Prisma 数据库 Schema
├── public        # Assets 静态资源
└── styles        # Tailwind CSS 源码

项目根目录还会放置其他配置类的文件,如 Sanity、 ESLint、Prettier 配置等。

功能模块详细设计

用户模块

使用 Authing 服务,注册、登录合并,支持第三方登录(如 Github、Gitee、支付宝、微信小程序等)。

界面详细设计

相关文章

暂无评论

暂无评论...