scaffold-mobile-page 移动页面设计器模块
模块概述
scaffold-mobile-page 是 Scaffold v2 平台的移动端页面设计器模块,提供移动应用的全生命周期管理能力,包括应用创建、页面设计、Schema 管理、发布上线、版本管理和数据源解析。
模块分为设计态和运行态两部分:
- 设计态:通过后台管理界面创建应用、设计页面 Schema、发布版本
- 运行态:移动端(uni-app)通过 API 获取已发布的页面 Schema 进行动态渲染
功能列表
应用管理
- 创建、编辑、删除移动应用
- 应用发布与下线
- 版本管理:查询版本列表、版本详情、版本回滚
页面管理
- 创建、编辑、删除页面
- 页面 Schema 设计与保存
- 页面排序管理
- 页面详情查询
运行态渲染
- 按应用编码获取渲染数据
- 按页面 ID 获取页面渲染数据
- 按版本 ID 获取版本数据
- 数据源解析(动态 API 调用)
状态字段规范:
status字段(应用)遵循布尔语义:1= 启用,0= 禁用
核心组件
实体
| 实体 | 表名 | 说明 |
|---|---|---|
| MpApp | mp_app | 移动应用 |
| MpAppPage | mp_app_page | 应用页面 |
| MpAppVersion | mp_app_version | 应用版本 |
服务层
| 服务 | 说明 |
|---|---|
| MpAppService | 应用 CRUD、发布、下线、版本管理、回滚、按编码查询渲染数据 |
| MpAppPageService | 页面 CRUD、Schema 保存、排序管理、详情查询 |
| MpDataSourceService | 数据源解析,支持动态 API 调用和参数绑定 |
配置类
| 类 | 说明 |
|---|---|
| MobilePageAutoConfiguration | 自动配置类,启用条件 scaffold.mobile-page.enabled=true |
| MobilePageProperties | 配置属性 |
配置参数
配置前缀:scaffold.mobile-page
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| enabled | boolean | false | 是否启用模块(默认关闭,需手动开启) |
| maxPagesPerApp | int | 20 | 每个应用最大页面数 |
| maxComponentsPerPage | int | 100 | 每个页面最大组件数 |
注意:与 scaffold-lowcode 模块中的 MpPage 功能不同,scaffold-mobile-page 是独立的应用级页面设计器,面向完整移动应用的页面编排。
API 接口列表
应用管理(/v1/mobile-page/app)
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /page | 分页查询移动应用 |
| GET | /detail/{id} | 查询应用详情 |
| POST | /create | 创建移动应用 |
| POST | /update | 更新移动应用 |
| POST | /delete/{id} | 删除移动应用 |
| POST | /publish | 发布应用 |
| POST | /offline/{id} | 下线应用 |
| GET | /versions/{appId} | 查询应用版本列表 |
| GET | /version/{versionId} | 查询版本详情 |
| POST | /rollback | 回滚到指定版本 |
页面管理(/v1/mobile-page/app)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /pages/{appId} | 查询应用页面列表 |
| GET | /page/detail/{pageId} | 查询页面详情 |
| POST | /page/create | 创建页面 |
| POST | /page/update | 更新页面 |
| POST | /page/delete/{pageId} | 删除页面 |
| POST | /page/save-schema | 保存页面 Schema |
| POST | /page/sort | 批量更新页面排序 |
运行态渲染(/v1/mobile-page/render)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /app/{appCode} | 按应用编码获取渲染数据 |
| GET | /page/{pageId} | 按页面 ID 获取页面渲染数据 |
| GET | /version/{versionId} | 按版本 ID 获取版本数据 |
| POST | /resolve-data-source | 解析数据源 |
数据源解析
POST /v1/mobile-page/render/resolve-data-source 接受 DataSourceResolveDTO 和可选的 pageParams,由 MpDataSourceService 解析数据源配置并返回动态数据。
使用示例
1. 创建移动应用并发布
POST /v1/mobile-page/app/create -- 创建应用
POST /v1/mobile-page/app/page/create -- 创建页面
POST /v1/mobile-page/app/page/save-schema -- 设计页面 Schema
POST /v1/mobile-page/app/page/sort -- 调整页面顺序
POST /v1/mobile-page/app/publish -- 发布应用
2. 移动端渲染页面
GET /v1/mobile-page/render/app/{appCode} -- 获取应用所有页面
GET /v1/mobile-page/render/page/{pageId} -- 获取单个页面 Schema
POST /v1/mobile-page/render/resolve-data-source -- 解析页面中的数据源
3. 版本管理
GET /v1/mobile-page/app/versions/{appId} -- 查看版本列表
GET /v1/mobile-page/app/version/{versionId} -- 查看版本详情
POST /v1/mobile-page/app/rollback -- 回滚到指定版本
回滚请求体:{ "appId": 123, "version": 2 }
注意事项
- 模块默认关闭(
enabled=false),需在application.yml中设置scaffold.mobile-page.enabled=true启用 - 每个应用最多 20 个页面、每个页面最多 100 个组件,可通过配置参数调整
- 应用发布时会生成版本快照,版本号自增
- 运行态渲染接口不校验认证,适合移动端直接调用
MobilePageAutoConfiguration会自动注册一个RestTemplateBean,供数据源解析使用- 本模块与 scaffold-lowcode 中的 MpPage 是两套独立的页面设计器:scaffold-lowcode 的 MpPage 面向单个页面设计,scaffold-mobile-page 面向完整移动应用的页面编排
- 状态枚举:
status字段(应用)遵循布尔语义:1= 启用,0= 禁用- 移动页面
MpPage.status(未发布/已发布)不遵循布尔语义规范