应用管理模块
概述
应用(Application)是低代码平台的顶层容器,用于组织和隔离表单、工作流、页面、菜单等资源。每个应用拥有独立的编码、状态、版本和团队成员。
模块路径:backend-fastapi/core/application/
API 前缀:/api/core/applications
数据模型
python
class Application(BaseModel):
__tablename__ = "core_application"
name: str # 应用名称
code: str # 应用编码(唯一,用于 URL 路由)
description: str # 应用描述
icon: str # 应用图标
cover: str # 应用封面图 URL
app_type: str # 应用类型
status: str # 应用状态
home_path: str # 应用首页路径
version: int # 版本号
config: dict # 应用配置(JSON)
owner_id: str # 所有者 ID(逻辑外键)
team_ids: list # 团队成员 ID 列表
system_menu_ids: list # 开发模式下显示的系统菜单 ID 列表应用类型 (app_type)
| 值 | 说明 |
|---|---|
form | 表单应用 |
workflow | 流程应用 |
dashboard | 数据应用 |
screen | 大屏应用 |
mixed | 混合应用(默认) |
ai | AI 应用 |
应用状态 (status)
| 值 | 说明 |
|---|---|
draft | 开发中(默认) |
published | 已发布 |
disabled | 已停用 |
服务层
ApplicationService 继承 BaseService,提供以下方法:
| 方法 | 说明 |
|---|---|
get_by_code(db, code) | 根据编码获取应用 |
get_list_by_owner(db, owner_id, page, page_size) | 获取指定用户拥有的应用 |
get_list_by_status(db, status, page, page_size) | 按状态筛选应用 |
get_list_by_type(db, app_type, page, page_size) | 按类型筛选应用 |
search(db, keyword, app_type, status, owner_id, page, page_size) | 综合搜索(名称/描述/编码) |
publish(db, record_id) | 发布应用(状态改为 published,版本号 +1) |
disable(db, record_id) | 停用应用 |
get_stats(db) | 获取统计信息(总数、按状态、按类型) |
API 接口
基础 CRUD
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | / | 创建应用 |
| GET | / | 获取应用列表(分页 + 搜索) |
| GET | /{record_id} | 获取应用详情 |
| GET | /code/{code} | 根据编码获取应用 |
| PUT | /{record_id} | 更新应用 |
| DELETE | /{record_id} | 删除应用 |
状态管理
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /{record_id}/publish | 发布应用 |
| POST | /{record_id}/disable | 停用应用 |
辅助接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /stats | 获取应用统计 |
| GET | /check/unique | 检查字段唯一性(code/name) |
请求/响应示例
创建应用
请求:
json
POST /api/core/applications
{
"name": "客户管理系统",
"code": "crm",
"description": "客户关系管理应用",
"icon": "users",
"app_type": "mixed"
}响应:
json
{
"id": "abc123",
"name": "客户管理系统",
"code": "crm",
"description": "客户关系管理应用",
"icon": "users",
"app_type": "mixed",
"status": "draft",
"version": 1,
"sys_create_datetime": "2024-01-01T00:00:00"
}搜索应用
请求:
GET /api/core/applications?keyword=客户&appType=mixed&status=published&page=1&pageSize=10获取统计
响应:
json
{
"message": "获取成功",
"data": {
"total": 15,
"by_status": {
"draft": 5,
"published": 8,
"disabled": 2
},
"by_type": {
"form": 3,
"workflow": 4,
"mixed": 8
}
}
}与其他模块的关系
- 菜单模块:菜单通过
application_id关联到应用 - 表单模块:表单通过
application_id关联到应用 - 工作流模块:工作流通过
application_id关联到应用 - 页面模块:页面通过
application_id关联到应用
更新应用时会自动清除该应用相关的菜单缓存。