3.4 KiB
3.4 KiB
5.13 系统参数管理
:::tip 概述
ParamService 管理系统级参数(存于 laravel_param 表),如默认密码、限流阈值等,采用两级缓存(请求级 + 持久缓存),大幅减少数据库查询。
:::
缓存架构
请求级缓存(静态变量) ← 同一请求内不重复查库
│ 未命中
▼
持久缓存(cache(),1小时) ← 跨请求复用(Redis)
│ 未命中
▼
数据库查询(param 表) ← 查询后写入两级缓存
核心方法
// app/Services/ParamService.php
// 获取参数值(通用)
$value = ParamService::get('DEFAULT_PASSWORD', '123456');
// 获取字符串参数
$value = ParamService::getString('SITE_NAME', 'My CMS');
// 获取整数参数
$value = ParamService::getInt('MAX_LOGIN_ATTEMPTS', 5);
// 获取布尔参数
$value = ParamService::getBool('ENABLE_SMS', false);
// 清除指定参数缓存($code 为空时清空全部参数缓存)
ParamService::clearCache('DEFAULT_PASSWORD');
ParamService::clearCache();
方法签名
| 方法 | 说明 | 返回值 |
|---|---|---|
get($code, $default) |
获取参数值 | mixed |
getString($code, $default) |
获取字符串 | string |
getInt($code, $default) |
获取整数 | int |
getBool($code, $default) |
获取布尔 | bool |
clearCache($code = '') |
清除指定/全部缓存 | void |
消费方示例:PasswordService::getDefaultPasswordPlain() 即通过 ParamService::get('DEFAULT_PASSWORD', '123456') 读取默认密码(明文方法,切勿写入日志或返回前端)。
查询条件
仅查询满足以下条件的参数:
status = 1(启用)is_delete = 0(未删除)
API 接口
| 方法 | 路径 | 权限码 | 说明 |
|---|---|---|---|
| GET | /api/param/page |
sys:param:page | 分页列表 |
| GET | /api/param/list |
sys:param:list | 全量列表 |
| GET | /api/param/detail/{id} |
sys:param:detail | 详情 |
| POST | /api/param/add |
sys:param:add | 新增 |
| PUT | /api/param/update |
sys:param:update | 修改 |
| DELETE | /api/param/delete/{id} |
sys:param:delete | 删除 |
| DELETE | /api/param/batchDelete |
sys:param:batchDelete | 批量删除 |
与配置管理的区别
| 维度 | 参数管理(Param) | 配置管理(Config) |
|---|---|---|
| 数据结构 | 独立的键值对 | 分组 + 配置项 |
| 适用场景 | 系统级参数(默认密码、限流阈值) | 网站配置(名称、Logo、SMTP) |
| 读取方式 | ParamService::get('code') |
ConfigItem 模型查询或 /api/config/web/index |
| 服务封装 | ParamService(静态方法 + 缓存) |
ConfigService |
常用系统参数
| 编码 | 说明 | 默认值 |
|---|---|---|
DEFAULT_PASSWORD |
默认密码(重置密码时使用) | 123456 |
缓存管理
修改参数后缓存不会自动失效(参数无 Observer),需要手动刷新:
# 修改参数后在代码中调用
ParamService::clearCache('DEFAULT_PASSWORD');
# 或重启服务 / 清除应用缓存兜底
php artisan cache:clear
:::warning 修改参数后的生效方式
参数写入数据库后,旧值仍可能存在缓存中(TTL 1 小时)。通过后台「参数管理」修改时建议同步调用 clearCache();直接改库时用 php artisan cache:clear 兜底。
:::