\App\Services\AdminTemplateEngineService

模板引擎服务

职责:通用模板表——type 区分邮件/短信等类型,(type, code) 组合唯一, subject/content 支持 {{变量}} 占位符,渲染逻辑在 TemplateRenderer(各消费端共用)。 生命周期:发布 = 提交完整内容(subject/content/vars)+ 版本号 +1 + 版本快照; 回滚 = 历史快照发布为新版本(历史永不失联);is_system 内置模板锁定删除。

┌────────────────── 分区导航(按此顺序阅读)──────────────────┐ 分区 1 · 查询(读) list / sceneTemplates / scenes / versions / exportData 分区 2 · 模板写操作 create / update / publish / rollback / delete / importData 分区 3 · 内部辅助 validateImportRow └────────────────────────────────────────────────────────────┘

Summary

Methods
Properties
Constants
list()
sceneTemplates()
scenes()
versions()
exportData()
create()
update()
publish()
rollback()
destroy()
importData()
No public properties found
No constants found
No protected methods found
No protected properties found
N/A
validateImportRow()
No private properties found
N/A

Methods

list()

list() : array

模板列表(量级小,一次拉全;走 sys:template:list 缓存,CRUD 自动失效)。

Returns

array —

sceneTemplates()

sceneTemplates() : \Illuminate\Support\Collection

启用模板清单(场景绑定下拉数据源,分层归位)。 返回 Collection——调用方继续用 ->where('type', ...) 过滤(勿改 toArray)。 基于 sys:template:list 缓存数据过滤,避免二次全表扫描。

Returns

\Illuminate\Support\Collection —

scenes()

scenes() : array

发送场景清单(自控制器下沉):MailScene 注册表 + 各场景当前绑定模板 (mail.scene.* 配置值,trim 归一)+ 该渠道可选启用模板。

Returns

array —

versions()

versions(int  $id) : array

版本历史(倒序;发布人左连用户名展示;条数上限读配置)。

Parameters

int $id

Returns

array —

exportData()

exportData() : array

导出全部模板(环境迁移/模板分享):完整字段(含 meta/is_system 标记),不含版本历史 (新环境从 v1 起,历史随源环境保留)。

Returns

array —

create()

create(array  $data) : \App\Models\SysTemplate

创建模板(仅 CRUD 落库;线上内容变更走 publish)

Parameters

array $data

Returns

\App\Models\SysTemplate —

update()

update(int  $id, array  $data) : \App\Models\SysTemplate

更新模板元信息(CRUD 落库;线上内容变更走 publish)

Parameters

int $id
array $data

Returns

\App\Models\SysTemplate —

publish()

publish(int  $id, array  $data) : \App\Models\SysTemplate

发布(版本工作流核心):提交完整内容 → 线上更新 + 版本号 +1 + 发布时间 + 版本快照。 发布是唯一改线上内容的入口(编辑态在前端工作区,不惊动线上)。 合并语义:未传的字段保持原值(防误调用清空;前端始终全量提交)。

Parameters

int $id
array $data

Returns

\App\Models\SysTemplate —

rollback()

rollback(int  $id, int  $version) : \App\Models\SysTemplate

回滚:历史快照发布为新版本(线上 = 快照内容,版本号 +1,新快照注明回滚来源)——历史永不失联。

Parameters

int $id
int $version

Returns

\App\Models\SysTemplate —

destroy()

destroy(int  $id) : void

删除模板(内置模板 is_system 锁定不可删)

Parameters

int $id

importData()

importData(array  $rows) : array

导入模板(JSON 数组):逐条校验(类型/分类白名单、code 必填、邮件必填主题), code 已存在跳过(不覆盖线上),is_system 强制置 0(内置标记随 Seeder 分发,不随导入扩散)。

Parameters

array $rows

Returns

array —

validateImportRow()

validateImportRow(array  $row) : ?string

导入行校验:返回错误原因(null = 通过)

Parameters

array $row

Returns

?string —