System Config 系统配置
共 4 个接口 · 路由前缀 /api/admin
基础信息
- Base URL:
/api/admin - 认证方式: JWT Bearer Token
数据库表
system_config— 系统配置表(key-value 存储)audit_logs— 审计日志(email-config 更新时记录)
接口列表
1. 获取所有系统配置
GET /api/admin/system-config
说明: 从 system_config 表读取所有配置项,value 自动 JSON.parse
响应:
{
"key1": "value1",
"key2": {"nested": "value"},
...
}
2. 更新单个系统配置
PUT /api/admin/system-config/:key
路径参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | string | 必填 | 配置项名称 |
请求体:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| value | string/object | 必填 | 配置值(对象会被 JSON.stringify 存储) |
响应: {"success": true}
3. 获取邮箱配置
GET /api/admin/email-config
响应:
{
"smtp": {
"host": "smtp.example.com",
"port": 587,
"secure": false,
"user": "user@example.com",
"pass": "********",
"from": "noreply@example.com"
},
"notificationTypes": {
"user_register": false,
"user_login": false,
"bill_share": false,
"payment_success": false,
"payment_failed": false,
"ai_api_error": false
}
}
⚠️ 安全注意: GET /admin/email-config 返回明文 SMTP 密码(见问题 A02)。生产环境应屏蔽此接口或加密存储。
4. 更新邮箱配置
PUT /api/admin/email-config
请求体:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| smtp | object | 选填 | SMTP 配置对象 |
| notificationTypes | object | 选填 | 通知类型开关 |
响应: {"success": true}
副作用: 操作记录至 audit_logs,action 为 update_email_config
5. 发送测试邮件
POST /api/admin/email-config/test
说明:使用当前已保存的 SMTP 配置发送一封测试邮件,验证连通性。
收件人:优先使用 admin_notice_email,未配置则发送给 SMTP 发件人。
响应(成功):
{ success: true, message: "测试邮件已发送至 admin@example.com" }
响应(错误):
{ error: "请先在 [系统设置] 中配置发信 SMTP 服务器" }
{ error: "测试出错: Connection timeout" }
6. SMTP 连通性测试
POST /api/admin/system-config/test-smtp-connectivity
说明:在保存 SMTP 配置前,先验证服务器连通性(不需要保存配置即可测试)。
请求体:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 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 要求填入真实授权码。
GET/system-config
PUT/system-config/:key
POST/system-config/test-smtp-connectivity
GET/email-config
PUT/email-config
POST/email-config/test