Files
easygoadmin-wiki/EasyGoAdmin_Beego_EleVue/zh/modules/filetemplate.md
T
2026-10-20 21:19:44 +08:00

4.0 KiB

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 - 按编码查询模板

核心代码

// 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 代码

// 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 接口未配置权限注解,通常用于前端按编码读取模板配置的场景。 :::