fix: template mesage send
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user