Skip to content

5.12 系统配置管理 ​

概述

系统配置采用两级结构:config(配置分组)+ config_item(配置项)。面向"网站名称、Logo、开关类参数"等运行时可改的业务配置,与 manifest/config.yaml(工程配置)职责分离。

两级结构 ​

text
goframe_config       配置分组:name / code(uk_code 全局唯一)/ sort
goframe_config_item  配置项:config_id(所属分组)/ value / options / type / status / sort

示例:
  config:      { name: "网站配置", code: "web" }
  config_item: { key: "siteName", value: "EasyGoAdmin", type: "input" }
               { key: "siteLogo", value: "/upload/...", type: "image" }

职责边界(与 config.yaml 的区分) ​

config 模块(数据库)config.yaml(文件)
面向业务运营(站名/Logo/开关)工程运行(数据库/Redis/JWT/限流)
修改方式管理页面在线改改文件/环境变量 + 重启
消费方前端站点、业务接口后端启动与中间件
例网站名称、备案号database.default.link、jwt.secret

判据:改了要不要重启?要重启的是 yaml;不重启即时生效的是 config 模块。

接口清单 ​

text
config(/api/config)       七件套 sys:config:*
  GET  /api/config/web/index   sys:configWeb:data   获取网站配置
  POST /api/config/web/save    sys:configWeb:save   保存网站配置
config_item(/api/config/item) 七件套 sys:configitem:*

注意权限码特例:网站配置是 sys:configWeb:data|save(非 sys:config:web*)。

网站配置流(前端 setting 页面) ​

text
前端加载:GET /api/config/web/index
  → 后端按分组 code="web" 聚合 config_item
  → 返回 {siteName, siteLogo, ...}(type 决定前端渲染控件)

保存:POST /api/config/web/save
  → 批量更新 config_item.value
  → 其他实例下次读取即生效(在线配置,无缓存层)

配置项类型(type) ​

type前端控件示例
input文本框站点名称
image图片选择站点 Logo
select下拉(options 提供选项)开关类配置
textarea多行文本备案信息/统计代码

options 列存 JSON 选项数组,配合 select 类型使用。

开发新配置项 ​

text
1. 字典/配置管理页面:确认 config 分组存在(如 web),不存在先建分组
2. config_item 新增行:key / value / type / options / sort
3. 前端读取处消费(GET /api/config/web/index 的返回字段)
4. 后端需要消费时(少用):查询 config_item 按 key 取值

运维注意 ​

  • config 模块是平台级(无租户隔离)——租户差异化配置不在设计内
  • code 全局唯一(uk_code),分组语义清晰避免冲突
  • 在线保存即时生效,无需重启;无缓存层(读频率低,直接查库)
  • 与 app.demo 等工程开关分离——工程开关不放 config 模块(重启才能改语义的不适宜在线化)

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