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

路径参数:

参数类型必填说明
keystring必填配置项名称

请求体:

参数类型必填说明
valuestring/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

请求体:

参数类型必填说明
smtpobject选填SMTP 配置对象
notificationTypesobject选填通知类型开关

响应: {"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.hoststringSMTP 主机
smtpConfig.portnumber端口(默认 465)
smtpConfig.secureboolean是否 SSL(默认 true)
smtpConfig.userstring发信账号
smtpConfig.passstring授权码(不能是 ******** 掩码)

响应(成功){ 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