⚙️ 系统配置

以 Key-Value 形式管理所有系统配置项,支持查看、编辑、新增、删除配置。

页面结构

  • 顶部按钮:新增配置
  • 配置卡片列表:每项配置一个卡片,显示 key 名 + value(可复制)
  • 每卡片操作:编辑(内联)/ 删除
  • 新增弹窗:输入 key / value(支持JSON)/ 描述

触发时机详解

1. 页面加载 → GET /api/admin/system-config

触发条件:进入系统配置页面时,一次性加载所有配置项
GET /api/admin/system-config
✅ 页面加载时触发(仅此一次)

响应:

{
  "email_smtp": { "host": "smtp.example.com", "port": 587, ... },
  "email_notification_types": { "user_register": false, ... },
  ...
}

2. 点击「编辑」→ 原地变为 textarea → blur 时触发 PUT

触发条件:点击配置项的"编辑"按钮 → 该项 value 变为 textarea → 输入后离开焦点(onBlur)→ 自动提交 PUT
PUT /api/admin/system-config/:key
✅ onBlur 时自动触发(无需确认按钮)
参数类型必填说明
valuestring|object必填配置值(对象自动 JSON.stringify,字符串原样存储)

响应: {"success": true}

3. 点击「删除」→ PUT value 为空字符串

触发条件:点击配置项的"删除"按钮 → confirm() 确认 → PUT /api/admin/system-config/:key value=""
PUT /api/admin/system-config/:key
✅ 确认后触发,将 value 置为空字符串
参数类型必填说明
valuestring必填空字符串(删除效果)

响应: {"success": true}

4. 点击「新增配置」→ 弹出 Modal → 填写后 PUT

触发条件:点击"新增配置"按钮 → 弹出 Modal → 填写 key + value → 点击"保存"
PUT /api/admin/system-config/:key
✅ 点击"保存"按钮触发(key 不存在则插入,存在则更新)
参数类型必填说明
valuestring|object必填配置值(尝试 JSON.parse,失败则存为字符串)

响应: {"success": true}

5. 点击「测试连接」→ POST /api/admin/system-config/test-smtp-connectivity

触发条件:Email Settings 页面填写 SMTP 信息后点击测试连接按钮
POST /api/admin/system-config/test-smtp-connectivity
✅ 点击测试连接按钮触发(保存前验证连通性)
参数类型必填说明
smtpConfig.hoststringSMTP 主机地址
smtpConfig.portnumber端口(默认 465)
smtpConfig.secureboolean是否启用 SSL(默认 true)
smtpConfig.userstring发信账号
smtpConfig.passstring授权码(不能是 ******** 掩码,必须填真实值)

响应(成功): { success: true, message: "SMTP 服务器连通成功!您可以放心保存了。" }

响应(错误): { message: "连接失败:Connection timeout" }

注意:若密码字段为 ******** 掩码值,接口返回 400 要求填入真实授权码。

6. 前端校验(无需请求)

触发条件:新增 Modal 中 key 为空 → notify() 提示"配置项名称不能为空"(不提交请求)

7. 点击「发送测试邮件」→ POST /api/admin/email-config/test

触发条件:Email Settings 页面配置完成 SMTP 后,点击发送测试邮件按钮
POST /api/admin/email-config/test
✅ 点击发送测试邮件按钮触发(使用已保存的 SMTP 配置)

说明:该接口不需要请求体,直接读取数据库中已保存的 email_smtpadmin_notice_email 配置。

收件人:优先 admin_notice_email,未配置则发给 SMTP 发件人。

响应(成功): { success: true, message: "测试邮件已发送至 admin@example.com" }

响应(错误): { error: "请先在 [系统设置] 中配置发信 SMTP 服务器" }