feat: add message template
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"message-nest/pkg/util"
|
||||
)
|
||||
|
||||
// GenerateTemplateUniqueID 生成模板唯一ID
|
||||
func GenerateTemplateUniqueID() string {
|
||||
newUUID := util.GenerateUniqueID()
|
||||
return fmt.Sprintf("TP%s", newUUID)
|
||||
}
|
||||
|
||||
// MessageTemplate 消息模板
|
||||
type MessageTemplate struct {
|
||||
UUIDModel
|
||||
|
||||
Name string `json:"name" gorm:"type:varchar(200);not null;index" binding:"required"`
|
||||
Description string `json:"description" gorm:"type:text"`
|
||||
|
||||
// 模板内容(带占位符)
|
||||
TextTemplate string `json:"text_template" gorm:"type:text"`
|
||||
HTMLTemplate string `json:"html_template" gorm:"type:text"`
|
||||
MarkdownTemplate string `json:"markdown_template" gorm:"type:text"`
|
||||
|
||||
// 占位符定义(JSON格式)
|
||||
Placeholders string `json:"placeholders" gorm:"type:text"`
|
||||
|
||||
// @提醒配置
|
||||
AtMobiles string `json:"at_mobiles" gorm:"type:text;comment:'@手机号列表,逗号分隔'"`
|
||||
AtUserIds string `json:"at_user_ids" gorm:"type:text;comment:'@用户ID列表,逗号分隔'"`
|
||||
IsAtAll bool `json:"is_at_all" gorm:"default:false;comment:'是否@所有人'"`
|
||||
|
||||
// 状态:enabled/disabled
|
||||
Status string `json:"status" gorm:"type:varchar(20);default:'enabled';index"`
|
||||
}
|
||||
|
||||
// Add 添加消息模板
|
||||
func (t *MessageTemplate) Add() error {
|
||||
if err := db.Create(&t).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Update 更新消息模板
|
||||
func (t *MessageTemplate) Update() error {
|
||||
if err := db.Model(&MessageTemplate{}).Where("id = ?", t.ID).Updates(t).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Delete 删除消息模板
|
||||
func (t *MessageTemplate) Delete() error {
|
||||
if err := db.Where("id = ?", t.ID).Delete(&MessageTemplate{}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// MessageTemplateResult 消息模板查询结果
|
||||
type MessageTemplateResult struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description"`
|
||||
TextTemplate string `json:"text_template"`
|
||||
HTMLTemplate string `json:"html_template"`
|
||||
MarkdownTemplate string `json:"markdown_template"`
|
||||
Placeholders string `json:"placeholders"`
|
||||
AtMobiles string `json:"at_mobiles"`
|
||||
AtUserIds string `json:"at_user_ids"`
|
||||
IsAtAll bool `json:"is_at_all"`
|
||||
Status string `json:"status"`
|
||||
CreatedBy string `json:"created_by"`
|
||||
ModifiedBy string `json:"modified_by"`
|
||||
CreatedOn util.Time `json:"created_on"`
|
||||
ModifiedOn util.Time `json:"modified_on"`
|
||||
}
|
||||
|
||||
// GetMessageTemplates 获取消息模板列表
|
||||
func GetMessageTemplates(pageNum int, pageSize int, text string, maps map[string]interface{}) ([]MessageTemplateResult, error) {
|
||||
var datas []MessageTemplateResult
|
||||
templateT := GetSchema(MessageTemplate{})
|
||||
|
||||
query := db.Table(templateT)
|
||||
query = query.Where(maps)
|
||||
|
||||
if text != "" {
|
||||
query = query.Where("name LIKE ? OR description LIKE ?",
|
||||
fmt.Sprintf("%%%s%%", text),
|
||||
fmt.Sprintf("%%%s%%", text))
|
||||
}
|
||||
|
||||
query = query.Order("created_on DESC")
|
||||
|
||||
if pageSize > 0 || pageNum > 0 {
|
||||
query = query.Offset(pageNum).Limit(pageSize)
|
||||
}
|
||||
|
||||
query.Scan(&datas)
|
||||
return datas, nil
|
||||
}
|
||||
|
||||
// GetMessageTemplatesTotal 获取消息模板总数
|
||||
func GetMessageTemplatesTotal(text string, maps map[string]interface{}) (int64, error) {
|
||||
var total int64
|
||||
templateT := GetSchema(MessageTemplate{})
|
||||
|
||||
query := db.Table(templateT)
|
||||
query = query.Where(maps)
|
||||
|
||||
if text != "" {
|
||||
query = query.Where("name LIKE ? OR description LIKE ?",
|
||||
fmt.Sprintf("%%%s%%", text),
|
||||
fmt.Sprintf("%%%s%%", text))
|
||||
}
|
||||
|
||||
query.Count(&total)
|
||||
return total, nil
|
||||
}
|
||||
|
||||
// GetMessageTemplateByID 根据ID获取消息模板
|
||||
func GetMessageTemplateByID(id string) (*MessageTemplateResult, error) {
|
||||
var data MessageTemplateResult
|
||||
templateT := GetSchema(MessageTemplate{})
|
||||
|
||||
err := db.Table(templateT).Where("id = ?", id).First(&data).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &data, nil
|
||||
}
|
||||
|
||||
// ExistMessageTemplateByID 检查模板是否存在
|
||||
func ExistMessageTemplateByID(id string) (bool, error) {
|
||||
var template MessageTemplate
|
||||
err := db.Select("id").Where("id = ?", id).First(&template).Error
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
if template.ID != "" {
|
||||
return true, nil
|
||||
}
|
||||
|
||||
return false, nil
|
||||
}
|
||||
Reference in New Issue
Block a user