⚙️ 系统配置
以 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 时自动触发(无需确认按钮)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
value | string|object | 必填 | 配置值(对象自动 JSON.stringify,字符串原样存储) |
响应: {"success": true}
3. 点击「删除」→ PUT value 为空字符串
触发条件:点击配置项的"删除"按钮 → confirm() 确认 → PUT /api/admin/system-config/:key value=""
PUT
/api/admin/system-config/:key
✅ 确认后触发,将 value 置为空字符串
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
value | string | 必填 | 空字符串(删除效果) |
响应: {"success": true}
4. 点击「新增配置」→ 弹出 Modal → 填写后 PUT
触发条件:点击"新增配置"按钮 → 弹出 Modal → 填写 key + value → 点击"保存"
PUT
/api/admin/system-config/:key
✅ 点击"保存"按钮触发(key 不存在则插入,存在则更新)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
value | string|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.host | string | 是 | SMTP 主机地址 |
smtpConfig.port | number | 否 | 端口(默认 465) |
smtpConfig.secure | boolean | 否 | 是否启用 SSL(默认 true) |
smtpConfig.user | string | 是 | 发信账号 |
smtpConfig.pass | string | 是 | 授权码(不能是 ******** 掩码,必须填真实值) |
响应(成功): { 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_smtp 和 admin_notice_email 配置。
收件人:优先 admin_notice_email,未配置则发给 SMTP 发件人。
响应(成功): { success: true, message: "测试邮件已发送至 admin@example.com" }
响应(错误): { error: "请先在 [系统设置] 中配置发信 SMTP 服务器" }