import{_ as i,o as a,c as h,a2 as t}from"./chunks/framework.BbmSSMjL.js";const E=JSON.parse('{"title":"6.12 参数管理","description":"","frontmatter":{},"headers":[],"relativePath":"zh/modules/param.md","filePath":"zh/modules/param.md"}'),k={name:"zh/modules/param.md"};function n(l,s,p,e,r,d){return a(),h("div",null,[...s[0]||(s[0]=[t(`
概述
参数管理维护系统级配置参数(存于 laravel_param 表),如默认密码、限流阈值等。ParamService(横切服务)提供带两级缓存的读取方法,业务代码不直接查表。
| 特性 | 说明 |
|---|---|
| 基类 | BaseService(系统共享,不隔离) |
| 唯一校验 | code 全局唯一 |
| 缓存 | 读取走 ParamService 两级缓存(请求级 + 持久缓存) |
| 模糊搜索 | name、code |
| 精确匹配 | type、status |
CREATE TABLE \`laravel_param\` (
\`id\` int NOT NULL AUTO_INCREMENT COMMENT '主键ID',
\`name\` varchar(100) NOT NULL COMMENT '参数名称',
\`code\` varchar(100) NOT NULL COMMENT '参数编码',
\`value\` varchar(255) NOT NULL COMMENT '参数值',
\`type\` int NOT NULL COMMENT '参数类型:0-系统 1-业务',
\`status\` int NOT NULL COMMENT '参数状态:1-正常 2-禁用',
\`sort\` int NOT NULL COMMENT '参数排序',
\`note\` varchar(255) DEFAULT NULL COMMENT '参数备注',
\`create_user\` varchar(50) DEFAULT NULL COMMENT '创建人',
\`create_time\` datetime DEFAULT (now()) COMMENT '创建时间',
\`update_user\` varchar(50) DEFAULT NULL COMMENT '更新人',
\`update_time\` datetime DEFAULT (now()) COMMENT '更新时间',
\`is_delete\` int DEFAULT 0 COMMENT '删除标识:0-正常 1-已删除',
PRIMARY KEY (\`id\`)
) COMMENT = '系统参数表';| 方法 | 路径 | 权限码 | 说明 |
|---|---|---|---|
| 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 | 批量删除 |
ParamController 构造函数中的匿名类,来自项目实际代码) 本模块不注入独立 Service 类,而是在控制器构造函数中以匿名类组合 BaseService 与三个 Trait(声明式配置替代独立 Service):
// app/Http/Controllers/Api/ParamController.php(构造函数内匿名类,节选)
$this->paramService = new class extends BaseService
{
use HasCrudOperations, HasQueryScopes, HasUniqueCheck;
protected string $modelClass = Param::class;
// 分页时模糊匹配的字段(name / code 模糊匹配)
protected array $pageLikeFields = ['name', 'code'];
// 分页时精确匹配的字段(status 精确匹配)
protected array $pageEqFields = ['status'];
// 唯一性校验:code 全局唯一
protected array $uniqueFields = ['code'];
};管理与读取分离
ParamService::get() 等静态方法(带缓存),不要在业务代码里直接查 laravel_param 表。use App\\Services\\ParamService;
// 获取字符串参数
$value = ParamService::getString('DEFAULT_PASSWORD', '123456');
// 获取整数参数
$value = ParamService::getInt('MAX_LOGIN_ATTEMPTS', 5);
// 获取布尔参数
$value = ParamService::getBool('ENABLE_SMS', false);
// 获取默认密码(从系统参数读取,默认 '123456',PasswordService 即由此读取)
$password = ParamService::get('DEFAULT_PASSWORD', '123456');详细方法与缓存说明见 5.13 系统参数管理。
修改参数后的缓存
参数无 Observer 自动失效,修改后需 ParamService::clearCache($code) 或 php artisan cache:clear 兜底,否则旧值在 TTL 内仍被读取。
与配置管理的区别