fix: template mesage send

This commit is contained in:
engigu
2026-01-28 20:13:29 +08:00
parent 8381a7de87
commit a33a520d3b
+24
View File
@@ -1,6 +1,7 @@
package v2
import (
"encoding/json"
"fmt"
"message-nest/models"
"message-nest/pkg/app"
@@ -21,6 +22,11 @@ type SendMessageByTemplateReq struct {
Recipients []string `json:"recipients" label:"接收者列表"`
}
type TemplatePlaceholder struct {
Key string `json:"key"`
Default string `json:"default"`
}
// DoSendMessageByTemplate 使用模板发送消息
func DoSendMessageByTemplate(c *gin.Context) {
var (
@@ -54,6 +60,24 @@ func DoSendMessageByTemplate(c *gin.Context) {
return
}
// 填充默认占位符
if template.Placeholders != "" {
var placeholderDefs []TemplatePlaceholder
if err := json.Unmarshal([]byte(template.Placeholders), &placeholderDefs); err == nil {
if req.Placeholders == nil {
req.Placeholders = make(map[string]interface{})
}
for _, def := range placeholderDefs {
// 如果请求中没有该占位符,且配置了默认值,则使用默认值
if _, exists := req.Placeholders[def.Key]; !exists && def.Default != "" {
req.Placeholders[def.Key] = def.Default
}
}
} else {
logrus.Errorf("解析模板占位符配置失败: %v", err)
}
}
// 替换占位符
textContent := replacePlaceholders(template.TextTemplate, req.Placeholders)
htmlContent := replacePlaceholders(template.HTMLTemplate, req.Placeholders)