runtime-config.md 2.3 KB

运行时配置

支付、邮件、聚合登录和代理转发配置存放在数据库 runtime_configs 表中。服务不会自动建表,也不会从 config.json 导入;请先手动执行 SQL。运行时读取 Redis 缓存,缓存未命中才查 MySQL;后台保存或切换方案会主动删除缓存,因此修改可即时生效。

CREATE TABLE runtime_configs (
  config_key VARCHAR(64) NOT NULL,
  config_name VARCHAR(64) NOT NULL,
  config_value JSON NOT NULL,
  enabled TINYINT(1) NOT NULL DEFAULT 1,
  is_default TINYINT(1) NOT NULL DEFAULT 0,
  updated_at BIGINT NOT NULL,
  updated_by VARCHAR(64) NULL,
  PRIMARY KEY (config_key, config_name),
  KEY idx_runtime_configs_active (config_key, enabled, is_default, updated_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

管理接口:

  • GET /Admin/System/RuntimeConfig: 获取全部配置方案。
  • PUT /Admin/System/RuntimeConfig: 新增或更新一个方案。
  • PUT /Admin/System/RuntimeConfig/Select: 切换当前方案。

配置类型:

  • pay: 易支付配置,包含 urlpidkeyreturn_urluni_return_urlmethods
  • email: SMTP 账号数组,按 priority 从小到大尝试发送。
  • unilogin: 聚合登录配置,包含 urlappidappkey 等。
  • proxyForwardServer: 代理转发配置,包含 enabledurltimeout

示例初始化语句:

INSERT INTO runtime_configs
(config_key, config_name, config_value, enabled, is_default, updated_at, updated_by)
VALUES
('pay', 'default', JSON_OBJECT(
  'url', 'https://pay.example.com',
  'pid', '1000',
  'key', 'CHANGE_ME',
  'return_url', 'https://your-site.example/#/store/orderDetail/',
  'uni_return_url', 'https://m.your-site.example/#/pages/order/order-detail?id=',
  'methods', JSON_ARRAY(
    JSON_OBJECT('type', 'alipay', 'name', '支付宝'),
    JSON_OBJECT('type', 'wxpay', 'name', '微信支付')
  )
), 1, 1, UNIX_TIMESTAMP(NOW(3)) * 1000, 'init');

INSERT INTO runtime_configs
(config_key, config_name, config_value, enabled, is_default, updated_at, updated_by)
VALUES
('email', 'default', JSON_ARRAY(
  JSON_OBJECT(
    'host', 'smtp.example.com',
    'port', 465,
    'user', 'service@example.com',
    'password', 'CHANGE_ME',
    'from', 'RunForge <service@example.com>',
    'priority', 0
  )
), 1, 1, UNIX_TIMESTAMP(NOW(3)) * 1000, 'init');