添加钉钉通知

This commit is contained in:
linxiaozhi
2019-02-15 11:50:09 +08:00
parent fbd64d38a2
commit 5a7904a831
15 changed files with 186 additions and 6 deletions

95
notify/dingtalk.go Normal file
View File

@@ -0,0 +1,95 @@
/************************************************************
** @Description: notify
** @Author: Bee
** @Date: 2018-02-15 11:02
** @Last Modified by: Bee
** @Last Modified time: 2018-02-15 11:02
*************************************************************/
package notify
import (
"github.com/astaxie/beego"
"github.com/george518/PPGo_Job/libs"
"log"
"time"
"fmt"
"encoding/json"
"bytes"
)
type Dingtalk struct {
Dingtalks []string
Content string
}
var DingtalkChan chan *Dingtalk
var DingtalkUrl string
func init() {
DingtalkUrl = beego.AppConfig.String("dingtalk.url")
poolSize, _ := beego.AppConfig.Int("dingtalk.pool")
//创建通道
DingtalkChan = make(chan *Dingtalk, poolSize)
go func() {
for {
select {
case m, ok := <-DingtalkChan:
if !ok {
return
}
if err := m.SendDingtalk(); err != nil {
beego.Error("SendDingtalk:", err.Error())
}
}
}
}()
}
func SendDingtalkToChan(dingtalks []string, content string) bool {
dingTalk := &Dingtalk{
Dingtalks: dingtalks,
Content: content,
}
select {
case DingtalkChan <- dingTalk:
return true
case <-time.After(time.Second * 3):
return false
}
}
type Msg struct {
MsgType string `json:"msgtype"`
Text *Text `json:"text"`
}
type Text struct {
Content string `json:"content"`
}
func (s *Dingtalk) SendDingtalk() error {
for _, v := range s.Dingtalks {
msg := Msg{MsgType: "text"}
text := new(Text)
text.Content = s.Content
msg.Text = text
msgJson, err := json.Marshal(msg)
if err != nil {
log.Println(err)
}
url := fmt.Sprintf(DingtalkUrl, v)
resErr := libs.HttpPost(url, "application/json;charset=utf-8", bytes.NewBuffer(msgJson))
if resErr != nil {
log.Println(err)
}
}
return nil
}