# 运行时配置 支付、邮件、聚合登录和代理转发配置存放在数据库 `runtime_configs` 表中。服务不会自动建表,也不会从 `config.json` 导入;请先手动执行 SQL。运行时读取 Redis 缓存,缓存未命中才查 MySQL;后台保存或切换方案会主动删除缓存,因此修改可即时生效。 ```sql 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`: 易支付配置,包含 `url`、`pid`、`key`、`return_url`、`uni_return_url`、`methods`。 - `email`: SMTP 账号数组,按 `priority` 从小到大尝试发送。 - `unilogin`: 聚合登录配置,包含 `url`、`appid`、`appkey` 等。 - `proxyForwardServer`: 代理转发配置,包含 `enabled`、`url`、`timeout`。 示例初始化语句: ```sql 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 ', 'priority', 0 ) ), 1, 1, UNIX_TIMESTAMP(NOW(3)) * 1000, 'init'); ```