micro-account/pkg/common/dingding/ding.go
2025-02-20 16:18:23 +08:00

90 lines
1.3 KiB
Go

package dingding
import (
"encoding/json"
"fmt"
"net/http"
"strings"
)
// DingClient
var (
//DingClient *DingConfig
)
type DingConfig struct {
AccessToken string
Url string
}
type DingMsg struct {
project string
AppMode string
Url string
Info string
Err error
}
type DingText struct {
Content string `json:"content"`
}
type DingMsgInfo struct {
Msgtype string `json:"msgtype"`
Text DingText `json:"text"`
}
var dingClient *DingConfig
func LoadAccessToken(accessToken string) {
dingClient = &DingConfig{
AccessToken: accessToken,
Url: "https://oapi.dingtalk.com/robot/send",
}
}
func (d *DingConfig) SendMsg(text string) {
url := d.Url + "?access_token=" + d.AccessToken
dingMsgInfo := DingMsgInfo{
Msgtype: "text",
Text: DingText{
Content: text,
},
}
dingMsgInfoByte, _ := json.Marshal(dingMsgInfo)
res, err := http.Post(
url,
"application/json",
strings.NewReader(string(dingMsgInfoByte)))
if err != nil {
fmt.Println("发送错误:", url, err, string(dingMsgInfoByte))
}
defer res.Body.Close()
return
}
func Send(info string) {
msg := DingMsg{
Info: info,
}
SendInfo(msg)
}
func SendInfo(msg DingMsg) {
text := "通知:\n" + msg.Info
if msg.Err != nil {
text = text + "错误:" + msg.Err.Error() + "/n"
}
dingClient.SendMsg(text)
return
}