提交 d49535f2 authored 作者: mooncake's avatar mooncake

update

上级 bbf6663d
...@@ -29,6 +29,14 @@ type BasePageReply struct { ...@@ -29,6 +29,14 @@ type BasePageReply struct {
PageTotal int64 `json:"pageTotal" comment:"pageTotal" encomment:"pageTotal" form:"pageTotal" example:"99"` // 总页数 PageTotal int64 `json:"pageTotal" comment:"pageTotal" encomment:"pageTotal" form:"pageTotal" example:"99"` // 总页数
} }
type BasePageReply2 struct {
BaseListReply2
Total int64 `json:"total" comment:"total" encomment:"total" form:"total" example:"2000"` // 总行数
PageSize int64 `json:"pageSize" comment:"pageSize" encomment:"pageSize" form:"pageSize" example:"1"` // 页大小
PageIndex int64 `json:"pageIndex" comment:"pageIndex" encomment:"pageIndex" form:"pageIndex" example:"1"` // 当前页码
PageTotal int64 `json:"pageTotal" comment:"pageTotal" encomment:"pageTotal" form:"pageTotal" example:"99"` // 总页数
}
type BaseListReply struct { type BaseListReply struct {
List []any `json:"list" comment:"list" encomment:"list" form:"list"` // List []any `json:"list" comment:"list" encomment:"list" form:"list"` //
} }
......
package config package config
import "fmt"
var ( var (
Cfg = &Config{} Cfg = &Config{}
) )
...@@ -28,6 +30,13 @@ type Receiver struct { ...@@ -28,6 +30,13 @@ type Receiver struct {
DisplayName string DisplayName string
} }
func (x *Receiver) ToEmailAddr() string {
if x.DisplayName == "" {
return x.Email
}
return fmt.Sprintf("%s<%s>", x.DisplayName, x.Email)
}
type Attachment struct { type Attachment struct {
Filename string // 显示的文件名 Filename string // 显示的文件名
FilePath string // 文件路径(二选一) FilePath string // 文件路径(二选一)
......
...@@ -123,89 +123,16 @@ type oEmail struct { ...@@ -123,89 +123,16 @@ type oEmail struct {
var OEmail = &oEmail{} var OEmail = &oEmail{}
// type Params struct {
//func (x *oEmail) SendAsync(ctx context.Context, tplCode string, params map[string]string, cfg *Config) (err error) { TplCode string
// et, err := service.EmailTplService.GetByCode(ctx, tplCode, nil) TplParams map[string]string
// if err != nil { Attachments []*config.Attachment
// return err InlineImages map[string]string
// } Receivers []config.Receiver
// if et == nil { }
// return xerror.NewC(ecode.ErrEmailTplNotFound.ToXerror())
// }
// rs, err := service.EmailTplReceiverService.GetSliceByTplID(ctx, et.GetID(), nil)
// if err != nil {
// return err
// }
// if len(rs) == 0 {
// return xerror.NewC(ecode.ErrEmailTplReceiverNotFound.ToXerror())
// }
//
// subjectTpl, err := template.New(fmt.Sprintf("%s_%s_subject", tplCode, et.GetID())).Parse(et.Subject)
// if err != nil {
// return xerror.Wrap(err, "parse subjectTpl")
// }
// var subjectBuf bytes.Buffer
// if err = subjectTpl.Execute(&subjectBuf, params); err != nil {
// return xerror.Wrap(err, "render subjectTpl")
// }
// contentTpl, err := template.New(fmt.Sprintf("%s_%s_content", tplCode, et.GetID())).Parse(et.Tpl)
// if err != nil {
// return xerror.Wrap(err, "parse contentTpl")
// }
// var contentBuf bytes.Buffer
// if err = contentTpl.Execute(&contentBuf, params); err != nil {
// return xerror.Wrap(err, "render contentTpl")
// }
//
// from := fmt.Sprintf("%s<%s>", cfg.Name, cfg.Email)
// email := models.Email{}
// email.ID = xsfUtils.EmailID(ctx)
// email.TplID = et.ID
// email.From = from
// email.Subject = subjectBuf.String()
// email.Content = contentBuf.String()
//
// receivers := make([]*models.EmailReceiver, 0, len(rs))
// for _, r := range rs {
// receivers = append(receivers, &models.EmailReceiver{
// EmailID: email.ID,
// Receiver: r.Receiver,
// })
// }
//
// emailSend := models.EmailSend{}
// emailSend.ID = xsfUtils.EmailSendID(ctx)
// emailSend.EmailID = email.ID
// emailSend.State = enums.EmailSend_State_Wait
//
// emailSendLog := models.EmailSendLog{}
// emailSendLog.ID = xsfUtils.EmailSendLogID(ctx)
// emailSendLog.EmailSendID = emailSend.ID
// emailSendLog.State = emailSend.State
//
// if err := dao.EmailDao.Transaction(func(tx *gorm.DB) error {
// if err = dao.EmailDao.CreateTx(ctx, tx, &email); err != nil {
// return err
// }
// if err = dao.EmailReceiverDao.CreateSliceTx(ctx, tx, receivers); err != nil {
// return err
// }
// if err = dao.EmailSendDao.CreateTx(ctx, tx, &emailSend); err != nil {
// return err
// }
// if err = dao.EmailSendLogDao.CreateTx(ctx, tx, &emailSendLog); err != nil {
// return err
// }
// return nil
// }); err != nil {
// return xerror.New(err.Error())
// }
//
// return nil
//}
func (x *oEmail) SendTLS(ctx context.Context, tplCode string, params map[string]string, attachments []*config.Attachment, inlineImages map[string]string) (err error) { func (x *oEmail) SendTLS(ctx context.Context, in *Params) (err error) {
et, err := service.EmailTplService.GetByCode(ctx, tplCode, nil) et, err := service.EmailTplService.GetByCode(ctx, in.TplCode, nil)
if err != nil { if err != nil {
return err return err
} }
...@@ -216,24 +143,21 @@ func (x *oEmail) SendTLS(ctx context.Context, tplCode string, params map[string] ...@@ -216,24 +143,21 @@ func (x *oEmail) SendTLS(ctx context.Context, tplCode string, params map[string]
if err != nil { if err != nil {
return err return err
} }
if len(rs) == 0 {
return ecode.ErrEmailTplReceiverNotFound
}
subjectTpl, err := template.New(fmt.Sprintf("%s_%s_subject", tplCode, et.GetID())).Parse(et.Subject) subjectTpl, err := template.New(fmt.Sprintf("%s_%s_subject", in.TplCode, et.GetID())).Parse(et.Subject)
if err != nil { if err != nil {
return xerror.Wrap(err, "parse subjectTpl") return xerror.Wrap(err, "parse subjectTpl")
} }
var subjectBuf bytes.Buffer var subjectBuf bytes.Buffer
if err = subjectTpl.Execute(&subjectBuf, params); err != nil { if err = subjectTpl.Execute(&subjectBuf, in.TplParams); err != nil {
return xerror.Wrap(err, "render subjectTpl") return xerror.Wrap(err, "render subjectTpl")
} }
contentTpl, err := template.New(fmt.Sprintf("%s_%s_content", tplCode, et.GetID())).Parse(et.Tpl) contentTpl, err := template.New(fmt.Sprintf("%s_%s_content", in.TplCode, et.GetID())).Parse(et.Tpl)
if err != nil { if err != nil {
return xerror.Wrap(err, "parse contentTpl") return xerror.Wrap(err, "parse contentTpl")
} }
var contentBuf bytes.Buffer var contentBuf bytes.Buffer
if err = contentTpl.Execute(&contentBuf, params); err != nil { if err = contentTpl.Execute(&contentBuf, in.TplParams); err != nil {
return xerror.Wrap(err, "render contentTpl") return xerror.Wrap(err, "render contentTpl")
} }
...@@ -258,6 +182,17 @@ func (x *oEmail) SendTLS(ctx context.Context, tplCode string, params map[string] ...@@ -258,6 +182,17 @@ func (x *oEmail) SendTLS(ctx context.Context, tplCode string, params map[string]
}) })
} }
for _, r := range in.Receivers {
receivers = append(receivers, &models.EmailReceiver{
EmailID: email.ID,
Receiver: r.ToEmailAddr(),
})
tplReceivers = append(tplReceivers, &models.EmailTplReceiver{
TplID: et.ID,
Receiver: r.ToEmailAddr(),
})
}
emailSend := models.EmailSend{} emailSend := models.EmailSend{}
emailSend.ID = xsfUtils.EmailSendID(ctx) emailSend.ID = xsfUtils.EmailSendID(ctx)
emailSend.EmailID = email.ID emailSend.EmailID = email.ID
...@@ -268,7 +203,7 @@ func (x *oEmail) SendTLS(ctx context.Context, tplCode string, params map[string] ...@@ -268,7 +203,7 @@ func (x *oEmail) SendTLS(ctx context.Context, tplCode string, params map[string]
emailSendLog.EmailSendID = emailSend.ID emailSendLog.EmailSendID = emailSend.ID
emailSendLog.State = emailSend.State emailSendLog.State = emailSend.State
e := NewEmail(email.From, tplReceivers, email.Subject, email.Content, attachments, inlineImages) e := NewEmail(email.From, tplReceivers, email.Subject, email.Content, in.Attachments, in.InlineImages)
if err := SendTLS(ctx, e); err != nil { if err := SendTLS(ctx, e); err != nil {
return err return err
......
...@@ -11,6 +11,7 @@ const ( ...@@ -11,6 +11,7 @@ const (
API_GET_BY_ID = "getByID" API_GET_BY_ID = "getByID"
API_GET_BY_IDS = "getByIDs" API_GET_BY_IDS = "getByIDs"
API_PAGE = "page" API_PAGE = "page"
API_JPAGE = "jpage"
API_EXPORT_CSV = "exportCSV" API_EXPORT_CSV = "exportCSV"
) )
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论