\App\ModelsSysTemplate

模板引擎模板(系统通用模板)

职责:一表多类型——type 区分渠道(邮件/短信等),category 区分用途分类(认证/通知/营销等), 二者正交——type 回答"用什么渠道发",category 回答"给谁/什么场景用"; 场景模板(如注册验证码邮件),(type, code) 组合唯一。 subject 仅邮件模板使用;content 按类型承载(邮件 HTML / 短信纯文本), 均支持 {{变量}} 占位符,发送侧按 type + code 取模板渲染。

Summary

Methods
Properties
Constants
timestampCasts()
versions()
$timestamps
$id
$type
$category
$code
$name
$engine
$subject
$content
$vars
$sort
$status
$remark
$draft_subject
$draft_content
$version
$published_at
$is_system
$meta
$create_time
$update_time
TYPE_EMAIL
TYPE_SMS
CATEGORY_AUTH
CATEGORY_NOTICE
CATEGORY_MARKETING
CATEGORY_OTHER
CATEGORIES
ENGINE_HANDLEBARS
ENGINE_SIMPLE
ENGINES
serializeDate()
casts()
$table
$hidden
$fillable
N/A
No private methods found
No private properties found
N/A

Constants

TYPE_EMAIL

TYPE_EMAIL = 'email'

模板类型:邮件

TYPE_SMS

TYPE_SMS = 'sms'

模板类型:短信

CATEGORY_AUTH

CATEGORY_AUTH = 'auth'

模板分类:认证类(注册验证/找回密码等安全认证场景)

CATEGORY_NOTICE

CATEGORY_NOTICE = 'notice'

模板分类:通知类(系统通知/状态变更提醒)

CATEGORY_MARKETING

CATEGORY_MARKETING = 'marketing'

模板分类:营销类(活动/推广)

CATEGORY_OTHER

CATEGORY_OTHER = 'other'

模板分类:其他

CATEGORIES

CATEGORIES = [self::CATEGORY_AUTH, self::CATEGORY_NOTICE, self::CATEGORY_MARKETING, self::CATEGORY_OTHER]

全部模板分类(前后端校验与前端下拉共用同一枚举)

ENGINE_HANDLEBARS

ENGINE_HANDLEBARS = 'handlebars'

模板引擎:Handlebars 标准语法(当前唯一开放引擎)

ENGINE_SIMPLE

ENGINE_SIMPLE = 'simple'

模板引擎:旧正则替换(仅存量历史兼容,不开放新建)

ENGINES

ENGINES = [self::ENGINE_HANDLEBARS, self::ENGINE_SIMPLE]

全部模板引擎

Properties

$timestamps

$timestamps

$id

$id : int

主键ID

Type

int

$type

$type : string

模板类型:email 邮件 / sms 短信

Type

string

$category

$category : string

模板分类:auth 认证类 / notice 通知类 / marketing 营销类 / other 其他

Type

string

$code

$code : string

模板编码,同类型下场景唯一

Type

string

$name

$name : string

模板名称

Type

string

$engine

$engine : string

模板语法引擎:handlebars=Handlebars 标准语法 / simple=旧正则替换,历史兼容

Type

string

$subject

$subject : string|null

主题,仅邮件模板使用

Type

string|null

$content

$content : string

正文:邮件 HTML / 短信纯文本

Type

string

$vars

$vars : array

可用变量清单 [{name,desc,sample}]

Type

array

$sort

$sort : int

排序号

Type

int

$status

$status : int

状态:1 启用、0 停用

Type

int

$remark

$remark : string

备注说明

Type

string

$draft_subject

$draft_subject : string|null

草稿主题,编辑不惊动线上

Type

string|null

$draft_content

$draft_content : string|null

草稿正文

Type

string|null

$version

$version : int

当前线上版本号,发布自增

Type

int

$published_at

$published_at : string|null

最后发布时间

Type

string|null

$is_system

$is_system : int

内置模板锁定:1 内置,防误删防改;0 普通

Type

int

$meta

$meta : array

类型专属扩展位

Type

array

$create_time

$create_time : string

创建时间

Type

string

$update_time

$update_time : string|null

更新时间

┌────────────────── 分区导航(按此顺序阅读)──────────────────┐ 分区 1 · 常量 本地枚举(启停状态 STATUS_* 已单源 HasStatusConstants) 分区 2 · 表名与属性 $table / $fillable / casts 分区 3 · 关联关系 versions └────────────────────────────────────────────────────────────┘

Type

string|null

$table

$table

$hidden

$hidden

草稿位序列化隐藏(预留字段,当前不承载草稿态——publish 即完整提交并复位): 不随模板列表/详情下发,避免编辑态残留干扰线上内容消费。

$fillable

$fillable

Methods

timestampCasts()

timestampCasts() : array<string,string>

全库统一的时间列 cast 段(单源:约 22 个模型 casts() 内重复的两行)。 使用方模型 casts() 内 `return array_merge(self::timestampCasts(), [...])`。

Returns

array

versions()

versions() : \Illuminate\Database\Eloquent\Relations\HasMany

版本历史(每次发布写入一条快照,最新在前)

Returns

\Illuminate\Database\Eloquent\Relations\HasMany —

serializeDate()

serializeDate(\DateTimeInterface  $date) : string

所有日期属性统一按 "年-月-日 时:分:秒" 序列化。

Parameters

\DateTimeInterface $date

Returns

string —

casts()

casts() : array

Returns

array —