Skip to content

6.14 文件模板管理 ​

概述

文件模板管理用于维护系统中使用的文件模板,支持按编码查询模板。继承 BaseLogic(系统共享,不隔离)。

模块特点 ​

特性说明
基类BaseLogic(系统共享,不隔离)
文件字段file_path(模板文件),保存到 file_template 目录
唯一校验code 全局唯一
特殊接口getTemplateByCode 按编码查询模板

API 接口 ​

方法路径权限码说明
GET/api/file/template/pagesys:fileTemplate:page分页列表
GET/api/file/template/detail/:idsys:fileTemplate:detail详情
POST/api/file/template/addsys:fileTemplate:add新增
PUT/api/file/template/updatesys:fileTemplate:update修改
DELETE/api/file/template/delete/:idsys:fileTemplate:delete删除
DELETE/api/file/template/batchDeletesys: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);
    }
}

按编码查询

getTemplateByCode 接口未配置权限注解,通常用于前端按编码读取模板配置的场景。

小蚂蚁云团队 · 提供技术支持