支付、邮件、聚合登录和代理转发配置存放在数据库 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: 易支付配置,包含 url、pid、key、return_url、uni_return_url、methods。email: SMTP 账号数组,按 priority 从小到大尝试发送。unilogin: 聚合登录配置,包含 url、appid、appkey 等。proxyForwardServer: 代理转发配置,包含 enabled、url、timeout。示例初始化语句:
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');