Files
djangoadmin-wiki/DjangoAdmin_Flask_AntdVue/zh/volume4/business/param.md
T
2026-09-12 23:12:15 +08:00

115 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
:::tip 参数管理
参数管理模块用于管理系统配置和业务配置,每个参数包含名称、编码、值、类型、排序、状态等属性。本模块是典型的「BaseService 简单模块」,通过声明差异点即可获得完整 CRUD 能力。
:::
## 模块结构
```
src/modules/param/
├── models.py # 参数模型
├── schema.py # 表单验证(WTForms)
├── repository.py # 数据访问层
├── service.py # 业务逻辑层(继承 BaseService)
└── router.py # 路由控制器
```
## 参数服务
```python
# src/modules/param/service.py
from src.common.base_service import BaseService
from src.modules.param.schema import ParamForm, ParamStatusForm
from src.modules.param.repository import ParamRepository
class ParamService(BaseService):
"""
参数服务类
继承 BaseService 获得标准 CRUD 能力。
"""
repository = ParamRepository
form = ParamForm
status_form = ParamStatusForm
model_name = "参数"
# ============================================================
# 模块级代理函数:保持 router 调用兼容
# ============================================================
get_param_page = ParamService.get_page
get_param_detail = ParamService.get_detail
get_info = ParamService.get_info
add_param = ParamService.add
update_param = ParamService.update
delete_params = ParamService.remove
update_param_status = ParamService.update_status
```
:::tip 简单模块模式
参数模块是典型的简单 CRUD 模块,只需声明 `repository` / `form` / `model_name` 即可获得完整能力。唯一性校验在 Schema 的 `validate_` 方法中实现,分页查询在 Repository 的 `page()` 方法中定义。
:::
## 分页查询
Repository 的 `page()` 方法定义分页查询逻辑:
```python
# src/modules/param/repository.py
class ParamRepository(BaseRepository):
model = Param
@classmethod
def page(cls, params: dict):
"""参数分页查询"""
return cls.find_page(
page=int(params.get('pageNo', 1)),
page_size=int(params.get('pageSize', PAGE_SIZE)),
filters={'type': params.get('type'), 'status': params.get('status')},
like_filters={'name': params.get('name'), 'code': params.get('code')},
order_by='sort',
)
@classmethod
def list_enabled(cls, params=None):
"""查询启用的参数列表"""
params = params or {}
return cls.find_list(
filters={'status': 1},
like_filters={'name': params.get('name')},
order_by='sort',
)
```
## 枚举显示名映射
通过 `serialize_maps` 声明枚举字段与字典编码的映射关系,分页和详情接口自动补充 `{field}Text` 字段:
```python
class ParamService(BaseService):
serialize_maps = {
'type': 'param_type', # 参数类型 → 数据字典
'status': 'param_status' # 参数状态 → 数据字典
}
```
查询结果自动包含 `typeText` 和 `statusText` 字段,前端直接使用。
## API 接口
| 方法 | 路径 | 权限节点 | 说明 |
|:---|:---|:---|:---|
| GET | `/api/v1/param/page` | `sys:param:page` | 分页查询(支持 name/code 模糊、type/status 精确) |
| GET | `/api/v1/param/detail/<id>` | `sys:param:detail` | 详情查询 |
| GET | `/api/v1/param/list` | `sys:param:list` | 参数列表(无分页) |
| POST | `/api/v1/param/add` | `sys:param:add` | 新增参数 |
| PUT | `/api/v1/param/update` | `sys:param:update` | 编辑参数 |
| DELETE | `/api/v1/param/delete/<id>` | `sys:param:delete` | 删除参数 |
| DELETE | `/api/v1/param/batchDelete` | `sys:param:batchDelete` | 批量删除 |
| PUT | `/api/v1/param/status` | `sys:param:status` | 设置状态 |
## 总结
参数管理模块是典型的简单 CRUD 模块,继承 BaseService 声明 `repository` / `form` / `model_name` 即可获得完整能力。分页查询在 Repository 的 `page()` 方法中通过 `filters` / `like_filters` / `order_by` 定义,唯一性校验在 Schema 的 `validate_` 方法中实现。