# 6.14 文件模板管理 :::tip 概述 文件模板管理用于维护系统中使用的文件模板,支持按编码查询模板。继承 BaseLogic(系统共享,不隔离)。 ::: ## 模块特点 | 特性 | 说明 | |------|------| | 基类 | BaseLogic(系统共享,不隔离) | | 文件字段 | file_path(模板文件),保存到 file_template 目录 | | 唯一校验 | code 全局唯一 | | 特殊接口 | getTemplateByCode 按编码查询模板 | ## API 接口 | 方法 | 路径 | 权限码 | 说明 | |------|------|--------|------| | GET | `/api/file/template/page` | sys:fileTemplate:page | 分页列表 | | GET | `/api/file/template/detail/:id` | sys:fileTemplate:detail | 详情 | | POST | `/api/file/template/add` | sys:fileTemplate:add | 新增 | | PUT | `/api/file/template/update` | sys:fileTemplate:update | 修改 | | DELETE | `/api/file/template/delete/:id` | sys:fileTemplate:delete | 删除 | | DELETE | `/api/file/template/batchDelete` | sys:fileTemplate:batchDelete | 批量删除 | | GET | `/api/file/template/getTemplateByCode/:code` | - | 按编码查询模板 | ## 核心代码 ```php // app/logic/FileTemplateLogic.php class FileTemplateLogic extends BaseLogic { /** * 关联的模型类 * * @var string */ protected string $modelClass = FileTemplate::class; /** * 需要自动处理的文件上传字段 * * @var array */ protected array $fileFields = ['file_path']; /** * 文件保存的子目录 * * @var string */ protected string $fileSaveDir = 'file_template'; /** * LIKE 模糊匹配字段 * * @var array */ protected array $pageLikeFields = ['name', 'code']; /** * 默认排序规则 * * @var array */ protected array $pageOrderBy = ['field' => 'sort', 'type' => 'asc']; /** * 唯一性校验字段 * * @var array */ protected array $uniqueFields = ['code']; // 按编码查询模板 public function getByCode(string $code): ?array { $result = FileTemplate::where('code', $code)->find(); return $result ? $result->toArray() : null; } } ``` ### Controller 代码 ```php // app/controller/FileTemplateController.php class FileTemplateController extends BaseController { protected FileTemplateLogic $logic; protected function initialize(): void { $this->logic = new FileTemplateLogic(); } #[Log('文件模板-查询分页记录', Log::TYPE_QUERY)] #[Permission('sys:fileTemplate:page', '模板分页')] public function page(): Json { return parent::_index($this->logic); } #[Log('文件模板-新增记录', Log::TYPE_ADD, '新增模板:{name}')] #[Permission('sys:fileTemplate:add', '添加模板')] public function add(): Json { return parent::_add($this->logic, $this->getJsonBody()); } #[Log('文件模板-修改记录', Log::TYPE_UPDATE, '修改模板ID:{id}')] #[Permission('sys:fileTemplate:update', '修改模板')] public function update(): Json { $data = $this->getJsonBody(); $id = $data['id'] ?? 0; if (empty($id)) return $this->fail('缺少id参数'); return parent::_edit($this->logic, $id, $data); } #[Log('文件模板-删除记录', Log::TYPE_DELETE, '删除模板ID:{id}')] #[Permission('sys:fileTemplate:delete', '删除模板')] public function delete(int $id): Json { return parent::_remove($this->logic, $id); } // 按编码查询(无权限注解,已登录即可访问) #[Log('文件模板-按编码查询', Log::TYPE_QUERY)] public function getTemplateByCode(string $code): Json { $result = $this->logic->getByCode($code); if (!$result) { return $this->fail('模板不存在', 404); } return $this->success($result); } } ``` :::tip 按编码查询 `getTemplateByCode` 接口未配置权限注解,通常用于前端按编码读取模板配置的场景。 :::