更新记录

1.0.0(2026-09-22) 下载此版本

初次提交


平台兼容性

uni-app(3.8.4)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟

uni-app x(3.8.6)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - - - -

u-cms

uni-admin 内容管理模块。当前内置两类内容管理能力:

  • 内容标签(tag)
  • 小说管理(novel + chapter)

本模块遵循 uni_modules 自包含原则:页面、组件、数据库 schema、云函数全部收在模块目录内,可整体复制到任意 uni-admin 项目复用,不依赖项目根的 uniCloud-aliyun/ 中除基座(opendb-/uni-id-)以外的文件。


目录结构

u-cms/
├── changelog.md
├── components/u-cms/            # 模块入口组件
├── pages/
│   ├── tag/                     # 内容标签 CRUD(list / add / edit)
│   └── novel/                   # 小说 CRUD(list / add / edit)
│       └── chapter/             # 章节 CRUD(list / add / edit),按 book_id 过滤
├── uniCloud/                    # ← 模块自带的云端能力
│   ├── database/                # 集合 schema + 初始化数据 + 索引
│   │   ├── cms-tag.schema.json / cms-tag.init_data.json / cms-tag.index.json
│   │   ├── cms-novel.schema.json / cms-novel.init_data.json
│   │   └── cms-novel-chapter.schema.json / cms-novel-chapter.init_data.json
│   └── cloudfunctions/
│       ├── cms-novel-publish/   # 发布:把小说 + 已发布章节序列化为 JSON 上传云存储
│       └── cms-novel-api/       # 微信同构内部 API(作品 / 章节 / 审核 / 预览)
├── js_sdk/                    # 校验器 + 客户端 SDK(随模块自包含)
├── package.json
└── readme.md

模块内 js_sdk(随模块自包含)

校验器与客户端 SDK 已随本模块自包含,页面以相对路径 ../../js_sdk/... 引用:

  • 校验器:js_sdk/validator/cms-tag.jsjs_sdk/validator/cms-novel.jsjs_sdk/validator/cms-novel-chapter.js
  • 客户端 SDK:js_sdk/cms-novel-publish.js(发布)、js_sdk/cms-novel-api.js(微信同构 API 客户端封装)
  • 菜单种子:项目 uniCloud-aliyun/database/opendb-admin-menus.init_data.json(见下方「菜单注册」——属跨模块 admin 配置,不随模块迁移)

部署步骤

  1. 数据库 schema / 索引 / 初始化数据:在 HBuilderX 中右键 u-cms/uniCloud/database/ → 「上传数据库 schema 及索引」与「上传初始化数据」(也可逐个文件上传)。
  2. 云函数:分别右键 cms-novel-publishcms-novel-api → 「上传部署」。
  3. cms-novel-api 鉴权:写类 action 需 apiKey 一致。配置优先级:uniCloud/cloudfunctions/cms-novel-api/config.json已随模块自带,默认 apiKey: "REPLACE_WITH_YOUR_API_KEY"生产务必替换)> 宿主项目 uni-config-centercms-novel-api 插件配置(可选,集中管理多插件时使用)。设置 requireAuth: false 可关闭写类鉴权。

菜单注册

模块页面要在管理端侧栏可见,需在「菜单管理」手动添加(或重跑「初始化云数据库」覆盖):

名称 URL 父级
内容标签 /uni_modules/u-cms/pages/tag/list 内容管理
小说管理 /uni_modules/u-cms/pages/novel/list 内容管理

首页卡片「小说管理」入口已在宿主项目 pages/index/index.vue 预置。


页面与字段

内容标签 tag

标准 CRUD,列表支持按名称搜索,详情见 pages/tag/

小说 novel / chapter

  • novel 字段title / author / category / cover / intro / status(0 草稿 / 1 连载中 / 2 已完结 / 3 下架) / isVip / wordCount / sort / publishFileId / publishUrl / publishTime / publishChapterCount / publishWordCount
  • chapter 字段book_id / title / index / seq / content / wordCount / isVip / status(0 草稿 / 1 已发布) / audit_status / ban_status
  • 删除小说会级联删除其全部章节(dbCmd.in(ids))。
  • 章节 book_id 等隐藏外键在提交时手动合并进 payload(uni-forms.validate() 不含未渲染的表单项)。

发布链路(草稿在库,发布读 JSON)

设计原则:草稿留在数据库编辑,对外消费端直接读静态 JSON 文件,不查库。

  • 编辑页保存时,若 status ∈ {1 连载中, 2 已完结}(公开态)自动调用 cms-novel-publish 导出 JSON;列表行内「发布」按钮与编辑页「重新发布」按钮可随时手动覆盖。
  • cms-novel-publish 读取小说 + 已发布章节(status=1,按 index 升序),按书分目录上传

    cms/novel/{bookId}/
    novel.json                 ← 书籍元信息 + 章节索引(含每章 file 路径与 fileID)
    chapters/{chapterId}.json  ← 单章正文

    回写小说 publishFileId(= novel.json 的 fileID)/ publishUrl / publishTime / publishChapterCount / publishWordCount

    采用「按书分目录 + 单章单文件」而非「整本书一个 JSON」:长篇小说几百上千章,整本单文件会非常大,每次进书都要拉全量;分章后消费端按需拉取当前章,CDN/浏览器可逐章缓存,改一章也只需重写该章文件。短内容(文章/短剧)才适合单文件。

  • 消费端读取
    1. publishFileIduniCloud.getTempFileURL({ fileList: [fileID] })novel.json 临时直链(或存储桶设为公开读后直接拼直链),fetch 得到书籍元信息与章节索引;
    2. 从章节索引里拿到目标章的 fileID,再 getTempFileURL + fetch 拉取该章正文。

      getTempFileURL 直链会过期;要永久直链就把云存储桶设为公开读。

  • 发布没生效的常见原因:① 云函数未上传部署——右键 cms-novel-publish → 上传部署,并确认与项目关联同一 uniCloud 空间;② HBuilderX 仅「运行」不会自动部署云函数。前端点击发布若报错,弹窗会显示真实原因(含「未部署」提示)。

cms-novel-api(微信同构内部接口)

完整接口清单见 uniCloud/cloudfunctions/cms-novel-api/readme.md

  • 调用:uniCloud.callFunction({ name: 'cms-novel-api', data: { action, apiKey?, ... } })
  • 统一返回:{ code: 0, msg: 'ok', data };失败 code !== 0(附 msg);鉴权失败 code: 401
  • 编辑版 vs 发布版getBook / listBook / listChapterversion='edited'(全量含草稿)或 'published'(仅 status=1 章节,即发布版快照)。
  • 审核生命周期auditBook(audit_status=1) → approveBook(调 publish 生成快照, audit_status=2, publish_version+1) / rejectBook(audit_status=3)。
  • 客户端封装:js_sdk/cms-novel-api.js(已随模块自包含)提供 callNovelApi(action, params, opts)

约定与注意事项

  • 集合统一以 cms- 命名;schema 字段变更后需重新上传 schema。
  • 云函数新增 / 变更后必须重新上传部署,前端改完 HBuilderX 重新运行。
  • 本模块不依赖 uniCloud 公共模块以外的项目文件;如需复用,连同 js_sdk 下对应校验器与 SDK 一起拷贝。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。