Files
rxthinkcmf-wiki/RXThinkCMF_Laravel13_AntdVue/zh/modules/param.md
T
2026-10-08 17:50:29 +08:00

4.1 KiB
Raw Blame History

6.12 参数管理

:::tip 概述 参数管理维护系统级配置参数(存于 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 = '系统参数表';

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 批量删除

Service 配置(摘自 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'];
};

:::tip 管理与读取分离

  • 管理端(本模块):走标准 CRUD 接口维护参数;
  • 业务读取:统一走横切服务 ParamService::get() 等静态方法(带缓存),不要在业务代码里直接查 laravel_param 表。 :::

使用 ParamService 读取参数

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 系统参数管理。

:::warning 修改参数后的缓存 参数无 Observer 自动失效,修改后需 ParamService::clearCache($code) 或 php artisan cache:clear 兜底,否则旧值在 TTL 内仍被读取。 :::

:::tip 与配置管理的区别

  • 参数管理(Param):独立的键值对,适合系统级参数(默认密码、限流阈值)
  • 配置管理(Config):分组 + 配置项,适合网站配置(名称、Logo、SMTP),见 5.12 系统配置管理 :::