chore: email template优化

This commit is contained in:
xiaojunnuo
2025-12-14 23:19:32 +08:00
parent a6c0d2c6f1
commit de544ec725
9 changed files with 64 additions and 67 deletions
@@ -1,5 +1,4 @@
import { AddonInput, BaseAddon } from "@certd/lib-server";
import { get } from "lodash-es";
import { BuildContentReq, EmailContent, ITemplateProvider } from "../api.js";
export class BaseEmailTemplateProvider extends BaseAddon implements ITemplateProvider<EmailContent> {
@@ -9,10 +8,10 @@ export class BaseEmailTemplateProvider extends BaseAddon implements ITemplatePro
name: "a-alert",
props: {
type: "info",
message: "在标题和内容模版中,通过${param}引用参数,例如: 感谢注册${siteTitle},您的注册验证码为:${code}",
message: "在标题和内容模版中,通过${name}引用参数,例如: 感谢注册,您的注册验证码为:${code}",
}
},
order: 1,
order: -9,
col: { span: 24 },
})
useIntro = "";
@@ -29,7 +28,7 @@ export class BaseEmailTemplateProvider extends BaseAddon implements ITemplatePro
]
}
},
order: 1,
order: 9,
col: { span: 24 },
})
formatType = "";
@@ -80,13 +79,20 @@ export class BaseEmailTemplateProvider extends BaseAddon implements ITemplatePro
throw new Error("请实现 buildDefaultContent 方法")
}
compile(templateString: string) {
return function (data: any): string {
return templateString.replace(/\${(.*?)}/g, (match, key) => {
const value = get(data, key, '');
return String(value);
});
};
// compile(templateString: string) {
// return function (data: any): string {
// return templateString.replace(/\${(.*?)}/g, (match, key) => {
// const value = get(data, key?.trim(), '');
// return String(value);
// });
// };
// }
compile(templateString:string) {
return new Function('data', ` with(data || {}) {
return \`${templateString}\`;
}
`);
}
}
@@ -6,7 +6,7 @@ import { BaseEmailTemplateProvider } from "./plugin-base.js";
addonType: "emailTemplate",
name: 'common',
title: '通用邮件模版',
desc: '通用邮件模版',
desc: '使用通用邮件标题和内容,内容外部可以自定义html进行美化',
icon: "simple-icons:email:blue",
showTest: false,
})
@@ -16,12 +16,11 @@ export class CommonEmailTemplateProvider extends BaseEmailTemplateProvider imple
component: {
name: "ParamsShow",
params:[
{labele:"标题",value:"title"},
{labele:"内容",value:"content"},
{labele:"URL",value:"url"}
{label:"标题",value:"title"},
{label:"内容",value:"content"},
{label:"URL",value:"url"}
]
},
order: 5,
col: { span: 24 },
})
paramIntro = "";
@@ -30,7 +29,7 @@ export class CommonEmailTemplateProvider extends BaseEmailTemplateProvider imple
async buildDefaultContent(req:BuildContentReq) {
const defaultTemplate = new CommonEmailTemplateProvider()
defaultTemplate.titleTemplate = "${title}"
defaultTemplate.contentTemplate = "${content} \n\n 查看详情:${url}"
defaultTemplate.contentTemplate = "${content} \n\n 查看详情${url}"
defaultTemplate.formatType = "text"
return await defaultTemplate.buildContent(req)
}
@@ -6,7 +6,7 @@ import { BaseEmailTemplateProvider } from "./plugin-base.js";
addonType: "emailTemplate",
name: 'forgotPassword',
title: '忘记密码邮件模版',
desc: '忘记密码邮件模版',
desc: '您正在重置密码,您的验证码为xxxx,请勿泄露',
icon: "simple-icons:email:blue",
showTest: false,
})
@@ -16,10 +16,9 @@ export class ForgotPasswordEmailTemplateProvider extends BaseEmailTemplateProvid
component: {
name: "ParamsShow",
params:[
{labele:"验证码",value:"code"}
{label:"验证码",value:"code"}
]
},
order: 5,
col: { span: 24 },
})
paramIntro = "";
@@ -6,7 +6,7 @@ import { BaseEmailTemplateProvider } from "./plugin-base.js";
addonType: "emailTemplate",
name: 'pipelineResult',
title: '流水线执行结果邮件模版',
desc: '流水线执行结果邮件模版',
desc: '执行失败,xxxx自动化【流水线id】;运行ID:xxx,错误信息:xxxx',
icon: "simple-icons:email:blue",
showTest: false,
})
@@ -16,15 +16,14 @@ export class PipelineResultEmailTemplateProvider extends BaseEmailTemplateProvid
component: {
name: "ParamsShow",
params:[
{labele:"运行结果",value:"pipelineResult"},
{labele:"流水线标题",value:"pipelineTitle"},
{labele:"流水线ID",value:"pipelineId"},
{labele:"运行Id",value:"historyId"},
{labele:"错误信息",value:"errors"},
{labele:"URL",value:"url"},
{label:"运行结果",value:"pipelineResult"},
{label:"流水线标题",value:"pipelineTitle"},
{label:"流水线ID",value:"pipelineId"},
{label:"运行Id",value:"historyId"},
{label:"错误信息",value:"errors"},
{label:"URL",value:"url"},
]
},
order: 5,
col: { span: 24 },
})
paramIntro = "";
@@ -6,7 +6,7 @@ import { BaseEmailTemplateProvider } from "./plugin-base.js";
addonType: "emailTemplate",
name: 'registerCode',
title: '注册验证码邮件模版',
desc: '注册验证码邮件模版',
desc: '您的注册验证码为:xxxx,请勿泄露',
icon: "simple-icons:email:blue",
showTest: false,
})
@@ -16,10 +16,9 @@ export class RegisterCodeEmailTemplateProvider extends BaseEmailTemplateProvider
component: {
name: "ParamsShow",
params:[
{labele:"验证码",value:"code"}
{label:"验证码",value:"code"}
]
},
order: 5,
col: { span: 24 },
})
paramIntro = "";