Skip to content

系统配置

系统配置模块用于管理动态的键值对配置项,与数据字典类似但更偏向系统级参数。支持分组管理,可通过接口动态修改,无需重启服务。模块位于 src/modules/configuration/,路由位于 src/modules/configuration/config/router.py 和 config_item/router.py。

模块结构 ​

src/modules/configuration/
├── config/      # 配置分组
│   ├── models.py
│   ├── schema.py
│   ├── repository.py
│   ├── service.py
│   └── router.py
└── config_item/ # 配置项(KV)
    ├── models.py
    ├── schema.py
    ├── repository.py
    ├── service.py
    └── router.py

配置模型 ​

配置分组(Config) ​

python
# src/modules/configuration/config/models.py
from sqlalchemy import Column, String, Integer, text

from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config.database import DB_PREFIX


class Config(BaseModel, BaseDB):
    """配置模型类"""
    __tablename__ = DB_PREFIX + "config"
    __table_comment__ = "系统配置表"

    # 配置名称
    name = Column(String(150), nullable=False, index=True, comment="配置名称")
    # 配置编码
    code = Column(String(150), nullable=False, index=True, comment="配置编码")
    # 配置排序
    sort = Column(Integer, default=0, server_default=text('0'), comment="配置排序")
    # 配置备注
    note = Column(String(255), nullable=True, comment="配置备注")

    def __str__(self):
        """返回配置ID作为字符串表示"""
        return "配置{}".format(self.id)

配置项(ConfigItem) ​

python
# src/modules/configuration/config_item/models.py
from sqlalchemy import Column, String, Integer, Text, text

from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config.database import DB_PREFIX


class ConfigItem(BaseModel, BaseDB):
    """配置项模型类"""
    __tablename__ = DB_PREFIX + "config_item"
    __table_comment__ = "配置项表"

    # 配置项名称
    name = Column(String(150), nullable=False, index=True, comment="配置项名称")
    # 配置项编码
    code = Column(String(150), nullable=False, comment="配置项编码")
    # 配置项值
    value = Column(String(1000), nullable=True, comment="配置项值")
    # 配置选项
    options = Column(Text, nullable=True, comment="配置选项")
    # 配置ID
    config_id = Column(Integer, default=0, server_default=text('0'), index=True, comment="配置ID")
    # 配置类型
    type = Column(String(150), nullable=False, comment="配置类型")
    # 配置状态:1-正常 2-停用
    status = Column(Integer, default=1, server_default=text('1'), index=True, comment="配置状态:1-正常 2-停用")
    # 配置项排序
    sort = Column(Integer, default=0, server_default=text('0'), comment="配置项顺序")
    # 配置项备注
    note = Column(String(255), nullable=True, comment="配置项备注")

    def __str__(self):
        """返回配置项ID作为字符串表示"""
        return "配置项{}".format(self.id)

使用场景 ​

系统配置适用于以下场景:

1. 网站基本信息(站点名称、Logo、版权信息)
2. 邮件配置(SMTP 服务器、端口、账号)
3. 短信配置(API Key、模板 ID)
4. 存储配置(OSS Bucket、上传限制)
5. 业务参数(默认密码、分页大小等)

接口说明 ​

获取配置项列表 ​

GET /api/v1/config/item/list?configId=1

获取配置项详情 ​

GET /api/v1/config/item/detail/<id>

新增/编辑配置项 ​

POST /api/v1/config/item/add
PUT /api/v1/config/item/update

与数据字典的区别 ​

特性数据字典系统配置
用途枚举值(下拉选项)系统参数(配置值)
值类型简单值(字符串)可存储较长的配置内容
典型场景状态、性别、类型SMTP配置、站点信息
前端用法el-select 选项配置表单

总结 ​

系统配置模块具备以下特点:

1. KV 结构:配置分组 + 配置项,灵活管理各类参数
2. 动态修改:通过接口修改,无需重启服务
3. 分组管理:按功能模块分组,清晰组织配置项
4. 与字典互补:字典管理枚举值,配置管理系统参数

小蚂蚁云团队 · 提供技术支持