diff --git a/internal/biz/mixrepos/ding.go b/internal/biz/mixrepos/ding.go new file mode 100644 index 0000000..5908baa --- /dev/null +++ b/internal/biz/mixrepos/ding.go @@ -0,0 +1,7 @@ +package mixrepos + +import "context" + +type DingMixRepo interface { + SendMarkdownMessage(_ context.Context, text string) error +} diff --git a/internal/data/mixrepoimpl/ding.go b/internal/data/mixrepoimpl/ding.go index b78b1dd..ca7e134 100644 --- a/internal/data/mixrepoimpl/ding.go +++ b/internal/data/mixrepoimpl/ding.go @@ -2,6 +2,8 @@ package mixrepoimpl import ( "context" + "fmt" + "voucher/internal/biz/mixrepos" "voucher/internal/conf" "voucher/internal/pkg/ding" ) @@ -9,11 +11,25 @@ import ( type DingMixRepoImpl struct { bc *conf.Bootstrap - d *ding.TalkClient + client *ding.TalkClient } -func (s *DingMixRepoImpl) Send(ctx context.Context, title, text string) error { +func NewDingMixRepoImpl(bc *conf.Bootstrap) mixrepos.DingMixRepo { + client := ding.NewDingTalkClient(bc.Alarm.WebhookURL, bc.Alarm.Secret) + + return &DingMixRepoImpl{bc: bc, client: client} +} + +func (s *DingMixRepoImpl) SendMarkdownMessage(_ context.Context, text string) error { + + isAtAll := false + if len(s.bc.Alarm.AtMobiles) == 0 { + isAtAll = true + } + + if err := s.client.SendMarkdownMessage("xx", text, s.bc.Alarm.AtMobiles, isAtAll); err != nil { + return fmt.Errorf("Markdown 消息发送失败: %v", err) + } return nil - } diff --git a/internal/pkg/ding/ding.go b/internal/pkg/ding/ding.go index 5607a1c..966c673 100644 --- a/internal/pkg/ding/ding.go +++ b/internal/pkg/ding/ding.go @@ -119,7 +119,7 @@ func (c *TalkClient) SendLinkMessage(title, text, messageURL, picURL string, atM func (c *TalkClient) SendMarkdownMessage(title, text string, atMobiles []string, isAtAll bool) error { var atStr string for _, mobile := range atMobiles { - atStr += fmt.Sprintf(" @%s", mobile) + atStr += fmt.Sprintf("@%s", mobile) } text += atStr