文章

开发文档

【崇胜SAAS】遇见内容素材小程序开发文档

21 分钟 8.3k 字 13 阅读

应用名称(暂定):内容素材小程序(文章 / 头像 / 短句 / 图库 四合一) 应用目录名(暂定):contentapp(可在确认时修改) 编写日期:2026-10-25 状态:已确认(2026-10-25 逐项批复,采用建议方案)—— 已进入 P1 开发


一、开发范围与目录约束

内容位置说明
应用后端(PHP)plugins/contentapp/遵循框架插件规范:config.php / install.php / controller/admin / controller/api / model / class / tpl
小程序前端源码(未编译)应用开发代码/contentapp-miniprogram/编译预览通过后,将编译产物/发布物接入 plugins 应用目录
后台管理前端源码(未编译)应用开发代码/contentapp-admin/编译后的静态资源放入 plugins 应用目录
框架核心文件不改动cscms/、根目录入口文件等一律不动
  • 后台控制器访问:/admin.php/contentapp.控制器/方法
  • 前台 API 访问:/index.php/contentapp/api控制器/方法(或应用路由)
  • 所有 PHP 文件头部加 if (!defined('FCPATH')) exit(...) 防直接访问
  • 控制器继承 Cscms,模型继承 BaseModel,table_prefix = 'contentapp_'

二、整体架构

微信小程序前端 ──HTTPS──▶ contentapp API 接口层 ──▶ contentapp 模型层 ──▶ MySQL(contentapp_* 分站表)
                              │                        │
                              │                        ├─ 框架能力:站点(siteid)、WxApplet(code2session)、
                              │                        │            Wxmp、签名验证、站点配置(setting)
                              │                        └─ AI 调用:AI 大模型配置模块(支持国内大厂 + OpenAI 通用接口)
后台管理前端 ──HTTPS──▶ contentapp admin 控制器(管理员登录校验 + 签名)

三、功能需求明细

3.1 四大内容模块(文章 / 头像 / 短句 / 图库)

四个模块结构高度一致,统一抽象,字段差异如下:

维度文章短句头像图库
内容形态HTML 富文本多行文本图片图片
解锁展示未解锁展示前 50% 内容未解锁展示前 50% 内容列表可见、下载原图需解锁列表可见、下载原图需解锁
AI 生成标题 + 富文本正文标题 + 正文(修正原文"AI生成文章"笔误)不涉及不涉及

3.1.1 模块配置(每模块独立)

  • 模块总开关:是否开启该模块(关闭后小程序端不显示入口)
  • 解锁方式配置:
  • 开启"广告解锁":可配置解锁所需观看广告次数 N(默认 1 次)
  • 开启"VIP 解锁"
  • 两个都关闭 → 该模块内容全部免费
  • 解锁有效期(新增建议项):广告解锁后生效时长可选:永久 / 当日 / 当周(默认永久)
  • 说明:内容解锁方式由模块配置统一决定,单条内容不再单独设置解锁开关

3.1.2 解锁判定逻辑(已按确认修正:分类权限只管"进门",内容解锁统一跟模块配置)

层级一:模块配置(决定内容解锁方式,全局统一,无内容级单独开关)
  - 广告、VIP 都关 → 该模块所有内容免费浏览/下载
  - 只开广告 → 所有内容需看广告解锁(次数 N 取模块配置)
  - 只开 VIP → 所有内容需 VIP 解锁
  - 广告、VIP 都开 → VIP 用户直接解锁;非 VIP 用户看广告解锁(次数 N 取模块配置)

层级二:分类权限(仅作为"进入该分类"的门槛,与内容解锁相互独立)
  - 分类设置 VIP 专属 → 需 VIP 身份才可进入该分类列表
  - 分类设置看 N 次广告 → 累计看满 N 次广告后才可进入该分类列表(N 为分类单独配置)
  - 两项都设置时:VIP 用户直接进入;非 VIP 用户需看满 N 次广告

判定顺序:先判模块总开关(关 → 内容免费)→ 再判分类进入权限(决定能否看到该分类下的内容列表)
         → 最后按模块配置决定单条内容的浏览/下载解锁方式

3.1.3 分类管理(四个模块相同,支持二级)

  • 字段:分类标题、上级分类(0=一级)、排序(数字越小越前)、封面图、描述
  • 分类权限:是否仅 VIP 可进入;是否需观看 N 次广告后才可进入
  • 分类启用/禁用
  • 删除分类时其下内容处理方式:禁止删除非空分类(需先移空内容),避免数据丢失

3.1.4 内容管理

文章

  • 字段:标题、分类、封面图、内容(HTML 富文本)、排序、发布时间、是否上架、浏览次数(自动累计)
  • 封面图规则:若未上传封面,保存时自动抓取正文内容中的第一张图片作为封面(前端与后台列表均按此规则显示);正文无图片且无封面时,显示模块默认占位图
  • 编辑器:后台富文本编辑器,支持图片插入

短句

  • 字段:标题、分类、内容(多行文本,纯文本)、排序、发布时间、是否上架、浏览次数

头像 / 图库(结构相同)

  • 字段:所属分类、图片、排序、是否上架、浏览次数、下载次数(自动累计)
  • 批量上传:选择分类 → 多选图片一次上传,自动生成缩略图;上传失败的单张不影响其他
  • 建议(待确认):是否需要上传时自动压缩/加水印

3.1.5 AI 生成内容(文章 / 短句模块)

  • 后台选择 AI 大模型(来自 AI 配置)→ 输入描述词(可附加:篇幅、风格、数量)→ 生成标题 + 正文
  • 生成结果进入草稿态,可人工编辑后保存上架
  • 调用记录:记录模型、消耗 token(接口返回时)、生成时间,便于后台查看

3.2 用户体系

3.2.1 静默登录(免注册)

  • 用户打开小程序即静默创建账号,前端不展示任何用户信息
  • 登录判定顺序:
  1. 取手机设备码(小程序端生成的设备指纹)→ 已存在则登录老账号
  2. 不存在 → 查微信唯一码(openid) → 已存在则登录老账号并回绑设备码
  3. 都不存在 → 创建新账号,绑定 openid + 设备码
  • 账号字段:用户ID、openid、设备码、注册时间、最后活跃时间、所属站点(siteid)

3.2.2 用户行为

  • 收藏:文章 / 短句 / 图库图片 / 头像,支持取消收藏、收藏列表
  • 下载记录:头像 / 图库的下载历史
  • 浏览记录(仅后台可见):文章/短句/头像/图库查看记录(用户、时间、内容)

3.2.3 VIP 体系

  • 卡类型(后台可增删改、设置价格、可下架):
  • 体验天卡:每个用户限领 1 次,解锁条件为观看 N 次广告(N 后台可配),有效期 1 天
  • 月卡 / 季卡 / 年卡 / 终生卡:直接付费开通(微信虚拟支付)
  • VIP 权益说明:HTML 富文本,后台可编辑,小程序端展示
  • 全局 VIP(一条 VIP 通用于四个模块),不做模块独立 VIP(简化,待确认)
  • 到期处理:到期后 VIP 权益失效,已解锁内容按"解锁有效期"规则保留

3.2.4 广告与解锁记录

  • 广告观看记录:用户、时间、广告位、关联内容(如有)
  • 解锁记录:用户、内容类型、内容ID、解锁方式(广告/VIP)、解锁时间、有效期
  • 广告解锁去重:同一内容同一用户同一有效期周期内只计一次

3.3 数据统计

  • 统计维度:日 / 周 / 月 / 年 / 累计
  • 统计指标(按模块 + 用户):
对象指标
文章浏览次数、观看广告次数(各时间维度)
短句浏览次数、观看广告次数
头像浏览次数、观看广告次数、下载次数
图库浏览次数、观看广告次数、下载次数
用户登录/访问次数、VIP 开通数量、看广告总次数
  • 实现方式:行为发生时写明细表 + 每日定时汇总表(contentapp_stats_daily),后台图表展示(折线/汇总卡片)
  • 后台支持按日期区间查询、导出 CSV

3.4 配置管理(后台)

  1. 系统配置:应用基础参数
  2. 小程序配置:
  • 虚拟支付开关(关 → 全站无 VIP 功能,后台隐藏 VIP 管理,全部内容仅广告解锁)
  • 广告功能开关(关 → 全站无广告解锁,全部内容仅 VIP 解锁)
  • 两个都关 → 所有内容免费
  • AppID / AppSecret(接入框架 WxApplet 类库)
  1. 广告配置:微信流量主广告位 ID(激励视频等)、各解锁场景所需观看次数默认值
  2. AI 大模型配置:
  • 支持配置多个国内大厂模型(API 地址、Key、模型名)+ OpenAI 兼容通用接口
  • 可设默认模型、启用/禁用
  1. 协议文本:用户协议、关于我们、隐私协议、版权协议、下载协议(均为富文本,小程序端"关于"页展示)
  2. 小程序管理(跳转列表):
  • LOGO 图(1:1)、横图封面、目标小程序 AppID、跳转路径、排序、启用状态
  • 前端以宫格/横滑形式展示,点击跳转其他微信小程序
  • 注:跳转需目标小程序在微信后台配置"关联"或使用 navigateToMiniProgram 合规跳转

3.5 多站点(分站)支持

  • 所有业务表使用框架 [-site-] 占位符建表,自动按 siteid 隔离
  • 主站内容共享给分站(机制建议,待确认):
  • 共享模式:分站内容列表 = 分站自有内容 + 被授权共享的主站内容(引用式,主站更新实时生效)
  • 共享开关:主站可按模块/按内容勾选"共享给分站"
  • 分站可自主新增、编辑、删除自己的内容,不可编辑主站共享内容
  • 分站的解锁配置、VIP、广告配置独立
  • 站点配置使用框架 getSetting()/saveSetting(),按站点隔离

3.6 API 安全

在框架既有机制上强化:

  1. 签名验证(框架已提供):sign = md5(apikey + timestamp),时间戳 5 分钟内有效
  2. AES 加密(新增):敏感参数(用户标识、设备码)与响应中的敏感字段使用 AES-128-ECB/CBC 加密传输,密钥由站点配置下发
  3. 防重放:timestamp + 随机 nonce,nonce 短期内去重
  4. HTTPS 强制、接口频率限制(单用户每分钟请求上限,可配置)
  5. 内容安全:AI 生成内容入库前调用微信 msgSecCheck 内容安全检测(小程序审核硬性要求,新增建议项)

四、数据库表设计(草案)

全部使用 [-site-] 占位符支持分站

表名说明主要字段
contentapp_config[-site-]模块及全局配置key, value(JSON)
contentapp_class[-site-]分类(四模块共用,type 区分)type, pid, title, sort, cover, desc, vip_only, ad_count, status
contentapp_article[-site-]文章class_id, title, cover, content, sort, views, status, addtime
contentapp_sentence[-site-]短句class_id, title, content, sort, views, status, addtime
contentapp_image[-site-]头像/图库图片(type 区分)type, class_id, pic, thumb, sort, views, downloads, status
contentapp_user[-site-]用户openid, device_code, siteid, addtime, lasttime
contentapp_vip_card[-site-]VIP 卡类型配置name, type(day/month/season/year/life/trial), price, ad_count, days, status
contentapp_user_vip[-site-]用户 VIP 记录uid, card_id, starttime, endtime, source(trial/pay), order_id
contentapp_unlock[-site-]解锁记录uid, obj_type, obj_id, mode(ad/vip), expire_time
contentapp_ad_log[-site-]广告观看记录uid, ad_type, obj_type, obj_id, addtime
contentapp_view_log[-site-]浏览记录(后台用)uid, obj_type, obj_id, addtime
contentapp_download_log[-site-]下载记录uid, obj_type, obj_id, addtime
contentapp_collect[-site-]收藏uid, obj_type, obj_id, addtime
contentapp_ai_log[-site-]AI 生成记录model, prompt, result, tokens, addtime
contentapp_stats_daily[-site-]每日统计汇总date, type, metric, value
contentapp_share[-site-]主站共享内容映射siteid, obj_type, obj_id, source_siteid, source_id
contentapp_applet[-site-]小程序跳转管理logo, cover, appid, path, sort, status

(install.php 输出以上建表 SQL;卸载时按框架机制处理)


五、开发阶段划分(SOP)

阶段内容交付物
P1需求确认(本文档批复)+ 数据库设计定稿 + install.phpplugins 骨架可安装
P2后端:四大模块 CRUD、分类、解锁逻辑、用户体系、VIP、广告记录admin 控制器 + api 控制器
P3后台管理前端(未编译 → 编译接入)应用开发代码/contentapp-admin
P4小程序前端(静默登录、四模块、解锁交互、收藏、VIP、广告)应用开发代码/contentapp-miniprogram
P5AI 生成、数据统计图表、多站点共享、协议与小程序跳转功能补齐
P6联调 + 安全加固 + QA 回归验证测试报告

每阶段完成后统一回归验证再进入下一阶段。


六、待确认问题清单(已于 2026-10-25 全部批复,采用建议方案)

#问题确认结果
1应用目录名 / 应用名称contentapp / 内容素材小程序
2解锁判定逻辑(3.1.2):分类权限仅作进入门槛,内容解锁统一按模块配置已确认
3广告解锁后的有效期默认永久,后台可配(永久 / 当日 / 当周)
4VIP 全局通用是,一条 VIP 覆盖四模块
5头像与图库合并为一张图片表(type 区分)合并
6主站共享分站模式引用式实时共享(主站更新实时生效)
7图片压缩/水印自动压缩,不加水印
8小程序前端技术栈(原建议项为空,按约束选定)uni-app(Vue3),源码放 应用开发代码/contentapp-miniprogram/,编译产物接入 plugins(符合"编译后放入 plugins"流程,后续可扩展 H5/其他小程序)
9后台管理前端技术栈(原建议项为空,按约束选定)Vue3 + Element Plus,源码放 应用开发代码/contentapp-admin/,编译产物放 plugins/contentapp/packs/admin/(与小程序端 Vue3 技术栈统一)
10iOS 虚拟支付iOS 端隐藏 VIP 购买入口,仅保留体验卡(看广告)路径
11体验卡看广告解锁次数 N 默认值3 次
12微信内容安全检测 msgSecCheck开启,作为上架合规项
13统计导出格式CSV
14删除分类策略禁止删除非空分类

批复以上问题后即按 P1 开始开发。

相关推荐