5.12 系统配置管理
:::tip 概述
系统配置管理用于动态配置参数,支持分组管理。与参数管理的区别:配置管理支持键值对的分组管理(如网站配置、邮件配置),参数管理是独立的参数实体(如单个开关、阈值)。
:::
模块特点
| 特性 |
说明 |
| 基类 |
BaseLogic(系统共享,不隔离) |
| 关联 |
与 ConfigItem 一对多(通过 config_id) |
| 用途 |
网站名称、Logo、版权信息等动态配置 |
| 缓存 |
DictService 两级缓存(请求级 + Redis),减少数据库查询 |
数据库表结构
主表 think_config(配置组)
| 字段 |
类型 |
说明 |
| id |
int |
主键,自增 |
| name |
varchar(150) |
配置组名称(如「网站配置」) |
| code |
varchar(150) |
配置组编码(如 website_config) |
| sort |
int |
排序(升序) |
| note |
varchar(255) |
备注说明 |
| create_user |
varchar(50) |
创建人(BaseModel 自动写入) |
| create_time |
datetime |
创建时间(BaseModel 自动写入) |
| update_user |
varchar(50) |
更新人(BaseModel 自动写入) |
| update_time |
datetime |
更新时间(BaseModel 自动写入) |
| is_delete |
int |
软删除标记(0=正常,1=已删除) |
子表 think_config_item(配置项)
| 字段 |
类型 |
说明 |
| id |
int |
主键,自增 |
| config_id |
int |
所属配置组 ID(关联 think_config.id) |
| name |
varchar(150) |
配置项名称(如「网站名称」) |
| code |
varchar(150) |
配置项编码(如 site_name) |
| value |
varchar(1000) |
配置值 |
| options |
text |
配置选项(JSON 格式,用于 select/radio 等类型) |
| type |
varchar(150) |
值类型(text / textarea / number / switch / image / file / select) |
| status |
int |
状态(1=正常,2=停用) |
| sort |
int |
排序(升序) |
| note |
varchar(255) |
配置项备注 |
| create_user |
varchar(50) |
创建人(BaseModel 自动写入) |
| create_time |
datetime |
创建时间(BaseModel 自动写入) |
| update_user |
varchar(50) |
更新人(BaseModel 自动写入) |
| update_time |
datetime |
更新时间(BaseModel 自动写入) |
| is_delete |
int |
软删除标记(0=正常,1=已删除) |
API 接口
配置组
| 方法 |
路径 |
权限码 |
说明 |
| GET |
/api/config/page |
sys:config:page |
分页列表 |
| GET |
/api/config/list |
sys:config:list |
全量列表 |
| GET |
/api/config/detail/:id |
sys:config:detail |
详情 |
| POST |
/api/config/add |
sys:config:add |
新增 |
| PUT |
/api/config/update |
sys:config:update |
修改 |
| DELETE |
/api/config/delete/:id |
sys:config:delete |
删除 |
网站配置(快捷接口)
| 方法 |
路径 |
权限码 |
说明 |
| GET |
/api/config/web/index |
sys:config:web |
获取网站配置(按组返回所有配置项) |
| POST |
/api/config/web/save |
sys:config:web |
保存网站配置(批量更新配置项值) |
配置项
| 方法 |
路径 |
权限码 |
说明 |
| GET |
/api/config/item/page |
sys:config:item:page |
分页列表 |
| GET |
/api/config/item/list |
sys:config:item:list |
全量列表 |
| GET |
/api/config/item/detail/:id |
sys:config:item:detail |
详情 |
| POST |
/api/config/item/add |
sys:config:item:add |
新增 |
| PUT |
/api/config/item/update |
sys:config:item:update |
修改 |
| DELETE |
/api/config/item/delete/:id |
sys:config:item:delete |
删除 |
使用场景
| 场景 |
配置组 |
配置项示例 |
| 网站基本信息 |
网站配置 |
网站名称、Logo、版权信息、ICP备案号 |
| 邮件配置 |
邮件配置 |
SMTP服务器、端口、用户名、密码、发件人 |
| 短信配置 |
短信配置 |
API Key、模板ID、签名 |
| 存储配置 |
存储配置 |
存储类型(本地/OSS)、AccessKey、Bucket |
| 支付配置 |
支付配置 |
商户号、密钥、回调地址 |
| 其他 |
自定义分组 |
任何需要后台动态配置的参数 |
代码示例
后端获取配置值
项目中没有 ConfigService,配置值通过 ConfigItem 模型直接查询:
前端获取配置值
网站配置保存接口
与参数管理的区别
| 维度 |
配置管理(Config) |
参数管理(Param) |
| 数据结构 |
分组 + 配置项(一对多) |
独立参数实体 |
| 适用场景 |
关联性强的配置(如网站配置包含多个字段) |
独立的开关、阈值 |
| 管理界面 |
按组展示,表单式编辑 |
列表式管理 |
| 获取方式 |
ConfigItem 模型查询或 /api/config/web/index 接口 |
ParamService::getValue(code) |
| 缓存策略 |
两级缓存(请求级 + Redis) |
两级缓存(请求级 + Redis) |
数据库操作示例
相关文档