签入版本

This commit is contained in:
2026-10-08 17:50:29 +08:00
parent 809750b47e
commit e213a9b31d
444 changed files with 39366 additions and 37533 deletions
+37 -47
View File
@@ -1,23 +1,23 @@
# 6.12 参数管理
:::tip 概述
参数管理维护系统级配置参数,如默认密码、系统名称等。继承 BaseLogic(系统共享,不隔离),通过 ParamService 读取。
参数管理维护系统级配置参数(存于 `laravel_param` 表),如默认密码、限流阈值等。`ParamService`(横切服务)提供带两级缓存的读取方法,业务代码不直接查表。
:::
## 模块特点
| 特性 | 说明 |
|------|------|
| 基类 | BaseLogic(系统共享,不隔离) |
| 唯一校验 | code 全局唯一 |
| 缓存 | ParamService 两级缓存(请求级 + 持久缓存,1小时过期) |
| 模糊搜索 | name、code |
| 精确匹配 | type、status |
| 基类 | `BaseService`(系统共享,不隔离) |
| 唯一校验 | `code` 全局唯一 |
| 缓存 | 读取走 `ParamService` 两级缓存(请求级 + 持久缓存) |
| 模糊搜索 | `name`、`code` |
| 精确匹配 | `type`、`status` |
## 数据库表结构
```sql
CREATE TABLE `think_param` (
CREATE TABLE `laravel_param` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(100) NOT NULL COMMENT '参数名称',
`code` varchar(100) NOT NULL COMMENT '参数编码',
@@ -41,60 +41,44 @@ CREATE TABLE `think_param` (
|------|------|--------|------|
| GET | `/api/param/page` | sys:param:page | 分页列表 |
| GET | `/api/param/list` | sys:param:list | 全量列表 |
| GET | `/api/param/detail/:id` | sys:param:detail | 详情 |
| 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/delete/{id}` | sys:param:delete | 删除 |
| DELETE | `/api/param/batchDelete` | sys:param:batchDelete | 批量删除 |
## 核心代码
## Service 配置(摘自 `ParamController` 构造函数中的匿名类,来自项目实际代码)
本模块**不注入独立 Service 类**,而是在控制器构造函数中以匿名类组合 `BaseService` 与三个 Trait(声明式配置替代独立 Service):
```php
// app/logic/ParamLogic.php
class ParamLogic extends BaseLogic
// app/Http/Controllers/Api/ParamController.php(构造函数内匿名类,节选)
$this->paramService = new class extends BaseService
{
/**
* 关联的模型类
*
* @var string
*/
use HasCrudOperations, HasQueryScopes, HasUniqueCheck;
protected string $modelClass = Param::class;
/**
* LIKE 模糊匹配字段
*
* @var array
*/
// 分页时模糊匹配的字段(name / code 模糊匹配)
protected array $pageLikeFields = ['name', 'code'];
/**
* 精确匹配字段
*
* @var array
*/
protected array $pageEqFields = ['type', 'status'];
// 分页时精确匹配的字段(status 精确匹配)
protected array $pageEqFields = ['status'];
/**
* 默认排序规则
*
* @var array
*/
protected array $pageOrderBy = ['field' => 'sort', 'type' => 'asc'];
/**
* 唯一性校验字段
*
* @var array
*/
// 唯一性校验:code 全局唯一
protected array $uniqueFields = ['code'];
}
};
```
:::tip 管理与读取分离
- **管理端**(本模块):走标准 CRUD 接口维护参数;
- **业务读取**:统一走横切服务 `ParamService::get()` 等静态方法(带缓存),不要在业务代码里直接查 `laravel_param` 表。
:::
## 使用 ParamService 读取参数
```php
use app\service\ParamService;
use App\Services\ParamService;
// 获取字符串参数
$value = ParamService::getString('DEFAULT_PASSWORD', '123456');
@@ -105,11 +89,17 @@ $value = ParamService::getInt('MAX_LOGIN_ATTEMPTS', 5);
// 获取布尔参数
$value = ParamService::getBool('ENABLE_SMS', false);
// 获取默认密码(从系统参数读取,默认 '123456')
$password = ParamService::getDefaultPassword();
// 获取默认密码(从系统参数读取,默认 '123456',PasswordService 即由此读取)
$password = ParamService::get('DEFAULT_PASSWORD', '123456');
```
详细方法与缓存说明见 [5.13 系统参数管理](/zh/core/param.html)。
:::warning 修改参数后的缓存
参数无 Observer 自动失效,修改后需 `ParamService::clearCache($code)` 或 `php artisan cache:clear` 兜底,否则旧值在 TTL 内仍被读取。
:::
:::tip 与配置管理的区别
- **参数管理(Param)**:独立的键值对,适合系统级参数(默认密码、限流阈值)
- **配置管理(Config)**:分组 + 配置项,适合网站配置(名称、Logo、SMTP)
:::
- **配置管理(Config)**:分组 + 配置项,适合网站配置(名称、Logo、SMTP),见 [5.12 系统配置管理](/zh/core/config.html)
:::